/**
  * 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();
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 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();
 }