function _fieldValues() { static $lastFolder = null; if (is_null($lastFolder) || $lastFolder->getID() !== $this->iFolderId) { $lastFolder = Folder::get($this->iFolderId); if (PEAR::isError($lastFolder)) { $lastFolder = null; } } if (!is_null($lastFolder)) { $this->sFullPath = 'pending'; if (!is_null($this->getMetadataVersionId())) { $metadata = KTDocumentMetadataVersion::get($this->getMetadataVersionId()); $name = $metadata->getName(); if ($lastFolder->getId() == 1) { $this->sFullPath = $name; } else { $this->sFullPath = $lastFolder->getFullPath() . '/' . $name; } } $this->sParentFolderIds = $lastFolder->getParentFolderIDs(); } return parent::_fieldValues(); }
/** * Delete a selected version of the document. */ function deleteVersion($oDocument, $iVersionID, $sReason) { $oDocument =& KTUtil::getObject('Document', $oDocument); $oVersion =& KTDocumentMetadataVersion::get($iVersionID); $oStorageManager =& KTStorageManagerUtil::getSingleton(); global $default; if (empty($sReason)) { return PEAR::raiseError(_kt('Deletion requires a reason')); } if (PEAR::isError($oDocument) || $oDocument == false) { return PEAR::raiseError(_kt('Invalid document object.')); } if (PEAR::isError($oVersion) || $oVersion == false) { return PEAR::raiseError(_kt('Invalid document version object.')); } $iContentId = $oVersion->getContentVersionId(); $oContentVersion = KTDocumentContentVersion::get($iContentId); if (PEAR::isError($oContentVersion) || $oContentVersion == false) { return PEAR::raiseError(_kt('Invalid document content version object.')); } // Check that the document content is not the same as the current content version $sDocStoragePath = $oDocument->getStoragePath(); $sVersionStoragePath = $oContentVersion->getStoragePath(); if ($sDocStoragePath == $sVersionStoragePath) { return PEAR::raiseError(_kt("Can't delete version: content is the same as the current document content.")); } DBUtil::startTransaction(); // now delete the document version $res = $oStorageManager->deleteVersion($oVersion); if (PEAR::isError($res) || $res == false) { //could not delete the document version from the file system $default->log->error('Deletion: Filesystem error deleting the metadata version ' . $oVersion->getMetadataVersion() . ' of the document ' . $oDocument->getFileName() . ' from folder ' . Folder::getFolderPath($oDocument->getFolderID()) . ' id=' . $oDocument->getFolderID()); // we use a _real_ transaction here ... DBUtil::rollback(); return PEAR::raiseError(_kt('There was a problem deleting the document from storage.')); } // change status for the metadata version $oVersion->setStatusId(VERSION_DELETED); $oVersion->update(); // set the storage path to empty // $oContentVersion->setStoragePath(''); DBUtil::commit(); }