📄 document.inc.svn-base
字号:
// }}} // {{{ fileExists /** * Static function. * Check if a document with a given filename currently exists * * @param String File name of document * @param int Primary key of folder to which document is assigned * * @return boolean true if document exists, false otherwise. */ function fileExists($sFileName, $iFolderID) { $sD = KTUtil::getTableName('documents'); $sDM = KTUtil::getTableName('document_metadata_version'); $sDC = KTUtil::getTableName('document_content_version'); $sQuery = "SELECT D.id AS id FROM $sD AS D LEFT JOIN $sDM AS DM ON D.metadata_version_id = DM.id LEFT JOIN $sDC AS DC ON DM.content_version_id = DC.id WHERE DC.filename = ? AND D.folder_id = ? AND D.status_id=1"; $aParams = array($sFileName, $iFolderID); $id = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id'); if (empty($id)) { return false; } return true; } // }}} function &getByFilenameAndFolder($sFileName, $iFolderID) { $sD = KTUtil::getTableName('documents'); $sDM = KTUtil::getTableName('document_metadata_version'); $sDC = KTUtil::getTableName('document_content_version'); $sQuery = "SELECT D.id AS id FROM $sD AS D LEFT JOIN $sDM AS DM ON D.metadata_version_id = DM.id LEFT JOIN $sDC AS DC ON DM.content_version_id = DC.id WHERE DC.filename = ? AND D.folder_id = ?"; $aParams = array($sFileName, $iFolderID); $id = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id'); return Document::get($id); } // {{{ nameExists /** * Static function. * Check if a document with a given filename currently exists * * @param String File name of document * @param int Primary key of folder to which document is assigned * * @return boolean true if document exists, false otherwise. */ function nameExists($sName, $iFolderID) { $sD = KTUtil::getTableName('documents'); $sDM = KTUtil::getTableName('document_metadata_version'); $sDC = KTUtil::getTableName('document_content_version'); $sQuery = "SELECT D.id AS id FROM $sD AS D LEFT JOIN $sDM AS DM ON D.metadata_version_id = DM.id LEFT JOIN $sDC AS DC ON DM.content_version_id = DC.id WHERE DM.name = ? AND D.folder_id = ? AND D.status_id=1"; $aParams = array($sName, $iFolderID); $id = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id'); if (empty($id)) { return false; } return true; } // }}} function &getByNameAndFolder($sName, $iFolderID) { $sD = KTUtil::getTableName('documents'); $sDM = KTUtil::getTableName('document_metadata_version'); $sDC = KTUtil::getTableName('document_content_version'); $sQuery = "SELECT D.id AS id FROM $sD AS D LEFT JOIN $sDM AS DM ON D.metadata_version_id = DM.id LEFT JOIN $sDC AS DC ON DM.content_version_id = DC.id WHERE DM.name = ? AND D.folder_id = ?"; $aParams = array($sName, $iFolderID); $id = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id'); return Document::get($id); } // {{{ getDocumentDisplayPath /** * Static function. * Get the path for a document that will be displayed to the user * * @param integer primary key of document to generate path for * @return string full path to document */ function getDocumentDisplayPath($iDocumentID) { $oDocument = & Document::get($iDocumentID); return $oDocument->getDisplayPath(); } // }}} // {{{ cleanupDocumentData /** * Deletes content from document data tables */ function cleanupDocumentData($iDocumentID) { // NEW SEARCH return; // FIXME this appears to be deprecated, or at least should be $sTable = KTUtil::getTableName('document_text'); $sQuery = "DELETE FROM $sTable WHERE document_id = ?"; $aParams = array($iDocumentID); $res = DBUtil::runQuery(array($sQuery, $aParams)); return $res; } // }}} // {{{ getByFolderIDAndLookupID function &getByFolderIDAndLookupID($iParentID, $iLookupID, $aOptions = null) { $aIds = KTEntityUtil::getByDict('KTDocumentCore', array( 'folder_id' => $iParentID, 'permission_lookup_id' => $iLookupID, 'status_id' => LIVE, ), array('multi' => true, 'ids' => true)); $aList = array(); foreach ($aIds as $iId) { $aList[] = Document::get($iId); } } // }}} // {{{ getByState function &getByState($oState) { $iStateId = KTUtil::getId($oState); $sDocumentTable = KTUtil::getTableName('documents'); $sDocumentMetadataTable = KTUtil::getTableName('document_metadata_version'); $sQuery = sprintf("SELECT D.id AS document_id FROM %s AS D LEFT JOIN %s AS DM ON D.metadata_version_id = DM.id WHERE DM.workflow_state_id = ?", $sDocumentTable, $sDocumentMetadataTable); $aParams = array($iStateId); $aIds = DBUtil::getResultArrayKey(array($sQuery, $aParams), 'document_id'); $aList = array(); foreach ($aIds as $iId) { $aList[] = Document::get($iId); } return $aList; } // }}} // {{{ function &createFromArray($aOptions) { if (KTUtil::arrayGet($aOptions, "size") === null) { $aOptions['size'] = 0; } if (KTUtil::arrayGet($aOptions, "mimetypeid") === null) { $aOptions['mimetypeid'] = 0; } /* if (KTUtil::arrayGet($aOptions, "statusid") === null) { $aOptions['statusid'] = LIVE; } */ $oDocument = new Document(); $aOptions = array_change_key_case($aOptions); $aCoreKeys = array( "CreatorId", "Created", "ModifiedUserId", "Modified", "FolderId", "StatusId", "RestoreFolderId", "RestoreFolderPath", ); $aCore = array(); foreach ($aCoreKeys as $sKey) { $sKey = strtolower($sKey); $sValue = KTUtil::arrayGet($aOptions, $sKey); if (!is_null($sValue)) { $aCore[$sKey] = $sValue; } } $aMetadataVersionKeys = array( "MetadataVersion", "ContentVersionId", "DocumentTypeId", "Name", "Description", "StatusId", "VersionCreated", "VersionCreatorId", ); $aMetadataVersion = array(); foreach ($aMetadataVersionKeys as $sKey) { $sKey = strtolower($sKey); $sValue = KTUtil::arrayGet($aOptions, $sKey); if (!is_null($sValue)) { $aMetadataVersion[$sKey] = $sValue; } } $aMetadataVersion['VersionCreatorId'] = $aCore['creatorid']; $aContentKeys = array( "Filename", "Size", "MimeId", "MajorVersion", "MinorVersion", "StoragePath", ); $aContentVersion = array(); foreach ($aContentKeys as $sKey) { $sKey = strtolower($sKey); $sValue = KTUtil::arrayGet($aOptions, $sKey); if (!is_null($sValue)) { $aContentVersion[$sKey] = $sValue; } } $oDocument->_oDocumentCore = KTDocumentCore::createFromArray($aCore); if (PEAR::isError($oDocument->_oDocumentCore)) { return $oDocument->_oDocumentCore; } $iId = $oDocument->_oDocumentCore->getId(); $aContentVersion["documentid"] = $iId; $oDocument->_oDocumentContentVersion = KTDocumentContentVersion::createFromArray($aContentVersion); if (PEAR::isError($oDocument->_oDocumentContentVersion)) { return $oDocument->_oDocumentContentVersion; } $aMetadataVersion["documentid"] = $iId; $aMetadataVersion["contentversionid"] = $oDocument->_oDocumentContentVersion->getId(); $oDocument->_oDocumentMetadataVersion = KTDocumentMetadataVersion::createFromArray($aMetadataVersion); if (PEAR::isError($oDocument->_oDocumentMetadataVersion)) { return $oDocument->_oDocumentMetadataVersion; } $oDocument->_oDocumentCore->setMetadataVersionId($oDocument->_oDocumentMetadataVersion->getId()); $res = $oDocument->_oDocumentCore->update(); if (PEAR::isError($res)) { return $res; } // Grab a copy that uses proxies... $oDocument =& Document::get($iId); KTPermissionUtil::updatePermissionLookup($oDocument); return $oDocument; } // }}} // {{{ startNewMetadataVersion function startNewMetadataVersion($oUser) { $iUserId = KTUtil::getId($oUser); $this->_oDocumentMetadataVersion =& $this->_oDocumentMetadataVersion->newCopy(); if (PEAR::isError($this->_oDocumentMetadataVersion)) { return $this->_oDocumentMetadataVersion; } $this->_oDocumentMetadataVersion->bumpMetadataVersion(); $this->_oDocumentMetadataVersion->setVersionCreated(getCurrentDateTime()); $this->_oDocumentMetadataVersion->setVersionCreatorId($iUserId); $this->_oDocumentMetadataVersion->update(); $this->_oDocumentCore->setMetadataVersion($this->_oDocumentMetadataVersion->getMetadataVersion()); $this->_oDocumentCore->setMetadataVersionId($this->_oDocumentMetadataVersion->iId); } // }}} // {{{ startNewContentVersion function startNewContentVersion($oUser) { if ($this->getImmutable()) { return PEAR::raiseError(_kt('Cannot create new version of document: Document is immutable')); } $iUserId = KTUtil::getId($oUser); $this->_oDocumentContentVersion =& $this->_oDocumentContentVersion->newCopy(); $this->_oDocumentMetadataVersion =& $this->_oDocumentMetadataVersion->newCopy(); if (PEAR::isError($this->_oDocumentContentVersion)) { return $this->_oDocumentContentVersion; } if (PEAR::isError($this->_oDocumentMetadataVersion)) { return $this->_oDocumentMetadataVersion; } $this->_oDocumentMetadataVersion->bumpMetadataVersion(); $this->_oDocumentMetadataVersion->setVersionCreated(getCurrentDateTime()); $this->_oDocumentMetadataVersion->setVersionCreatorId($iUserId); $this->_oDocumentMetadataVersion->setContentVersionId($this->_oDocumentContentVersion->getId()); $res = $this->_oDocumentMetadataVersion->update(); if (PEAR::isError($res)) { var_dump($res); return $res; } $this->_oDocumentCore->setMetadataVersion($this->_oDocumentMetadataVersion->getMetadataVersion()); $this->_oDocumentCore->setMetadataVersionId($this->_oDocumentMetadataVersion->getId()); } // }}} // {{{ delete function delete() { $this->_oDocumentCore->setMetadataVersionId(null); $this->_oDocumentCore->update(); $aMetadataVersions = KTDocumentMetadataVersion::getByDocument($this); foreach ($aMetadataVersions as $oVersion) { $oVersion->delete(); } $aContentVersions = KTDocumentContentVersion::getByDocument($this); foreach ($aContentVersions as $oVersion) { $oVersion->delete(); } $this->_oDocumentCore->delete(); return true; } // }}} function clearAllCaches() { $GLOBALS["_OBJECTCACHE"]['Document'] = array(); KTEntityUtil::clearAllCaches('KTDocumentCore'); KTEntityUtil::clearAllCaches('KTDocumentContentVersion'); KTEntityUtil::clearAllCaches('KTDocumentMetadataVersion'); return KTEntityUtil::clearAllCaches('Document'); } function getLastTransactionComment($sTransactionNamespace) { $sDocumentTransactionTable = KTUtil::getTableName('document_transactions'); $sQuery = sprintf("SELECT comment FROM %s WHERE transaction_namespace = ? AND document_id = ? ORDER BY datetime DESC", $sDocumentTransactionTable, $sDocumentMetadataTable); $aParams = array($sTransactionNamespace, $this->getId()); $sComment = DBUtil::getOneResultKey(array($sQuery, $aParams), 'comment'); if(PEAR::isError($sComment)) { return false; } return $sComment; } function getLastDeletionComment() { $sComment = $this->getLastTransactionComment('ktcore.transactions.delete'); if(!$sComment) { return $sComment; } $aComment = explode(':', $sComment); return trim($aComment[1]); } static function getStatusString($statusid) { $statuses = array( 1=>_kt('Live'), 2=>_kt('Published'), 3=>_kt('Deleted'), 4=>_kt('Archived'), 5=>_kt('Incomplete'), 6=>_kt('Version Deleted') ); if (array_key_exists($statusid, $statuses)) { return $statuses[$statusid]; } return _kt('Unknown State'); }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -