label = _kt("Title"); } // what is used for sorting // query addition is: // [0] => join claus // [1] => join params // [2] => ORDER function addToFolderQuery() { return array(null, null, "F.name", ); } function addToDocumentQuery() { return array(null, null, "DM.name" ); } function renderFolderLink($aDataRow) { $outStr = ''; $outStr .= htmlentities($aDataRow["folder"]->getName(), ENT_NOQUOTES, 'UTF-8'); $outStr .= ' '; return $outStr; } function renderDocumentLink($aDataRow) { $outStr = 'getFilename().'">'; $outStr .= htmlentities($aDataRow["document"]->getName(), ENT_NOQUOTES, 'UTF-8'); $outStr .= ''; return $outStr; } function buildDocumentLink($aDataRow) { return KTBrowseUtil::getUrlForDocument($aDataRow["document"]->getId()); } function buildFolderLink($aDataRow) { if (is_null(KTUtil::arrayGet($this->aOptions, 'direct_folder'))) { $dest = KTUtil::arrayGet($this->aOptions, 'folder_link'); if (empty($dest)) { return KTUtil::addQueryStringSelf('fFolderId='.$aDataRow["folder"]->getId()); } else { return KTUtil::addQueryString($dest, 'fFolderId='.$aDataRow["folder"]->getId()); } } else { return KTBrowseUtil::getUrlForFolder($aDataRow['folder']); } } // use inline, since its just too heavy to even _think_ about using smarty. function renderData($aDataRow) { if ($aDataRow["type"] == "folder") { $contenttype = 'folder'; $link = $this->renderFolderLink($aDataRow); return sprintf('%s', $contenttype, $link); } else { $contenttype = $this->_mimeHelper($aDataRow["document"]->getMimeTypeId()); $link = $this->renderDocumentLink($aDataRow); $size = $this->prettySize($aDataRow["document"]->getSize()); return sprintf('%s (%s)', $contenttype, $link, $size); } } function prettySize($size) { $finalSize = $size; $label = 'b'; if ($finalSize > 1000) { $label='Kb'; $finalSize = floor($finalSize/1000); } if ($finalSize > 1000) { $label='Mb'; $finalSize = floor($finalSize/1000); } return $finalSize . $label; } function _mimeHelper($iMimeTypeId) { require_once(KT_LIB_DIR . '/mime.inc.php'); return KTMime::getIconPath($iMimeTypeId); } } /* * Column to handle dates */ class AdvancedDateColumn extends AdvancedColumn { var $name = 'datecolumn'; var $document_field_function; var $folder_field_function; var $sortable = true; var $document_sort_column; var $folder_sort_column; var $namespace = 'ktcore.columns.genericdate'; function AdvancedDateColumn() { $this->label = _kt('Generic Date Function'); } // use inline, since its just too heavy to even _think_ about using smarty. function renderData($aDataRow) { $outStr = ''; if (($aDataRow["type"] == "folder") && (!is_null($this->folder_field_function))) { $res = call_user_func(array($aDataRow["folder"], $this->folder_field_function)); $dColumnDate = strtotime($res); // now reformat this into something "pretty" return date("Y-m-d H:i", $dColumnDate); } else if (($aDataRow["type"] == "document") && (!is_null($this->document_field_function))) { $res = call_user_func(array($aDataRow["document"], $this->document_field_function)); $dColumnDate = strtotime($res); // now reformat this into something "pretty" return date("Y-m-d H:i", $dColumnDate); } else { return '—'; } return $outStr; } function addToFolderQuery() { return array(null, null, null); } function addToDocumentQuery() { return array(null, null, $this->name); } } class CreationDateColumn extends AdvancedDateColumn { var $document_field_function = 'getCreatedDateTime'; var $folder_field_function = null; var $document_sort_column = "D.created"; var $folder_sort_column = null; var $namespace = 'ktcore.columns.creationdate'; function CreationDateColumn() { $this->label = _kt('Created'); } } class ModificationDateColumn extends AdvancedDateColumn { var $document_field_function = 'getLastModifiedDate'; var $folder_field_function = null; var $document_sort_column = "D.modified"; var $folder_sort_column = null; var $namespace = 'ktcore.columns.modificationdate'; function ModificationDateColumn() { $this->label = _kt('Modified'); } } class AdvancedUserColumn extends AdvancedColumn { var $document_field_function; var $folder_field_function; var $sortable = false; // by default var $document_sort_column; var $folder_sort_column; var $namespace = 'ktcore.columns.genericuser'; function AdvancedUserColumn() { $this->label = null; // abstract. } // use inline, since its just too heavy to even _think_ about using smarty. function renderData($aDataRow) { $iUserId = null; if (($aDataRow["type"] == "folder") && (!is_null($this->folder_field_function))) { if (method_exists($aDataRow['folder'], $this->folder_field_function)) { $iUserId = call_user_func(array($aDataRow['folder'], $this->folder_field_function)); } } else if (($aDataRow["type"] == "document") && (!is_null($this->document_field_function))) { if (method_exists($aDataRow['document'], $this->document_field_function)) { $iUserId = call_user_func(array($aDataRow['document'], $this->document_field_function)); } } if (is_null($iUserId)) { return '—'; } $oUser = User::get($iUserId); if (PEAR::isError($oUser) || $oUser == false) { return '—'; } else { return htmlentities($oUser->getName(), ENT_NOQUOTES, 'UTF-8'); } } function addToFolderQuery() { return array(null, null, null); } function addToDocumentQuery() { return array(null, null, null); } } class CreatorColumn extends AdvancedUserColumn { var $document_field_function = "getCreatorID"; var $folder_field_function = null; var $sortable = true; // by default var $namespace = 'ktcore.columns.creator'; function CreatorColumn() { $this->label = _kt("Creator"); // abstract. } function addToFolderQuery() { return array(null, null, null); } function addToDocumentQuery() { $sUsersTable = KTUtil::getTableName('users'); $sJoinSQL = "LEFT JOIN $sUsersTable AS users_order_join ON (D.creator_id = users_order_join.id)"; return array($sJoinSQL, null, "users_order_join.name"); } } class AdvancedSelectionColumn extends AdvancedColumn { var $rangename = null; var $show_folders = true; var $show_documents = true; var $namespace = "ktcore.columns.selection"; function AdvancedSelectionColumn() { $this->label = ''; } function setOptions($aOptions) { AdvancedColumn::setOptions($aOptions); $this->rangename = KTUtil::arrayGet($this->aOptions, 'rangename', $this->rangename); $this->show_folders = KTUtil::arrayGet($this->aOptions, 'show_folders', $this->show_folders, false); $this->show_documents = KTUtil::arrayGet($this->aOptions, 'show_documents', $this->show_documents, false); } function renderHeader($sReturnURL) { global $main; $main->requireJSResource("resources/js/toggleselect.js"); return sprintf('', $this->rangename); } // only include the _f or _d IF WE HAVE THE OTHER TYPE. function renderData($aDataRow) { $localname = $this->rangename; if (($aDataRow["type"] === "folder") && ($this->show_folders)) { if ($this->show_documents) { $localname .= "_f[]"; } $v = $aDataRow["folderid"]; } else if (($aDataRow["type"] === "document") && $this->show_documents) { if ($this->show_folders) { $localname .= "_d[]"; } $v = $aDataRow["docid"]; } else { return ' '; } return sprintf('', $localname, $v); } // no label, but we do have a title function getName() { return _kt("Multiple Selection"); } } class AdvancedSingleSelectionColumn extends AdvancedSelectionColumn { var $namespace = 'ktcore.columns.singleselection'; function AdvancedSingleSelectionColumn() { parent::AdvancedSelectionColumn(); $this->label = null; } function renderHeader() { return ' '; } // only include the _f or _d IF WE HAVE THE OTHER TYPE. function renderData($aDataRow) { $localname = $this->rangename; if (($aDataRow["type"] === "folder") && ($this->show_folders)) { if ($this->show_documents) { $localname .= "_f"; } $v = $aDataRow["folderid"]; } else if (($aDataRow["type"] === "document") && $this->show_documents) { if ($this->show_folders) { $localname .= "_d"; } $v = $aDataRow["docid"]; } else { return ' '; } return ''; } // no label, but we do have a title function getName() { return _kt("Single Selection"); } } class AdvancedWorkflowColumn extends AdvancedColumn { var $namespace = 'ktcore.columns.workflow_state'; var $sortable = false; function AdvancedWorkflowColumn() { $this->label = _kt("Workflow State"); $this->sortable = false; } // use inline, since its just too heavy to even _think_ about using smarty. function renderData($aDataRow) { // only _ever_ show this for documents. if ($aDataRow["type"] === "folder") { return ' '; } $oWorkflow = KTWorkflowUtil::getWorkflowForDocument($aDataRow['document']); $oState = KTWorkflowUtil::getWorkflowStateForDocument($aDataRow['document']); if (($oState == null) || ($oWorkflow == null)) { return '—'; } else { return sprintf('%s %s', htmlentities($oState->getName(), ENT_NOQUOTES, 'UTF-8'), htmlentities($oWorkflow->getName(), ENT_NOQUOTES, 'UTF-8') ); } } } class AdvancedDownloadColumn extends AdvancedColumn { var $namespace = 'ktcore.columns.download'; function AdvancedDownloadColumn() { $this->label = null; } function renderData($aDataRow) { // only _ever_ show this for documents. if ($aDataRow["type"] === "folder") { return ' '; } $link = KTUtil::ktLink('action.php','ktcore.actions.document.view', 'fDocumentId=' . $aDataRow['document']->getId()); return sprintf('%s', $link, _kt('Download Document'), _kt('Download Document')); } function getName() { return _kt('Download'); } } class DocumentIDColumn extends AdvancedColumn { var $bSortable = false; var $namespace = 'ktcore.columns.docid'; function DocumentIDColumn() { $this->label = _kt("Document ID"); } function renderData($aDataRow) { // only _ever_ show this for documents. if ($aDataRow["type"] === "folder") { return ' '; } return htmlentities($aDataRow['document']->getId(), ENT_NOQUOTES, 'UTF-8'); } } class ContainingFolderColumn extends AdvancedColumn { var $namespace = 'ktcore.columns.containing_folder'; function ContainingFolderColumn() { $this->label = _kt("View Folder"); } function renderData($aDataRow) { // only _ever_ show this for documents. if ($aDataRow["type"] === "folder") { return ' '; } $link = KTBrowseUtil::getUrlForFolder($aDataRow['folder']); return sprintf('%s', $link, _kt('View Folder'), _kt('View Folder')); } function getName() { return _kt('Opening Containing Folder'); } } ?>