/** * Generate a page manifest. * * @param integer $pageId * @return array | false */ protected function _generateManifest($pageId) { $page = new Object_Page($pageId); if (!$page->getId()) { return false; } $pageVersion = $page->getMostLatestApprovedVersionAsActive(); $version = $pageVersion ? $pageVersion->version : false; $cloudFileContainer = $pageVersion ? $pageVersion->cloud_file_container : $page->cloud_file_container; if ($cloudFileContainer) { $files = $page->getCloudFilePaths($version, $cloudFileContainer); } else { // Get the files $files = $this->_folderFilePaths($page->getStaticContentFolder() . DS . $page->page_id, $page->page_id . '.html'); } // Prepare the pdf templates $pdfTemplateRows = Repo_PagePdfTemplate::getInstance()->getPagePdfTemplates($page->getId()); $pdfTemplates = array(); if ($pdfTemplateRows && $pdfTemplateRows->count()) { foreach ($pdfTemplateRows as $_tRow) { $_template = new Object_PdfTemplate($_tRow->id); $pdfTemplates[] = array('id' => $_template->getId(), 'name' => $_template->name, 'tokens' => $_template->getTokens(), 'preview' => $_template->getManifestPreviewFilePath()); } } return array('version' => $pageVersion ? $pageVersion->version : $page->version, 'id' => $page->page_id, 'uid' => $page->id, 'legalPageUid' => (int) $page->legal_page_id > 0 ? (int) $page->legal_page_id : '', 'linkedPageUids' => $page->getManifestPageGroupPages(), 'title' => $page->name, 'fileType' => 'htmlEdge', 'type' => 'html', 'typename' => $page->type, 'baseHost' => $page->getBaseHost($cloudFileContainer), 'baseUri' => $page->getBaseUrl($version), 'hash' => Manager_Page_StaticContent::getPageFolderName($page->page_id, $version), 'instructions' => $page->description ? $page->description : '', 'description' => $page->internal_desc ? $page->internal_desc : '', 'navigation' => array(), 'language' => $page->page_language, 'defaultPath' => $page->page_id . '.html', 'width' => $page->getWidth(), 'height' => $page->getHeight(), 'transcript' => $page->transcript ? $page->transcript : '', 'audio' => $page->audio_url, 'filePaths' => $files, 'navigation' => $page->navigation ? unserialize($page->navigation) : array(), 'content_type' => $page->content_type ? Repo_Page::$contentTypeLabels[$page->content_type] : Repo_Page::$contentTypeLabels[Repo_Page::PAGE_CONTENT_TYPE_DEFAULT], 'editor_behaviors' => $page->editor_behaviors ? $page->editor_behaviors : '', 'pdf_templates' => $pdfTemplates, 'tags' => $page->getTags()); }
/** * Generate a page screenshot. * * @param integer $pageId * @param array $tokens * @return array | false */ protected function _generate($templateId, $tokens = array()) { if (!$tokens) { $tokens = array(); } $pdfName = md5($templateId . '_' . serialize($tokens)); $template = new Object_PdfTemplate($templateId); if (!$template->getId()) { return false; } if (!$template->getPreviewLink()) { return false; } // Generate the GET URL with tokens $tokenUrl = 'tokens=' . urlencode(Zend_Json::encode($tokens)); $captureImage = $this->getAdapter()->setWorkingDir($template->getFolderPath())->capture(Functions_Common::hostUrl() . $template->getPreviewLink() . '?' . $tokenUrl, $pdfName . '.pdf', array('delay' => self::$defaultDelay, 'isPdf' => true)); // Turn this into a pdf /*$pdf = new Zend_Pdf(); $pdfImage = Zend_Pdf_Image::imageWithPath($captureImage); $pdfPage = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE); $pdfPage->drawImage($pdfImage, 20, 20, $pdfPage->getWidth() - 20, $pdfPage->getHeight() - 20); $pdf->pages[] = $pdfPage; $path = $this->_rootPath . DS . $pdfName . '.pdf'; $pdf->save($path);*/ return $pdfName; }
/** * Pdf template detail page: edit/delete functionality. * * It is the central place for a Pdf template object. */ public function pdfTemplateDetailAction() { $id = $this->_request->getParam('id'); $template = new Object_PdfTemplate($id); $tId = $template->getId(); if (empty($tId)) { // No defined, redirec to list. $this->_redirect('/admin/client/pdf-template'); return false; } $form = new Form_Admin_Client_PdfTemplate(false, array('object' => $template)); // Check for user update if ($this->_request->isPost()) { $params = $this->_request->getPost(); if ($form->isValid($params)) { // Update user if necessary $form->updateObject($template); $form->setObject($template); $form->receiveStaticFile($tId); } else { $form->populate($params); } } $this->view->template = $template; $this->view->client = new Object_Client($template->client_id); $this->view->form = $form; // CKEditor js $this->view->headScript()->prependFile('//cdn.ckeditor.com/4.4.3/standard/ckeditor.js'); }