/** * 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; }
/** * 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 . '.*'); }
/** * 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); }
/** * 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); }
/** * 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; }
/** * 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); }
/** * 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 . '.*'); }
/** * 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); }
/** * 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); }