/**
  * Get an array of Curry\Module\PageModuleWrapper objects for all modules on the PageRevision we are rendering.
  *
  * @return \Curry\Module\PageModuleWrapper[]
  */
 protected function getPageModuleWrappers()
 {
     $langcode = (string) \Curry_Language::getLangCode();
     $cacheName = md5(__CLASS__ . '_ModuleWrappers_' . $this->pageRevision->getPageRevisionId() . '_' . $langcode);
     if (($moduleWrappers = $this->app->cache->load($cacheName)) === false) {
         $moduleWrappers = $this->pageRevision->getPageModuleWrappers($langcode);
         $this->app->cache->save($moduleWrappers, $cacheName);
     }
     return $moduleWrappers;
 }
Beispiel #2
0
 public function sortItems($params)
 {
     ModuleSortorderQuery::create()->filterByPageRevision($this->pageRevision)->delete();
     $wrappers = $this->pageRevision->getPageModuleWrappers();
     $unsortedIds = ArrayHelper::objectsToArray($wrappers, false, 'getPageModuleId');
     $wrapperById = ArrayHelper::objectsToArray($wrappers, 'getPageModuleId');
     // Get primary keys
     $items = $_POST['item'];
     if (!is_array($items)) {
         throw new Exception('Expected array POST variable `item`.');
     }
     $sortedIds = array();
     foreach ($items as $item) {
         $pk = json_decode($item, true);
         if ($pk === null) {
             throw new Exception('Invalid primary key for item: ' . $item);
         }
         if (!array_key_exists($pk, $wrapperById)) {
             throw new Exception('Module not found when sorting');
         }
         $sortedIds[] = $pk;
     }
     if ($sortedIds !== $unsortedIds) {
         foreach ($wrappers as $wrapper) {
             $sortorder = $wrapper->getSortorder(true);
             $sortorder->insertAtBottom();
             $sortorder->save();
         }
         $pks = array();
         foreach ($sortedIds as $id) {
             $pks[] = array($id, $this->pageRevision->getPageRevisionId());
         }
         Propel::sortableReorder($pks, 'ModuleSortorder');
     }
     $this->pageRevision->setUpdatedAt(time());
     $this->pageRevision->save();
 }
 /**
  * Constructor
  *
  * @param PageModule $pageModule
  * @param PageRevision $pageRevision
  * @param string $langcode
  */
 public function __construct(PageModule $pageModule, PageRevision $pageRevision, $langcode)
 {
     $this->pageRevisionId = $pageRevision->getPageRevisionId();
     $this->pageModuleId = $pageModule->getPageModuleId();
     $this->langcode = $langcode === null ? "" : $langcode;
     $this->reload();
 }
Beispiel #4
0
 /**
  * Render the specified page revision.
  *
  * @param PageRevision $pageRevision
  * @param Curry_Request $request
  * @param array $vars
  * @param array $options
  */
 protected function render(PageRevision $pageRevision, Curry_Request $request, array $vars, array $options)
 {
     Curry_Core::log('Showing page ' . $pageRevision->getPage()->getName() . ' (PageRevisionId: ' . $pageRevision->getPageRevisionId() . ')', Zend_Log::NOTICE);
     $time = microtime(true);
     $queries = Curry_Propel::getQueryCount();
     $cacheName = __CLASS__ . '_Page_' . md5($request->getUri());
     $cacheLifetime = $pageRevision->getPage()->getCacheLifetime();
     $doCache = $request->getMethod() === 'GET' && $cacheLifetime !== 0;
     if ($doCache) {
         ob_start();
     }
     $generator = self::createPageGenerator($pageRevision, $request);
     $generator->display($vars, $options);
     if ($doCache) {
         $cache = array('page_id' => $pageRevision->getPageId(), 'page_revision_id' => $pageRevision->getPageRevisionId(), 'headers' => headers_list(), 'content' => ob_get_flush());
         Curry_Core::$cache->save($cache, $cacheName, array(), $cacheLifetime < 0 ? false : $cacheLifetime);
     }
     if (Curry_Core::$config->curry->updateTranslationStrings) {
         Curry_Language::updateLanguageStrings();
     }
     $time = microtime(true) - $time;
     $queries = $queries !== null ? Curry_Propel::getQueryCount() - $queries : null;
     Curry_Core::triggerHook('Curry_Application::render', $pageRevision->getPageId(), $pageRevision->getPageRevisionId(), $time, $queries);
 }
Beispiel #5
0
 /**
  * Metadata form.
  *
  * @param PageRevision $pageRevision
  * @return Curry_Form
  */
 public static function getMetadataForm(PageRevision $pageRevision)
 {
     $query = PageMetadataQuery::create()->joinWith('Metadata', Criteria::RIGHT_JOIN)->addJoinCondition('Metadata', 'PageMetadata.PageRevisionId = ?', $pageRevision->getPageRevisionId())->orderBy('Metadata.SortableRank');
     $metadatas = $query->find();
     $form = new Curry_Form(array('action' => url('', array("module", "view", "page_id")), 'method' => 'post', 'elements' => array('pid_metadata' => array('hidden'))));
     $typeOptions = array('textarea' => array('rows' => 6));
     foreach ($metadatas as $pageMetadata) {
         $metadata = $pageMetadata->getMetadata();
         $options = array('label' => $metadata->getDisplayName(), 'value' => $pageMetadata->getValue() !== null ? $pageMetadata->getValue() : $metadata->getDefaultValue());
         if (isset($typeOptions[$metadata->getType()])) {
             ArrayHelper::extend($options, $typeOptions[$metadata->getType()]);
         }
         $form->addElement($metadata->getType(), $metadata->getName(), $options);
     }
     $form->addElement('submit', 'save', array('label' => 'Save'));
     return $form;
 }