vtenext/modules/Myfiles/Myfiles.php
2021-04-28 20:10:26 +02:00

696 lines
25 KiB
PHP

<?php
/*************************************
* SPDX-FileCopyrightText: 2009-2020 Vtenext S.r.l. <info@vtenext.com>
* SPDX-License-Identifier: AGPL-3.0-only
************************************/
/* crmv@95157 */
require_once('modules/Documents/storage/StorageBackendUtils.php');
class Myfiles extends CRMEntity {
var $db, $log; // Used in class functions of CRMEntity
var $table_name;
var $table_index= 'myfilesid';
var $column_fields = Array();
/** Indicator if this is a custom module or standard module */
var $IsCustomModule = true;
/**
* Mandatory table for supporting custom fields.
*/
var $customFieldTable = Array();
/**
* Mandatory for Saving, Include tables related to this module.
*/
var $tab_name = Array();
/**
* Mandatory for Saving, Include tablename and tablekey columnname here.
*/
var $tab_name_index = Array();
/**
* Mandatory for Listing (Related listview)
*/
var $list_fields = Array ();
var $list_fields_name = Array(
/* Format: Field Label => fieldname */
'Myfiles No'=> 'myfiles_no',
'Assigned To' => 'assigned_user_id'
);
// Make the field link to detail view from list view (Fieldname)
var $list_link_field = 'myfiles_no';
// For Popup listview and UI type support
var $search_fields = Array();
var $search_fields_name = Array(
/* Format: Field Label => fieldname */
'Myfiles No'=> 'myfiles_no'
);
// For Popup window record selection
var $popup_fields = Array('myfiles_no');
// Placeholder for sort fields - All the fields will be initialized for Sorting through initSortFields
var $sortby_fields = Array();
// For Alphabetical search
var $def_basicsearch_col = 'myfiles_no';
// Column value to use on detail view record text display
var $def_detailview_recname = 'myfiles_no';
// Required Information for enabling Import feature
var $required_fields = Array('myfiles_no'=>1);
var $default_order_by = 'myfiles_no';
var $default_sort_order='ASC';
// Used when enabling/disabling the mandatory fields for the module.
// Refers to vte_field.fieldname values.
var $mandatory_fields = Array('createdtime', 'modifiedtime', 'myfiles_no');
//crmv@10759
var $search_base_field = 'myfiles_no';
//crmv@10759 e
function __construct() {
global $log, $table_prefix;
parent::__construct(); // crmv@37004
$this->table_name = $table_prefix.'_myfiles';
$this->customFieldTable = Array($table_prefix.'_myfilescf', 'myfilesid');
$this->entity_table = $table_prefix."_crmentity";
$this->tab_name = Array($table_prefix.'_crmentity', $table_prefix.'_myfiles', $table_prefix.'_myfilescf');
$this->tab_name_index = Array(
$table_prefix.'_crmentity' => 'crmid',
$table_prefix.'_myfiles' => 'myfilesid',
$table_prefix.'_myfilescf' => 'myfilesid'
);
$this->list_fields = Array(
/* Format: Field Label => Array(tablename, columnname) */
// tablename should not have prefix 'vte_'
'Myfiles No'=> Array($table_prefix.'_myfiles', 'myfiles_no'),
'Assigned To' => Array($table_prefix.'_crmentity','smownerid')
);
$this->search_fields = Array(
/* Format: Field Label => Array(tablename, columnname) */
// tablename should not have prefix 'vte_'
'Myfiles No'=> Array($table_prefix.'_myfiles', 'myfiles_no')
);
$this->column_fields = getColumnFields(get_class()); //crmv@146187
$this->db = PearDatabase::getInstance();
$this->log = $log;
}
function save_module($module) {
global $log,$upload_badext, $current_user;
global $adb,$table_prefix;
$SBU = StorageBackendUtils::getInstance();
$filetype_fieldname = $this->getFileTypeFieldName();
$filename_fieldname = $this->getFile_FieldName();
$backend_fieldname = $this->getBackendFieldName();
$filetype = $this->column_fields[$filetype_fieldname] ?: $SBU->defaultBackend;
$filelocationtype = $filetype;
$backend = null;
$uploadMetadata = false;
// check if internal or external
if ($filetype == 'I' || $filetype == 'B'){
if ($filetype == 'B') {
$backend = $this->column_fields[$backend_fieldname];
}
// uploading a file
if($_FILES[$filename_fieldname]['name'] != ''){
$uploadMetadata = true;
$errCode=$_FILES[$filename_fieldname]['error'];
if($errCode == 0) {
foreach($_FILES as $fileindex => $files) {
if($files['name'] != '' && $files['size'] > 0){
$filename = $_FILES[$filename_fieldname]['name'];
$filename = from_html(preg_replace('/\s+/', '_', $filename));
$filetype = $_FILES[$filename_fieldname]['type'];
$filesize = $_FILES[$filename_fieldname]['size'];
$binFile = sanitizeUploadFileName($filename, $upload_badext);
$filename = ltrim(basename(" ".$binFile)); //allowed filename like UTF-8 characters
}
}
}
// not uploading, but in edit, don't change anything
}elseif($this->mode == 'edit') {
// do nothing
// not uploading, create -> clear fields
}elseif($this->column_fields[$filename_fieldname]) {
$uploadMetadata = true;
$filename = $this->column_fields[$filename_fieldname];
$filesize = $this->column_fields['filesize'];
$filetype = $this->column_fields['filetype'];
$filedownloadcount = 0;
}
// external, clear fields
} elseif($filetype == 'E' ){
$uploadMetadata = true;
$filename = $this->column_fields[$filename_fieldname];
// If filename does not has the protocol prefix, default it to http://
// Protocol prefix could be like (https://, smb://, file://, \\, smb:\\,...)
if(!empty($filename) && !preg_match('/^\w{1,5}:\/\/|^\w{0,3}:?\\\\\\\\/', trim($filename), $match)) {
$filename = "http://$filename";
}
$filetype = '';
$filesize = 0;
$filedownloadcount = null;
}
if ($uploadMetadata) {
$query = "UPDATE ".$table_prefix."_myfiles SET filename = ? ,filesize = ?, filetype = ? , filelocationtype = ? , filedownloadcount = ? WHERE myfilesid = ?";
$re=$adb->pquery($query,array($filename,intval($filesize),$filetype,$filelocationtype,$filedownloadcount,intval($this->id))); // crmv@85055
}
//Inserting into attachments table
if($filelocationtype == 'I') {
// deprecated code!
$this->insertIntoAttachment($this->id,'Myfiles');
} elseif($filelocationtype == 'B') {
$opts = array();
if ($backend == 'file') {
$opts['storage_path'] = 'storage/home/'.$current_user->id.'/';
}
$SBU->uploadFile($backend, 'Myfiles', $this, $opts);
}else{
$query = "delete from ".$table_prefix."_seattachmentsrel where crmid = ?";
$qparams = array($this->id);
$adb->pquery($query, $qparams);
}
}
// crmv@95157 - moved code to crmentity
/**
* Return query to use based on given modulename, fieldname
* Useful to handle specific case handling for Popup
*/
function getQueryByModuleField($module, $fieldname, $srcrecord) {
// $srcrecord could be empty
}
/**
* Invoked when special actions are performed on the module.
* @param String Module name
* @param String Event Type (module.postinstall, module.disabled, module.enabled, module.preuninstall)
*/
function vtlib_handler($modulename, $event_type) {
global $adb,$table_prefix;
if($event_type == 'module.postinstall') {
$moduleInstance = Vtecrm_Module::getInstance($modulename);
$adb->pquery("UPDATE {$table_prefix}_def_org_share SET editstatus = ? WHERE tabid = ?",array(2,$moduleInstance->id));
$adb->pquery('UPDATE '.$table_prefix.'_tab SET customized=0 WHERE name=?', array($modulename));
// crmv@164120 - removed code
SDK::setHomeGlobalIframe(2,'index.php?module=Myfiles&action=MyfilesAjax&file=HomeBlock','My files',true);
SDK::setLanguageEntries('Home','Myfiles',Array(
'it_it'=>'File personali',
'en_us'=>'My files',
'br_br'=>'Meus arquivos',
'de_de'=>'Meine Dateien',
'nl_nl'=>'Mijn bestanden',
));
$this->setModuleSeqNumber('configure', 'Myfiles', 'FILE-', 1);
} else if($event_type == 'module.disabled') {
// TODO Handle actions when this module is disabled.
} else if($event_type == 'module.enabled') {
// TODO Handle actions when this module is enabled.
} else if($event_type == 'module.preuninstall') {
SDK::unsetHomeGlobalIframe('My files');
SDK::deleteLanguageEntry('Home',NULL,'Myfiles');
// TODO Handle actions when this module is about to be deleted.
} else if($event_type == 'module.preupdate') {
// TODO Handle actions before this module is updated.
} else if($event_type == 'module.postupdate') {
// TODO Handle actions after this module is updated.
}
}
/**
* Handle saving related module information.
* NOTE: This function has been added to CRMEntity (base class).
* You can override the behavior by re-defining it here.
*/
/*
function save_related_module($module, $crmid, $with_module, $with_crmid) {
parent::save_related_module($module, $crmid, $with_module, $with_crmid);
//...
}
*/
/**
* Handle deleting related module information.
* NOTE: This function has been added to CRMEntity (base class).
* You can override the behavior by re-defining it here.
*/
//function delete_related_module($module, $crmid, $with_module, $with_crmid) { }
/**
* Handle getting related list information.
* NOTE: This function has been added to CRMEntity (base class).
* You can override the behavior by re-defining it here.
*/
//function get_related_list($id, $cur_tab_id, $rel_tab_id, $actions=false) { }
/**
* Handle getting dependents list information.
* NOTE: This function has been added to CRMEntity (base class).
* You can override the behavior by re-defining it here.
*/
//function get_dependents_list($id, $cur_tab_id, $rel_tab_id, $actions=false) { }
/**
* Function used to get the sort order for Myfiles listview
* @return String $sorder - sort order for a given folder.
*/
function getSortOrderForFolder($folderId) {
if(isset($_REQUEST['sorder']) && $_REQUEST['folderid'] == $folderId) {
$sorder = $this->db->sql_escape_string($_REQUEST['sorder']);
} elseif(is_array(VteSession::get('MYFILES_FOLDER_SORT_ORDER')) &&
!VteSession::isEmptyArray(array('MYFILES_FOLDER_SORT_ORDER', $folderId))) {
$sorder = VteSession::getArray(array('MYFILES_FOLDER_SORT_ORDER', $folderId));
} else {
$sorder = $this->default_sort_order;
}
return $sorder;
}
/**
* Function used to get the order by value for Myfiles listview
* @return String order by column for a given folder.
*/
function getOrderByForFolder($folderId) {
$use_default_order_by = '';
if(PerformancePrefs::getBoolean('LISTVIEW_DEFAULT_SORTING', true)) {
$use_default_order_by = $this->default_order_by;
}
if (isset($_REQUEST['order_by']) && $_REQUEST['folderid'] == $folderId) {
$order_by = $this->db->sql_escape_string($_REQUEST['order_by']);
} elseif(is_array(VteSession::get('MYFILES_FOLDER_ORDER_BY')) &&
!VteSession::isEmptyArray(array('MYFILES_FOLDER_ORDER_BY', $folderId))) {
$order_by = VteSession::getArray(array('MYFILES_FOLDER_ORDER_BY', $folderId));
} else {
$order_by = ($use_default_order_by);
}
return $order_by;
}
//crmv@16312 end
/** Function to export the Myfiles in CSV Format
* @param reference variable - where condition is passed when the query is executed
* Returns Export Myfiles Query.
*/
function create_export_query($where,$oCustomView,$viewId) //crmv@31775
{
global $log,$current_user;
global $table_prefix;
$log->debug("Entering create_export_query(". $where.") method ...");
//To get the Permitted fields query and the permitted fields list
$sql = getPermittedFieldsQuery("Myfiles", "detail_view");
$fields_list = getFieldsListFromQuery($sql);
// crmv@30967
$query = "SELECT $fields_list, case when (".$table_prefix."_users.user_name is not null) then ".$table_prefix."_users.user_name else ".$table_prefix."_groups.groupname end as user_name" .
" FROM ".$table_prefix."_myfiles
inner join ".$table_prefix."_myfilescf
on ".$table_prefix."_myfilescf.myfilesid = ".$table_prefix."_myfiles.myfilesid
inner join ".$table_prefix."_crmentity
on ".$table_prefix."_crmentity.crmid=".$table_prefix."_myfiles.myfilesid
LEFT JOIN ".$table_prefix."_crmentityfolder on ".$table_prefix."_myfiles.folderid=".$table_prefix."_crmentityfolder.folderid
LEFT JOIN ".$table_prefix."_users ON ".$table_prefix."_crmentity.smownerid=".$table_prefix."_users.id " .
" LEFT JOIN ".$table_prefix."_groups ON ".$table_prefix."_crmentity.smownerid=".$table_prefix."_groups.groupid ";
// crmv@30967e
//crmv@31775
$reportFilter = $oCustomView->getReportFilter($viewId);
if ($reportFilter) {
$tableNameTmp = $oCustomView->getReportFilterTableName($reportFilter,$current_user->id);
$query .= " INNER JOIN $tableNameTmp ON $tableNameTmp.id = {$table_prefix}_crmentity.crmid";
}
//crmv@31775e
$query .= getNonAdminAccessControlQuery('Myfiles',$current_user);
$where_auto=" ".$table_prefix."_crmentity.deleted=0";
if($where != "")
$query .= " WHERE ($where) AND ".$where_auto;
else
$query .= " WHERE ".$where_auto;
$query = $this->listQueryNonAdminChange($query, 'Myfiles');
$log->debug("Exiting create_export_query method ...");
return $query;
}
/*
* Function to get the primary query part of a report
* @param - $module Primary module name
* returns the query string formed on fetching the related data for report for primary module
*/
function generateReportsQuery($module, $reportid = 0, $joinProducts = false, $joinUitype10 = true) { // crmv@146653
global $table_prefix;
$moduletable = $this->table_name;
$moduleindex = $this->tab_name_index[$moduletable];
// crmv@30967
$query = "from $moduletable
inner join ".$table_prefix."_crmentity on ".$table_prefix."_crmentity.crmid=$moduletable.$moduleindex
inner join ".$table_prefix."_crmentityfolder on ".$table_prefix."_crmentityfolder.folderid=$moduletable.folderid
left join ".$table_prefix."_groups ".$table_prefix."_groups".$module." on ".$table_prefix."_groups".$module.".groupid = ".$table_prefix."_crmentity.smownerid
left join ".$table_prefix."_users ".$table_prefix."_users".$module." on ".$table_prefix."_users".$module.".id = ".$table_prefix."_crmentity.smownerid
left join ".$table_prefix."_groups on ".$table_prefix."_groups.groupid = ".$table_prefix."_crmentity.smownerid
left join ".$table_prefix."_users on ".$table_prefix."_users.id = ".$table_prefix."_crmentity.smownerid";
// crmv@30967e
return $query;
}
/*
* Function to get the secondary query part of a report
* @param - $module primary module name
* @param - $secmodule secondary module name
* returns the query string formed on fetching the related data for report for secondary module
*/
//crmv@38798
function generateReportsSecQuery($module,$secmodule,$reporttype='',$useProductJoin=true,$joinUitype10=true){ // crmv@146653
global $table_prefix;
$query = $this->getRelationQuery($module,$secmodule,$table_prefix."_myfiles","myfilesid");
// crmv@30967
$query .=" left join ".$table_prefix."_crmentityfolder on ".$table_prefix."_crmentityfolder.folderid=".$table_prefix."_myfiles.folderid
left join ".$table_prefix."_groups ".$table_prefix."_groupsMyfiles on ".$table_prefix."_groupsMyfiles.groupid = ".$table_prefix."_crmentityMyfiles.smownerid
left join ".$table_prefix."_users ".$table_prefix."_usersMyfiles on ".$table_prefix."_usersMyfiles.id = ".$table_prefix."_crmentityMyfiles.smownerid";
// crmv@30967e
return $query;
}
//crmv@38798e
/*
* Function to get the relation tables for related modules
* @param - $secmodule secondary module name
* returns the array with table names and fieldnames storing relations between module and this module
*/
function setRelationTables($secmodule){
$rel_tables = array();
return $rel_tables[$secmodule];
}
// Function to get fieldname for uitype 27 assuming that documents have only one file type field
function getFileTypeFieldName(){
global $adb,$log;
global $table_prefix;
$query = 'SELECT fieldname from '.$table_prefix.'_field where tabid = ? and uitype = ?';
$tabid = getTabid('Myfiles');
$filetype_uitype = 27;
$res = $adb->pquery($query,array($tabid,$filetype_uitype));
$fieldname = null;
if(isset($res)){
$rowCount = $adb->num_rows($res);
if($rowCount > 0){
$fieldname = $adb->query_result($res,0,'fieldname');
}
}
return $fieldname;
}
function getBackendFieldName(){
global $adb, $table_prefix;
$query = 'SELECT fieldname from '.$table_prefix.'_field where tabid = ? and uitype = ?';
$tabid = getTabid('Myfiles');
$res = $adb->pquery($query,array($tabid,212));
$fieldname = null;
if($res && $adb->num_rows($res) > 0) {
$fieldname = $adb->query_result_no_html($res,0,'fieldname');
}
return $fieldname;
}
// Function to get fieldname for uitype 28 assuming that doc has only one file upload type
function getFile_FieldName(){
global $adb,$log;
global $table_prefix;
$query = 'SELECT fieldname from '.$table_prefix.'_field where tabid = ? and uitype = ?';
$tabid = getTabid('Myfiles');
$filename_uitype = 28;
$res = $adb->pquery($query,array($tabid,$filename_uitype));
$fieldname = null;
if(isset($res)){
$rowCount = $adb->num_rows($res);
if($rowCount > 0){
$fieldname = $adb->query_result($res,0,'fieldname');
}
}
return $fieldname;
}
/**
* Check the existence of folder by folderid
*/
// crmv@30967
function isFolderPresent($folderid) {
$result = $this->getEntityFolder($folderid);
if(!empty($result) && $result['folderid'] == $folderid) return true;
return false;
}
// you can override this method!
function getFolderList($foldername=null) {
return $this->getEntityFoldersByName($foldername, 'Myfiles');
}
function getEntityFolder($folderid) {
global $adb, $table_prefix;
$res = $adb->pquery("select * from {$table_prefix}_crmentityfolder where folderid = ?", array($folderid));
if ($res !== false) {
return $adb->fetchByAssoc($res);
} else {
return false;
}
}
function getEntityFoldersByName($foldername = null, $module = null) {
global $adb, $table_prefix,$current_user;
$params = array();
$conds = array();
$sql = "select * from {$table_prefix}_crmentityfolder";
if (!is_null($foldername) || !is_null($module)) {
$sql .= ' where ';
}
if (!is_null($foldername)) {
if (is_numeric($foldername)){
$conds[] = ' folderid = ? ';
}
else{
$conds[] = ' foldername = ? ';
}
$params[] = $foldername;
}
if (!is_null($module)) {
$conds[] = ' tabid = ? ';
$params[] = getTabId($module);
}
if (isset($current_user)) {
$conds[] = ' createdby = ? ';
$params[] = $current_user->id;
}
$sql .= implode(' and ', $conds);
$sql .= ' order by foldername';
$res = $adb->pquery($sql, $params);
if ($res !== false) {
$ret = array();
while ($row = $adb->fetchByAssoc($res)) $ret[] = $row;
return $ret;
} else {
return false;
}
}
// return only the count
function getFolderContent($folderid) {
global $adb, $table_prefix, $current_user, $app_strings, $mod_strings;
$folderinfo = $this->getEntityFolder($folderid);
$queryGenerator = QueryGenerator::getInstance('Myfiles', $current_user);
$queryGenerator->initForDefaultCustomView();
$list_query = $queryGenerator->getQuery();
// only in selected folder
$list_query .= " AND {$this->table_name}.folderid = '$folderid'";
// order by most recent first
$list_query .= " ORDER BY {$table_prefix}_crmentity.modifiedtime DESC";
$count = 0;
$res = $adb->query(replaceSelectQuery($list_query,'count(*) as cnt'));
if ($res) $count = $adb->query_result($res,0,'cnt');
$smarty = new VteSmarty();
$smarty->assign('FOLDERINFO', $folderinfo);
$smarty->assign('APP', $app_strings);
$smarty->assign('MOD', $mod_strings);
$smarty->assign('TOTALCOUNT', $count);
/*
// retrieve the first documents as a preview
$html = '';
$res = $adb->limitQuery($list_query, 0, 5); // crmv@30976
if ($res) {
$arr = array();
while ($row = $adb->fetchByAssoc($res)) {
$arr[] = $row;
}
$smarty->assign('FOLDERDATA', $arr);
}
$html = $smarty->fetch('modules/Myfiles/FolderTooltip.tpl');
*/
return array('count'=>$count, 'html'=>$html);
}
function getFolderCount($folderid) {
global $adb, $table_prefix, $current_user, $app_strings, $mod_strings;
$queryGenerator = QueryGenerator::getInstance('Myfiles', $current_user);
$queryGenerator->initForDefaultCustomView();
$list_query = $queryGenerator->getQuery();
// only in selected folder
$list_query .= " AND {$this->table_name}.folderid = '$folderid'";
$count = 0;
$res = $adb->query(replaceSelectQuery($list_query,'count(*) as cnt'));
if ($res) $count = $adb->query_result($res,0,'cnt');
return $count;
}
function getMiniDetailView($myfilesid){
global $adb,$table_prefix;
$sql = "select ";
}
// return only the count
function getFolderFullContent($folderid) {
global $adb, $table_prefix, $current_user, $app_strings, $mod_strings,$theme,$listview_max_textlength;
$folderid = intval($folderid);//crmv@208173
$folderinfo = $this->getEntityFolder($folderid);
$queryGenerator = QueryGenerator::getInstance('Myfiles', $current_user);
$queryGenerator->initForDefaultCustomView();
$list_query = $queryGenerator->getQuery();
// only in selected folder
$list_query .= " AND {$this->table_name}.folderid = '$folderid'";
// order by most recent first
$list_query .= " ORDER BY {$table_prefix}_crmentity.modifiedtime DESC";
$count = 0;
$tablename = $table_prefix.'_seattachmentsrel';
$tabindex = 'crmid';
$join_check = " left join {$tablename} on {$tablename}.{$tabindex} = {$table_prefix}_crmentity.crmid ";
$list_query = preg_replace('/\swhere\s/i', " $join_check where ", $list_query, 1);
$tablename = $table_prefix.'_attachments';
$tabindex = 'attachmentsid';
$join_check = " left join {$tablename} on {$tablename}.{$tabindex} = {$table_prefix}_seattachmentsrel.attachmentsid ";
$list_query = preg_replace('/\swhere\s/i', " $join_check where ", $list_query, 1);
$join_check = "select {$table_prefix}_attachments.attachmentsid,";
$list_query = preg_replace("/[\n\r\t]+/"," ",$list_query);
$fields_select = Array(
"{$table_prefix}_myfiles.myfilesid",
"{$table_prefix}_myfiles.title",
"{$table_prefix}_attachments.attachmentsid",
"{$table_prefix}_myfiles.filename",
"{$table_prefix}_myfiles.filetype",
"{$table_prefix}_myfiles.filesize",
"{$table_prefix}_crmentity.createdtime",
"{$table_prefix}_myfiles.title",
"{$table_prefix}_crmentity.modifiedtime",
);
$list_query = replaceSelectQuery($list_query,implode(",",$fields_select));
$res = $adb->query(replaceSelectQuery($list_query,'count(*) as cnt'));
if ($res) $count = $adb->query_result($res,0,'cnt');
$smarty = new VteSmarty();
$smarty->assign('FOLDERINFO', $folderinfo);
$smarty->assign('APP', $app_strings);
$smarty->assign('MOD', $mod_strings);
$smarty->assign('TOTALCOUNT', $count);
// retrieve the first documents as a preview
$html = '';
$res = $adb->query($list_query);
if ($res) {
$listview_max_textlength_backup = $listview_max_textlength;
$listview_max_textlength = 20;
$arr = array();
while ($row = $adb->fetchByAssoc($res)) {
$smarty->assign('FILEDATA', $row);
$row['link'] = "<a href='index.php?module=uploads&action=downloadfile&entityid={$row['myfilesid']}&fileid={$row['attachmentsid']}' title='".getTranslatedString("LBL_DOWNLOAD_FILE",'Documents')."' onclick='javascript:dldCntIncrease({$row['attachmentsid']},\"Myfiles\");' title='".$row['filename']."'>".textlength_check($row['filename'])."</a>";
$row['fastmenu'] = Array(
'delete'=>'<a class="delete_link" fileid="'.$row['myfilesid'].'" title="'.getTranslatedString('LBL_DELETE').'"><i class="vteicon valign-bottom">delete</i></a>',
'download'=>'<a href="index.php?module=uploads&action=downloadfile&entityid='.$row['myfilesid'].'&fileid='.$row['attachmentsid'].'" title="'.getTranslatedString("LBL_DOWNLOAD_FILE",'Documents').'" onclick="javascript:dldCntIncrease('.$row['attachmentsid'].',\'Myfiles\');"><i class="vteicon valign-bottom">file_download</i></a>',
'view'=>'<a class="show_link" folderid="'.$folderid.'" fileid="'.$row['myfilesid'].'" file_name="'.$row['filename'].'" title="'.getTranslatedString('LBL_SHOW_DETAILS','Myfiles').'"><i class="vteicon valign-bottom">remove_red_eye</i></a>',
'convert'=>'<a class="convert_link" folderid="'.$folderid.'" fileid="'.$row['myfilesid'].'" file_name="'.$row['filename'].'" file_title="'.$row['title'].'" title="'.getTranslatedString('LBL_CONVERT','Myfiles').'"><i class="vteicon valign-bottom">open_in_new</i></a>',
);
$row['detailview'] = $smarty->fetch('modules/Myfiles/FileDetails.tpl');
$row['id']=$row['myfilesid'];
$arr[] = $row;
}
$listview_max_textlength = $listview_max_textlength_backup;
}
return array('count'=>$count, 'files'=>$arr);
}
function getQueryExtraWhere() {
global $table_prefix,$current_user;
$fldid = intval($_REQUEST['folderid']);
$filter = '';
if ($fldid > 0) {
$filter = " and {$this->table_name}.folderid = '$fldid'";
}
$filter .= " and {$this->entity_table}.smownerid = $current_user->id";
return $filter;
}
// crmv@30967e
/**
* Customizing the restore procedure.
*/
function restore($modulename, $id) {
parent::restore($modulename, $id);
global $adb;
global $table_prefix;
$fresult = $adb->pquery("SELECT folderid FROM ".$table_prefix."_myfiles WHERE myfilesid = ?", array($id));
if(!empty($fresult) && $adb->num_rows($fresult)) {
$folderid = $adb->query_result($fresult, 0, 'folderid');
if(!$this->isFolderPresent($folderid)) {
// Re-link to default folder
$adb->pquery("UPDATE ".$table_prefix."_myfiles set folderid = 1 WHERE myfilesid = ?", array($id));
}
}
}
}