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; }