/** * Adds a new Page row with specified parent Id. * * @param int $parentId */ protected function addNewChildPage($parentId) { $db = Propel::getConnection(PagePeer::DATABASE_NAME); //$db->beginTransaction(); $parent = PagePeer::retrieveByPK($parentId); $page = new Page(); $page->setTitle('new page ' . time()); $page->insertAsLastChildOf($parent); $page->save(); //$db->commit(); }
/** * Restore multiple pages from "copy code". * * @param Page $page * @param array $pageData * @param bool|array $subpages * @return array * @throws Exception */ public static function restorePages(Page $page, array $pageData, $subpages) { // url => Page $pages = array(); // Restore object $p = new stdClass(); $p->data = $pageData; $p->parent = null; $p->page = $page; // Flatten pages to restore $pageDatas = array(); $stack = array($p); while (count($stack)) { $p = array_shift($stack); foreach ($p->data['pages'] as $sub) { $sp = new stdClass(); $sp->data = $sub; $sp->parent = $p; $sp->page = $p->page ? PageQuery::create()->childrenOf($p->page)->filterByName($sub['name'])->findOne() : null; array_push($stack, $sp); } if (is_bool($subpages) || is_array($subpages) && in_array($p->data['id'], $subpages)) { $pageDatas[$p->data['url']] = $p; } if ($subpages === false) { break; } } // Create pages foreach ($pageDatas as $p) { if (isset($pages[$p->data['url']])) { continue; } if (!$p->page) { $parent = $p->parent->page; if (!$parent) { throw new Exception('Parent page not found for page: ' . $p->data['name']); } $pp = new Page(); if (!PageQuery::create()->findOneByUid($p->data['uid'])) { $pp->setUid($p->data['uid']); } $pp->insertAsLastChildOf($parent); $pp->save(); $pp->setAutoName($p->data['name']); $pp->save(); $p->page = $pp; } $pages[$p->data['url']] = $p->page; } // Rearrange pages depending on base page $alreadyMoved = array(); foreach ($pageDatas as $url => $p) { $basePage = $p->data['revision']['base_page']; if ($basePage && isset($pageDatas[$basePage]) && !isset($alreadyMoved[$basePage])) { $alreadyMoved[$basePage] = true; ArrayHelper::insertBefore($pageDatas, array($basePage => $pageDatas[$basePage]), $url); } } // Restore page data foreach ($pageDatas as $p) { self::restorePage($pages[$p->data['url']], $p->data, $pages); } return $pages; }
public function saveConfiguration($values) { // Create admin role $access = array('*', 'Curry_Backend_Content/*'); $adminRole = self::createRole('Administrator', $access); if ($adminRole->isNew()) { self::createFilebrowserAccess($adminRole, 'Root', ''); } // Create editor role $access = array('Curry_Backend_FileBrowser', 'Curry_Backend_Page', 'Curry_Backend_Profile', 'Curry_Backend_Translations', 'Curry_Backend_Content/*'); $editorRole = self::createRole('Editor', $access); if ($editorRole->isNew()) { self::createFilebrowserAccess($editorRole, 'Shared', 'content/shared/'); } // Create admin user if ($values['admin']['username']) { $adminUser = self::createUser($values['admin']['username'], $values['admin']['password'], $adminRole); $adminUser->save(); } // Create default meta-data items $metadatas = array('Title' => 'text', 'Keywords' => 'textarea', 'Description' => 'textarea', 'Image' => 'previewImage'); foreach ($metadatas as $name => $type) { $metadata = new \Metadata(); $metadata->setName($name); $metadata->setDisplayName($name); $metadata->setType($type); $metadata->save(); } // Create pages $rootPage = new \Page(); $rootPage->setName("Root"); $rootPage->setURL("root/"); $rootPage->setVisible(true); $rootPage->setEnabled(true); $rootPage->makeRoot(); $rootPage->save(); $rootPage->createDefaultRevisions($rootPage); $rootPage->save(); $templatePage = new \Page(); $templatePage->setName('Templates'); $templatePage->setURL("templates/"); $templatePage->setIncludeInIndex(false); $templatePage->insertAsLastChildOf($rootPage); $templatePage->save(); $templatePage->createDefaultRevisions(); $pageRevision = $templatePage->getWorkingPageRevision(); $pageRevision->setTemplate('Root.html.twig'); $templatePage->save(); $homePage = new \Page(); $homePage->setName('Home'); $homePage->setURL("/"); $homePage->setVisible(true); $homePage->setEnabled(true); $homePage->insertAsLastChildOf($rootPage); $homePage->save(); $homePage->createDefaultRevisions($templatePage); $homePage->save(); // Create page access objects $pa = new \PageAccess(); $pa->setUserRole($adminRole); $pa->setPage($rootPage); $pa->setPermSubpages(true); $pa->setPermVisible(true); $pa->setPermCreatePage(true); $pa->setPermCreateModule(true); $pa->setPermPublish(true); $pa->setPermProperties(true); $pa->setPermContent(true); $pa->setPermMeta(true); $pa->setPermModules(true); $pa->setPermRevisions(true); $pa->setPermPermissions(true); $pa->save(); $pa = new \PageAccess(); $pa->setUserRole($editorRole); $pa->setPage($rootPage); $pa->setPermSubpages(true); $pa->setPermVisible(true); $pa->setPermCreatePage(true); $pa->setPermCreateModule(true); $pa->setPermPublish(true); $pa->setPermProperties(true); $pa->setPermContent(true); $pa->setPermMeta(true); $pa->setPermModules(true); $pa->setPermRevisions(true); $pa->setPermPermissions(false); $pa->save(); $pa = new \PageAccess(); $pa->setUserRole($editorRole); $pa->setPage($templatePage); $pa->setPermSubpages(true); $pa->setPermVisible(false); $pa->setPermCreatePage(false); $pa->setPermCreateModule(false); $pa->setPermPublish(false); $pa->setPermProperties(false); $pa->setPermContent(false); $pa->setPermMeta(false); $pa->setPermModules(false); $pa->setPermRevisions(false); $pa->setPermPermissions(false); $pa->save(); // Create template root $templateRoot = $this->app['template.root']; if (!file_exists($templateRoot)) { @mkdir($templateRoot, 0777, true); } if (file_exists($this->app['configPath'])) { $config = $this->app->openConfiguration(); $config->name = $values['name']; $config->adminEmail = $values['email']; if (!isset($config->backend)) { $config->backend = array(); } $config->backend->templatePage = $templatePage->getPageId(); if ($values['base_url']) { $config->baseUrl = $values['base_url']; } else { unset($config->baseUrl); } $config->developmentMode = (bool) $values['development_mode']; $config->secret = sha1(uniqid(mt_rand(), true) . microtime()); $this->app->writeConfiguration($config); } return true; }
public function createPage($iParentId, $sPageName) { $oParentPage = PageQuery::create()->findPk($iParentId); if ($oParentPage == null) { $oParentPage = PagePeer::getRootPage(); } $sPageTitle = $sPageName; $sPageName = StringUtil::normalizeToASCII($sPageName); if (!$sPageName) { // If all we have are special chars, leave the page name as is and only normalize minimally $sPageName = $sPageTitle; } $sPageName = StringUtil::normalizePath($sPageName); if (PagePeer::pageIsNotUnique($sPageName, $oParentPage)) { $oFlash = Flash::getFlash(); $oFlash->addMessage('page.name_unique_required'); $oFlash->finishReporting(); throw new ValidationException($oFlash); } $oPage = new Page(); $oPage->setName($sPageName); $oPageString = new PageString(); $oPageString->setLanguageId(AdminManager::getContentLanguage()); $oPageString->setIsInactive(false); $oPageString->setLinkText(null); $oPageString->setPageTitle($sPageTitle); $oPage->addPageString($oPageString); $oPage->setPageType('default'); $oPage->setTemplateName($oParentPage->getTemplateName()); $oPage->setIsInactive(true); $oPage->insertAsLastChildOf($oParentPage); return $oPage->save(); }