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