public function testShouldMoveToRevision()
 {
     //GIVEN
     $revisionData = array("id" => 2, "title" => "test_revision2", "state" => 1, "issue" => 2, "user" => 2);
     $revisionTo = new AM_Model_Db_Revision();
     $revisionTo->setFromArray($revisionData);
     //WHEN
     $this->page->moveToRevision($revisionTo);
     //THEN
     $this->assertEquals(2, $this->page->user, "User id should change");
     $this->assertEquals(2, $this->page->revision, "Revision id should change");
     $queryTable = $this->getConnection()->createQueryTable("page", "SELECT id, user, revision FROM page ORDER BY id");
     $expectedTable = $this->createFlatXMLDataSet(dirname(__FILE__) . "/_dataset/move2revision.xml")->getTable("page");
     $this->assertTablesEqual($expectedTable, $queryTable);
 }
 public function testShouldCopyToRevision()
 {
     //GIVEN
     $aRevisionData = array('id' => 2, 'title' => 'test_revision2', 'state' => 1, 'issue' => 2, 'user' => 2);
     $oRevisionTo = new AM_Model_Db_Revision();
     $oRevisionTo->setFromArray($aRevisionData);
     $oRevisionTo->save();
     //THEN
     $this->_oElementsMock->expects($this->once())->method('copyToPage');
     $this->_oPageBackgroundMock->expects($this->once())->method('copyToPage');
     $this->_oTermMock->expects($this->once())->method('saveToPage');
     //WHEN
     $this->_oPage->copyToRevision($oRevisionTo);
     //THEN
     $this->assertEquals(2, $this->_oPage->user, 'User id should change');
     $this->assertEquals(2, $this->_oPage->revision, 'Revision id should change');
     $oGivenDataSet = $this->getConnection()->createQueryTable('page', 'SELECT id, user, revision FROM page ORDER BY id');
     $oExpectedDataSet = $this->createFlatXMLDataSet(dirname(__FILE__) . '/_dataset/copy2revision.xml')->getTable('page');
     $this->assertTablesEqual($oExpectedDataSet, $oGivenDataSet);
 }
Exemplo n.º 3
0
 /**
  * Create revision from simple pdf
  * @param AM_Model_Db_IssueSimplePdf $oSimplePdf
  * @return AM_Model_Db_Revision
  * @throws AM_Handler_Issue_Exception
  */
 public function createRevisionFromSimplePdf(AM_Model_Db_IssueSimplePdf $oSimplePdf)
 {
     $aImages = $oSimplePdf->getAllPagesThumbnails();
     //Create revision
     $oRevision = new AM_Model_Db_Revision();
     $oRevision->state = AM_Model_Db_Issue::STATUS_WIP;
     $oRevision->user = $this->getIssue()->user;
     $oRevision->issue = $this->getIssue()->id;
     $oRevision->save();
     $oRevision->title = 'Revision #' . $oRevision->id;
     $oRevision->save();
     //Create cover page
     $oPage = new AM_Model_Db_Page();
     $oPage->title = 'Root page';
     $oPage->template = AM_Model_Db_Template::TPL_COVER_PAGE;
     $oPage->revision = $oRevision->id;
     $oPage->user = $this->getIssue()->user;
     $oPage->root_page = true;
     $oPage->save();
     //Find field record for type 'Body'
     $oFieldBody = AM_Model_Db_Table_Abstract::factory('field')->findOneBy(array('field_type' => 1, 'template' => AM_Model_Db_Template::TPL_COVER_PAGE));
     if (is_null($oFieldBody)) {
         throw new AM_Handler_Issue_Exception('Field "Body" not found');
     }
     //Create element for cover page
     $oElement = new AM_Model_Db_Element();
     $oElement->field = $oFieldBody->id;
     $oElement->page = $oPage->id;
     $oElement->save();
     AM_Tools::clearContent(AM_Model_Db_Element::RESOURCE_TYPE, $oElement->id);
     AM_Tools::clearResizerCache(AM_Model_Db_Element::RESOURCE_TYPE, $oElement->getResources()->getThumbnailPresetName(), $oElement->id);
     //Prepare resources for the element
     $sImage = array_shift($aImages);
     $oElement->getResources()->setData(array(AM_Model_Db_Element_Data_Resource::DATA_KEY_RESOURCE => $sImage))->save();
     //Set page background
     $oElement->getResources()->setPageBackground();
     //Create childs
     $oFieldBody = AM_Model_Db_Table_Abstract::factory('field')->findOneBy(array('field_type' => 1, 'template' => AM_Model_Db_Template::TPL_SIMPLE_PAGE));
     if (is_null($oFieldBody)) {
         throw new AM_Handler_Issue_Exception('Field "Body" not found');
     }
     $oPageRoot = clone $oPage;
     foreach ($aImages as $sImage) {
         $oPage = new AM_Model_Db_Page();
         $oPage->title = 'Right connected to page ' . $oPageRoot->id;
         $oPage->template = AM_Model_Db_Template::TPL_SIMPLE_PAGE;
         $oPage->revision = $oRevision->id;
         $oPage->user = $this->getIssue()->user;
         $oPage->setConnectionBit(AM_Model_Db_page::LINK_LEFT);
         $oPage->save();
         $oPageRoot->setConnectionBit(AM_Model_Db_page::LINK_RIGHT);
         $oPageRoot->save();
         $oPage->setParent($oPageRoot);
         $oPage->setLinkType(AM_Model_Db_page::LINK_RIGHT)->savePageImposition();
         //Create element for cover page
         $oElement = new AM_Model_Db_Element();
         $oElement->field = $oFieldBody->id;
         $oElement->page = $oPage->id;
         $oElement->save();
         AM_Tools::clearContent(AM_Model_Db_Element::RESOURCE_TYPE, $oElement->id);
         AM_Tools::clearResizerCache(AM_Model_Db_Element::RESOURCE_TYPE, $oElement->getResources()->getThumbnailPresetName(), $oElement->id);
         //Prepare resources for the element
         $oElement->getResources()->setData(array(AM_Model_Db_Element_Data_Resource::DATA_KEY_RESOURCE => $sImage))->save();
         //Set page background
         $oElement->getResources()->setPageBackground();
         $oPageRoot = clone $oPage;
     }
     $oRevision->exportRevision();
     return $oRevision;
 }
