/** * Save page properties. * * @param Page $page * @param array $values */ public static function savePageProperties(Page $page, array $values) { $urlChanged = $page->getUrl() != $values['url']; $page->setAutoName($values['name']); $page->setEnabled($values['enabled']); $page->setVisible($values['visible']); $page->setIncludeInIndex($values['index']); // Redirection $v = $values['redirect']; $page->setRedirectMethod($v['method'] ? $v['method'] : null); if ($v['page_id'] == 'external') { $page->setRedirectUrl($v['url']); } else { $redirectPageId = (int) $v['page_id']; $page->setRedirectPageId($redirectPageId ? $redirectPageId : null); $page->setRedirectUrl(null); } // Base page and template $v = $values['base_page']; $pageRevision = $page->getPageRevision(); $pageRevision->setBasePageId($v['base_page_id'] ? (int) $v['base_page_id'] : null); // Advanced $v = $values['advanced']; $page->setImage($v['image']); $pageRevision->setTemplate($v['template'] ? $v['template'] : null); $page->setLangcode(strlen($v['langcode']) ? $v['langcode'] : null); $page->setModelRoute($v['model_route'] ? $v['model_route'] : null); $page->setCacheLifetime((int) $v['cache_lifetime']); $page->setGenerator(strlen($v['generator']) ? $v['generator'] : null); $page->setEncoding(strlen($v['encoding']) ? $v['encoding'] : null); // Save page/revision $pageRevision->save(); $page->save(); // Update url recursively if (empty($values['url'])) { // reset url $page->setUrlRecurse($page->getExpectedUrl()); } else { if ($urlChanged) { // set new url $url = $values['url']; if (substr($url, -1) != '/') { $url .= '/'; } if ($url != '/' && substr($url, 0, 1) == '/') { $url = substr($url, 1); } $page->setUrlRecurse($url); } } }
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; }