/** * Test the bulk archive functionality */ function testArchive() { // Create documents $doc1 = $this->createDocument('Test Doc One', 'testdoc1.txt'); $doc2 = $this->createDocument('Test Doc Two', 'testdoc2.txt'); $doc3 = $this->createDocument('Test Doc Three', 'testdoc3.txt'); $folder1 = $this->root->add_folder("New test folder"); $this->assertNotError($newFolder); if (PEAR::isError($newFolder)) { return; } $doc4 = $this->createDocument('Test Doc Four', 'testdoc4.txt', $folder1); $aItems = array($doc1, $doc2, $doc3, $folder1); // Archive documents and folder $res = $this->bulk->archive($aItems, 'Testing bulk archive'); $this->assertTrue(empty($res)); $document1 = $doc1->getObject(); $this->assertTrue($document1->getStatusID() == 4); // refresh the doc4 document object to reflect changes $doc4 = KTAPI_Document::get($this->ktapi, $doc4->get_documentid()); $document4 = $doc4->getObject(); $this->assertTrue($document4->getStatusID() == 4); // Restore for deletion $doc1->restore(); $doc2->restore(); $doc3->restore(); $doc4->restore(); // Delete and expunge documents and folder $this->deleteDocument($doc1); $this->deleteDocument($doc2); $this->deleteDocument($doc3); $this->deleteDocument($doc4); $folder1->delete('Testing bulk archive'); }
/** * Copies the document from one folder to another. * * <code> * $ktapi = new KTAPI(); * $session = $ktapi->start_system_session(); * $document = $ktapi->get_document_by_id($documentid); * $newFolder = $this->root->add_folder("New folder"); * $copyOfDoc = $document->copy($newFolder, 'Reason for copying document'); * </code> * * @author KnowledgeTree Team * @access public * @param KTAPI_Folder $ktapi_target_folder The new parent folder where the document is being copied into * @param string $reason The reason for the copy * @param string $newname Optional. The title of the document to be used in the case of a name clash * @param string $newfilename Optional. The filename of the document to be used in the case of a name clash * @return KTAPI_Document|PEAR_Error Returns the new KTAPI Document object | a PEAR_Error on failure */ function copy(&$ktapi_target_folder, $reason, $newname = null, $newfilename = null) { assert(!is_null($ktapi_target_folder)); assert($ktapi_target_folder instanceof KTAPI_FOLDER); //is_a($ktapi_target_folder,'KTAPI_Folder')); if (empty($newname)) { $newname = null; } if (empty($newfilename)) { $newfilename = null; } $user = $this->ktapi->get_user(); if ($this->document->getIsCheckedOut()) { return new PEAR_Error(KTAPI_ERROR_DOCUMENT_CHECKED_OUT); } $target_folder =& $ktapi_target_folder->get_folder(); $result = $this->can_user_access_object_requiring_permission($target_folder, KTAPI_PERMISSION_WRITE); if (PEAR::isError($result)) { return $result; } $name = $this->document->getName(); $clash = KTDocumentUtil::nameExists($target_folder, $name); if ($clash && !is_null($newname)) { $name = $newname; $clash = KTDocumentUtil::nameExists($target_folder, $name); } if ($clash) { if (is_null($newname)) { $name = KTDocumentUtil::getUniqueDocumentName($target_folder, $name); } else { return new PEAR_Error('A document with this title already exists in your chosen folder. Please choose a different folder, or specify a new title for the copied document.'); } } $filename = $this->document->getFilename(); $clash = KTDocumentUtil::fileExists($target_folder, $filename); if ($clash && !is_null($newname)) { $filename = $newfilename; $clash = KTDocumentUtil::fileExists($target_folder, $filename); } if ($clash) { if (is_null($newfilename)) { $filename = KTDocumentUtil::getUniqueFilename($target_folder, $newfilename); } else { return new PEAR_Error('A document with this filename already exists in your chosen folder. Please choose a different folder, or specify a new filename for the copied document.'); } } DBUtil::startTransaction(); $new_document = KTDocumentUtil::copy($this->document, $target_folder, $reason); if (PEAR::isError($new_document)) { DBUtil::rollback(); return new KTAPI_Error(KTAPI_ERROR_INTERNAL_ERROR, $new_document); } $new_document->setName($name); $new_document->setFilename($filename); $res = $new_document->update(); if (PEAR::isError($res)) { DBUtil::rollback(); return new KTAPI_Error(KTAPI_ERROR_INTERNAL_ERROR, $res); } DBUtil::commit(); /* // FIXME do we need to refactor all trigger usage into the util function? $oKTTriggerRegistry = KTTriggerRegistry::getSingleton(); $aTriggers = $oKTTriggerRegistry->getTriggers('copyDocument', 'postValidate'); foreach ($aTriggers as $aTrigger) { $sTrigger = $aTrigger[0]; $oTrigger = new $sTrigger; $aInfo = array( 'document' => $new_document, 'old_folder' => $this->ktapi_folder->get_folder(), 'new_folder' => $target_folder, ); $oTrigger->setInfo($aInfo); $ret = $oTrigger->postValidate(); } */ return KTAPI_Document::get($this->ktapi, $new_document->getId()); }
/** * This returns a refererence to a document based on document id. * * @author KnowledgeTree Team * @access public * @param integer $documentid The document id * @return object $document The KTAPI_Document object */ public function &get_document_by_id($documentid) { $document = KTAPI_Document::get($this, $documentid); return $document; }