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