/** * 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); } } }