Exemplo n.º 4
0
 /**
  * Returns tree structure as array - each root element contains 2 childs
  * [
  *  [id1, id2, id3, title1, title2, title3]
  * ]
  *
  * @param AM_Model_Db_Revision $oRevision
  * @return array
  */
 protected function _getTree(AM_Model_Db_Revision $oRevision)
 {
     $oVocabulary = $oRevision->getVocabularyToc();
     $oQuery = $this->getAdapter()->select()->from(array('t1' => 'term'), null)->joinLeft(array('t2' => 'term'), 't2.parent_term = t1.id AND t2.deleted = "no"' . $this->getAdapter()->quoteInto(' AND (t2.revision = ? OR t2.revision IS NULL)', $oRevision->id), null)->joinLeft(array('t3' => 'term'), 't3.parent_term = t2.id AND t3.deleted = "no"' . $this->getAdapter()->quoteInto(' AND (t3.revision = ? OR t3.revision IS NULL)', $oRevision->id), null)->where('t1.vocabulary = ?', $oVocabulary->id)->where('t1.revision = ? OR t1.revision IS NULL', $oRevision->id)->where('t1.parent_term is null')->where('t1.deleted = ?', 'no')->order(array('t1.position', 't2.position', 't3.position', 't1.id', 't2.id', 't3.id'))->columns(array('id1' => 't1.id', 'id2' => 't2.id', 'id3' => 't3.id', 'title1' => 't1.title', 'title2' => 't2.title', 'title3' => 't3.title'));
     $aResult = $this->getAdapter()->fetchAll($oQuery);
     return $aResult;
 }
Exemplo n.º 5
0
 /**
  * Export horisontal pages
  *
  * @param AM_Model_Db_Revision $oRevision
  * @return AM_Handler_Export_Sqlite
  */
 protected function _exportPagesHorisontal(AM_Model_Db_Revision $oRevision)
 {
     $oPagesHorisontal = AM_Model_Db_Table_Abstract::factory('page_horisontal')->findAllBy(array('id_issue' => $oRevision->getIssue()->id), null, 'weight');
     foreach ($oPagesHorisontal as $oPageHorisontal) {
         $oMapper = $this->_getMapper($oPageHorisontal);
         /* @var $oMapper AM_Mapper_Sqlite_PageHorisontal */
         $oMapper->unmap();
     }
     return $this;
 }
Exemplo n.º 6
0
 /**
  * Copy all revision data (page map, elemtnts) from one to other
  * @param AM_Model_Db_Revision $oRevisionFrom
  * @return AM_Model_Db_Revision
  */
 public function copyFromRevision(AM_Model_Db_Revision $oRevisionFrom)
 {
     $oVocabularyToc = $oRevisionFrom->getVocabularyToc();
     $oVocabularyTag = $oRevisionFrom->getVocabularyTag();
     $aPages = $oRevisionFrom->getPages();
     if (!empty($oVocabularyToc)) {
         $oVocabularyToc->copyToRevision($this, $oRevisionFrom);
     }
     if (!empty($oVocabularyTag)) {
         $oVocabularyTag->copyToRevision($this, $oRevisionFrom);
     }
     foreach ($aPages as $oPage) {
         /* @var $oPage AM_Model_Db_Page */
         $oPage->copyToRevision($this);
     }
     foreach ($aPages as $oPage) {
         /* @var $oPage AM_Model_Db_Page */
         $oPage->savePageImposition();
     }
     return $this;
 }
Exemplo n.º 7
0
 /**
  * Copy term data from one revision to other
  * @param AM_Model_Db_Revision $oRevisionTo
  * @return AM_Model_Db_Term
  */
 public function copyToRevision(AM_Model_Db_Revision $oRevisionTo, AM_Model_Db_Revision $oRevisionFrom)
 {
     $oTocVocabulary = $oRevisionTo->getVocabularyToc();
     if ($this->_isToc() && !empty($this->revision) && $oRevisionFrom->id == $this->revision) {
         $oResources = $this->getResources();
         $this->vocabulary = $oTocVocabulary->id;
         $this->revision = $oRevisionTo->id;
         $aData = array();
         $aData['updated'] = null;
         $aData['vocabulary'] = $this->vocabulary;
         $aData['revision'] = $this->revision;
         $this->copy($aData);
         $oResources->copy();
     }
     return $this;
 }