Esempio n. 1
0
 /**
  * Compile static pdf
  * @return AM_Handler_HorisontalPdf
  * @throws AM_Handler_HorisontalPdf_Exception
  */
 public function compile()
 {
     AM_Model_Db_Table_Abstract::factory('page')->resetHorizontalPdf($this->getIssue());
     AM_Model_Db_Table_Abstract::factory('page_horisontal')->deleteBy(array('id_issue' => $this->getIssue()->id));
     AM_Tools::clearContent(AM_Model_Db_StaticPdf_Data_Abstract::TYPE_CACHE, $this->getIssue()->id);
     AM_Tools::clearResizerCache(AM_Model_Db_StaticPdf_Data_Abstract::TYPE_CACHE, AM_Model_Db_StaticPdf_Data_Abstract::TYPE_CACHE, $this->getIssue()->id);
     if (!count($this->getIssue()->getHorizontalPdfs())) {
         return $this;
     }
     switch ($this->getIssue()->static_pdf_mode) {
         case AM_Model_Db_Issue::HORISONTAL_MODE_PAGE:
             //Get first pages of all pdfs and glue them
             $aFiles = (array) $this->_compilePageVersion();
             break;
         case AM_Model_Db_Issue::HORISONTAL_MODE_ISSUE:
             //Get pdf's first pages and glue them
             $aFiles = (array) $this->_compileIssueVersion();
             break;
         case AM_Model_Db_Issue::HORISONTAL_MODE_2PAGES:
             //Get all pdf's pages and glue them
             $aFiles = (array) $this->_compile2PagesVersion();
             break;
     }
     $sCachePath = $this->_getFilesPath();
     if (!empty($aFiles)) {
         if (!AM_Tools_Standard::getInstance()->is_dir($sCachePath)) {
             if (!AM_Tools_Standard::getInstance()->mkdir($sCachePath, 0777, true)) {
                 throw new AM_Handler_HorisontalPdf_Exception('I/O error while create cache dir');
             }
         }
         $oThumbnailer = AM_Handler_Locator::getInstance()->getHandler('thumbnail');
         /* @var $oThumbnailer AM_Handler_Thumbnail */
         $oThumbnailer->clearSources()->loadAllPresets(AM_Model_Db_StaticPdf_Data_Abstract::TYPE_CACHE)->setImageType(AM_Handler_Thumbnail::IMAGE_TYPE_JPEG);
         foreach ($aFiles as $sFile) {
             $sFilename = pathinfo($sFile, PATHINFO_BASENAME);
             $sNewFilePath = $sCachePath . DIRECTORY_SEPARATOR . $sFilename;
             if (!AM_Tools_Standard::getInstance()->rename($sFile, $sNewFilePath)) {
                 throw new AM_Handler_HorisontalPdf_Exception('I/O error while copy file');
             }
             AM_Tools_Standard::getInstance()->chmod($sNewFilePath, 0666);
             if (AM_Tools::isAllowedImageExtension($sNewFilePath)) {
                 $oThumbnailer->addSourceFile($sNewFilePath);
             }
             $oPageHorisontal = new AM_Model_Db_PageHorisontal();
             $oPageHorisontal->id_issue = $this->getIssue()->id;
             $oPageHorisontal->resource = $sFilename;
             $oPageHorisontal->weight = pathinfo($sFile, PATHINFO_FILENAME);
             $oPageHorisontal->save();
         }
         $oThumbnailer->createThumbnails();
     }
     return $this;
 }
Esempio n. 2
0
 /**
  * Clear resources and thumbnail
  *
  * @param string|null $sResourceKey Have to delete data by $key or all data
  * @return void
  */
 public function clearResources($sResourceKey = null)
 {
     if (is_null($sResourceKey)) {
         $sResourceKey = '*';
     }
     AM_Tools::clearContent(AM_Model_Db_Term_Data_Abstract::TYPE, $this->getTerm()->id, $sResourceKey . '.*');
     AM_Tools::clearResizerCache(AM_Model_Db_Term_Data_Abstract::TYPE, AM_Model_Db_Term_Data_Abstract::TYPE, $this->getTerm()->id, $sResourceKey . '.*');
 }
Esempio n. 3
0
 /**
  * Clear resources and thumbnail
  *
  * @return void
  */
 public function clearResources()
 {
     $sFileNameMask = $this->_getHorizontalPdf()->id . '.*';
     AM_Tools::clearContent(self::TYPE, $this->_getHorizontalPdf()->issue, $sFileNameMask);
     AM_Tools::clearResizerCache(self::TYPE, self::TYPE, $this->_getHorizontalPdf()->issue, $sFileNameMask);
     AM_Tools::clearContent(self::TYPE_CACHE, $this->_getHorizontalPdf()->issue);
     AM_Tools::clearResizerCache(self::TYPE_CACHE, self::TYPE_CACHE, $this->_getHorizontalPdf()->issue);
 }
Esempio n. 4
0
 /**
  * Clear resources and thumbnail
  *
  * @return void
  */
 public function clearResources()
 {
     AM_Tools::clearContent(self::TYPE, $this->_getIssueSimplePdf()->id_issue);
     AM_Tools::clearResizerCache(self::TYPE, self::TYPE, $this->_getIssueSimplePdf()->id_issue);
 }
