/**
  * 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;
 }
Example #2
0
 protected function find(ModelCriteria $query, $params)
 {
     $all = $this->pageRevision->getPageModuleWrappers($this->langcode);
     $user = User::getUser();
     if ($user->hasPagePermission($this->pageRevision->getPage(), PageAccessPeer::PERM_MODULES)) {
         return $all;
     }
     $wrappers = array();
     foreach ($all as $wrapper) {
         if ($user->hasModuleAccess($wrapper)) {
             $wrappers[] = $wrapper;
         }
     }
     return $wrappers;
 }
Example #3
0
 /**
  * Get "copy code" for page revision.
  *
  * @param PageRevision $pageRevision
  * @return array
  */
 public static function getPageRevisionCode(PageRevision $pageRevision)
 {
     $modules = array();
     foreach ($pageRevision->getPageModuleWrappers() as $pmw) {
         $modules[] = self::getModuleCode($pmw);
     }
     return array("base_page" => $pageRevision->getBasePage() ? $pageRevision->getBasePage()->getUrl() : null, "description" => $pageRevision->getDescription(), "template" => $pageRevision->getTemplate(), "modules" => $modules);
 }
Example #4
0
 /**
  * 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();
 }
Example #5
0
 /**
  * Publish page revision.
  *
  * @param PageRevision $pageRevision
  */
 public function publishRevision(PageRevision $pageRevision)
 {
     $page = $pageRevision->getPage();
     $page->setActivePageRevision($pageRevision);
     $page->setWorkingPageRevision(null);
     $page->save();
     $pageRevision->setPublishedDate(time());
     $pageRevision->keepUpdateDateUnchanged();
     $pageRevision->save();
     self::updateIndex($page);
 }
Example #6
0
 private function getPagerevisions($page)
 {
     global $dRep;
     $pageId = is_object($page) ? $page->getId() : $page;
     $sql = "SELECT pageId, revisionId, authorId, dateCreated, currentRevision, published FROM ink_pages WHERE pageId = '{$pageId}' ORDER BY dateCreated DESC";
     $data = $this->runManyQuery($sql);
     $revisions = array();
     foreach ($data as $index => $row) {
         $revision = new PageRevision();
         $properties = array('id' => $row['revisionId'], 'author' => $dRep->getUser($row['authorId']), 'timestamp' => $row['dateCreated'], 'current' => $row['currentRevision'], 'published' => $row['published']);
         $revision->setProperties($properties);
         $revisions[] = $revision;
     }
     return $revisions;
 }
Example #7
0
 /**
  * Create a PageGenerator instance for the specified PageRevision.
  *
  * @param PageRevision $pageRevision
  * @param Curry_Request $request
  * @return Curry_PageGenerator
  */
 public static function createPageGenerator(PageRevision $pageRevision, Curry_Request $request)
 {
     $generatorClass = $pageRevision->getPage()->getInheritedProperty('Generator', Curry_Core::$config->curry->defaultGeneratorClass);
     return new $generatorClass($pageRevision, $request);
 }
Example #8
0
 /**
  * Save new module.
  * 
  * @todo Set module position.
  *
  * @param PageRevision $pageRevision
  * @param array $values
  * @return PageModule
  */
 public static function saveNewModule(PageRevision $pageRevision, array $values)
 {
     $pageModule = new PageModule();
     $pageModule->setUid(Helper::getUniqueId());
     $pageModule->setPageId($pageRevision->getPageId());
     if (ctype_digit($values['module_class'])) {
         $module = ModuleQuery::create()->findPk($values['module_class']);
         $pageModule->setModuleClass($module->getModuleClass());
         $pageModule->setName($values['name']);
         $pageModule->setTarget($values['target']);
         $pageModule->setContentVisibility($module->getContentVisibility());
         $pageModule->setSearchVisibility($module->getSearchVisibility());
         $template = $module->getTemplate();
     } else {
         $template = null;
         if ($values['template'] == 'new' && $values['template_name']) {
             $className = $values['module_class'];
             $predefinedTemplates = call_user_func(array($className, 'getPredefinedTemplates'));
             $root = \Curry\App::getInstance()['template.root'];
             $template = $values['template_name'];
             $templateFile = $root . DIRECTORY_SEPARATOR . $template;
             if (!file_exists($templateFile)) {
                 $dir = dirname($templateFile);
                 if (!is_dir($dir)) {
                     mkdir($dir, 0777, true);
                 }
                 $code = $predefinedTemplates[$values['predefined_template']];
                 file_put_contents($templateFile, (string) $code);
             }
         } else {
             if ($values['template']) {
                 $template = $values['template'];
             }
         }
         $target = '';
         if (!empty($values['target'])) {
             $target = $values['target'];
         } else {
             if (!empty($values['target_name'])) {
                 $target = $values['target_name'];
             }
         }
         if (empty($target)) {
             throw new Exception('Module target not set');
         }
         $pageModule = new PageModule();
         $pageModule->setUid(Helper::getUniqueId());
         $pageModule->setPageId($pageRevision->getPageId());
         $pageModule->setModuleClass($values['module_class']);
         $pageModule->setName($values['name']);
         $pageModule->setTarget($target);
         $pageModule->setContentVisibility($values['content_visibility']);
         $pageModule->setSearchVisibility($values['search_visibility']);
     }
     $pageModule->save();
     $revisionModule = new RevisionModule();
     $revisionModule->setPageModule($pageModule);
     $revisionModule->setPageRevision($pageRevision);
     $revisionModule->save();
     $moduleData = new ModuleData();
     $moduleData->setPageRevision($pageRevision);
     $moduleData->setPageModule($pageModule);
     $moduleData->setEnabled(true);
     $moduleData->setTemplate($template);
     $moduleData->save();
     // create default data
     $wrapper = new PageModuleWrapper($pageModule, $pageRevision, null);
     $wrapper->createData();
     return $pageModule;
 }