/** * Get revision's pages and export them to the manifest and package * * @param AM_Model_Db_Revision $oRevision * @return AM_Handler_Export_Sqlite */ protected function _exportPages(AM_Model_Db_Revision $oRevision) { $oPages = $oRevision->getPages(); foreach ($oPages as $oPage) { /* @var $oPage AM_Model_Db_Page */ $oMapper = $this->_getMapper($oPage); /* @var $oMapper AM_Mapper_Sqlite_Page */ $oMapper->unmap(); //Exporting page imposition //TODO: refactoring. get all impositions by single query $oPageImposition = AM_Model_Db_Table_Abstract::factory('page_imposition')->findOneBy('is_linked_to', $oPage->id); if (!is_null($oPageImposition)) { $oMapper = $this->_getMapper($oPageImposition); /* @var $oMapper AM_Mapper_Sqlite_PageImposition */ $oMapper->unmap(); } //Export elements $oElements = $oPage->getElements(); foreach ($oElements as $oElement) { $oMapper = $this->_getMapper($oElement); /* @var $oMapper AM_Mapper_Sqlite_Element */ $oMapper->unmap(); } } return $this; }
/** * 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; }