예제 #1
0
 /**
  * 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');
 }
예제 #2
0
 /**
  * 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());
 }
예제 #3
0
 /**
  * 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;
 }