Esempio n. 5
0
 /**
  * Upload vertical pdf
  * @return AM_Model_Db_IssueSimplePdf
  */
 public function uploadSimplePdf()
 {
     $oVerticalPdf = AM_Model_Db_Table_Abstract::factory('issue_simple_pdf')->findOneBy('id_issue', $this->id);
     if (is_null($oVerticalPdf)) {
         $oVerticalPdf = new AM_Model_Db_IssueSimplePdf();
     }
     AM_Tools::clearContent(AM_Model_Db_IssueSimplePdf_Data_Abstract::TYPE, $this->id);
     AM_Tools::clearResizerCache(AM_Model_Db_IssueSimplePdf_Data_Abstract::TYPE, AM_Model_Db_IssueSimplePdf_Data_Abstract::TYPE, $this->id);
     $oVerticalPdf->setIssue($this);
     $oVerticalPdf->save();
     $oVerticalPdf->uploadResource();
     return $oVerticalPdf;
 }
Esempio n. 6
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;
 }
 /**
  * Editor toc-delete-summary action
  */
 public function tocDeleteSummaryAction()
 {
     $aMessage = array('status' => 0);
     try {
         $iRevisionId = intval($this->_getParam('rid'));
         $iTocItemId = intval($this->_getParam('id'));
         if (!AM_Model_Db_Table_Abstract::factory('term')->checkAccess($iTocItemId, $this->_aUserInfo)) {
             throw new AM_Controller_Exception_BadRequest('Error. Invalid params were given');
         }
         $oRevision = AM_Model_Db_Table_Abstract::factory('revision')->findOneBy('id', $iRevisionId);
         /* @var $oRevision AM_Model_Db_Revision */
         if (is_null($oRevision)) {
             throw new AM_Controller_Exception_Forbidden('Access denied');
         }
         $oTerm = AM_Model_Db_Table_Abstract::factory('term')->findOneBy('id', $iTocItemId);
         /* @var $oTerm AM_Model_Db_Term */
         if (is_null($oTerm)) {
             throw new AM_Controller_Exception_Forbidden('Access denied');
         }
         AM_Tools::clearContent(AM_Model_Db_Term_Data_Abstract::TYPE, $oTerm->id, 'sumary.*');
         AM_Tools::clearResizerCache(AM_Model_Db_Term_Data_Abstract::TYPE, AM_Model_Db_Term_Data_Abstract::TYPE, $oTerm->id, 'sumary.*');
         $oTerm->thumb_summary = null;
         $oTerm->updated = new Zend_Db_Expr('NOW()');
         $oTerm->save();
         $oRevision->exportRevision();
         $aDefaultImage = array();
         $aDefaultImage['defaultUri'] = AM_Tools::getImageUrl('toc-summary', 'toc', $iTocItemId);
         $aMessage['file'] = $aDefaultImage;
         $aMessage['status'] = 1;
     } catch (Exception $oException) {
         $aMessage['message'] = $this->__('Error. Can\'t delete file') . PHP_EOL . $oException->getMessage();
     }
     return $this->getHelper('Json')->sendJson($aMessage);
 }
Esempio n. 8
0
 /**
  * Clear resources and thumbnail
  *
  * @param string|null $sKey Have to delete data by $key or all data
  * @return void
  */
 public function clearResources($sKey = null)
 {
     if (is_null($sKey)) {
         $sKey = '*';
     }
     AM_Tools::clearContent(self::TYPE, $this->getElement()->id, $sKey . '.*');
     AM_Tools::clearResizerCache(self::TYPE, $this->getElement()->getResources()->getThumbnailPresetName(), $this->getElement()->id, $sKey . '.*');
 }
Esempio n. 9
0
 /**
  * Clear resources and thumbnail
  *
  * @return void
  */
 public function clearResources()
 {
     AM_Tools::clearContent($this->_getIssueHelpPage()->getThumbnailPresetType(), $this->_getIssueHelpPage()->id_issue);
     AM_Tools::clearResizerCache($this->_getIssueHelpPage()->getThumbnailPresetType(), $this->_getIssueHelpPage()->getThumbnailPresetType(), $this->_getIssueHelpPage()->id_issue);
 }
Esempio n. 10
0
 /**
  * Issue delete-simple-pdf action
  */
 public function deleteSimplePdfAction()
 {
     try {
         $aMessage = array('status' => 0);
         $iIssueId = intval($this->_getParam('issueId'));
         if (!AM_Model_Db_Table_Abstract::factory('issue')->checkAccess($iIssueId, $this->_aUserInfo)) {
             throw new AM_Controller_Exception_Forbidden();
         }
         AM_Model_Db_Table_Abstract::factory('issue_simple_pdf')->deleteBy(array('id_issue' => $iIssueId));
         AM_Tools::clearContent(AM_Model_Db_IssueSimplePdf_Data_Abstract::TYPE, $iIssueId);
         AM_Tools::clearResizerCache(AM_Model_Db_IssueSimplePdf_Data_Abstract::TYPE, AM_Model_Db_IssueSimplePdf_Data_Abstract::TYPE, $iIssueId);
         $aMessage['status'] = 1;
     } catch (Exception $e) {
         $aMessage["message"] = 'Error. Can\'t delete simple pdf.' . PHP_EOL . $e->getMessage();
     }
     return $this->getHelper('Json')->sendJson($aMessage);
 }