/** * Create the redirection of an alias * * @return boolean true on success, false on failure * @access public * @static */ function redirect() { //get aliases for current folder $dirname = array_pop(explode(DIRECTORY_SEPARATOR, dirname($_SERVER['SCRIPT_NAME']))); $aliases = CMS_module_cms_aliases::getByName($dirname); if (!$aliases) { //no alias found, go to 404 CMS_grandFather::raiseError('No alias found for directory ' . dirname($_SERVER['SCRIPT_NAME'])); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } //check each aliases returned to get the one which respond to current alias $matchAlias = false; $domain = @parse_url($_SERVER['REQUEST_URI'], PHP_URL_HOST) ? @parse_url($_SERVER['REQUEST_URI'], PHP_URL_HOST) : (@parse_url($_SERVER['HTTP_HOST'], PHP_URL_HOST) ? @parse_url($_SERVER['HTTP_HOST'], PHP_URL_HOST) : $_SERVER['HTTP_HOST']); $websites = array(); if ($domain) { $websites = CMS_websitesCatalog::getWebsitesFromDomain($domain); } foreach ($aliases as $alias) { if (!$matchAlias && dirname($_SERVER['SCRIPT_NAME']) == substr($alias->getPath(), 0, -1)) { if ($websites) { foreach ($websites as $website) { //alias match path, check for website if (!$alias->getWebsites() || !$website || in_array($website->getId(), $alias->getWebsites())) { //alias match website, use it $matchAlias = $alias; } } } else { //alias match path, check for website if (!$alias->getWebsites()) { //alias match website, use it $matchAlias = $alias; } } } } if (!$matchAlias) { //no alias found, go to 404 CMS_grandFather::raiseError('No alias found for directory ' . dirname($_SERVER['SCRIPT_NAME']) . ' and domain ' . $domain); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } //if alias is used as a page url, return page if ($matchAlias->urlReplaced()) { if (io::isPositiveInteger($matchAlias->getPageID())) { $page = CMS_tree::getPageById($matchAlias->getPageID()); } else { //no valid page set, go to 404 $matchAlias->raiseError('No page set for alias ' . $matchAlias->getID()); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } if (!$page || $page->hasError()) { //no valid page found, go to 404 $matchAlias->raiseError('Invalid page ' . $matchAlias->getPageID() . ' for alias ' . $matchAlias->getID()); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } //return page path $pPath = $page->getHTMLURL(false, false, PATH_RELATIVETO_FILESYSTEM); if ($pPath) { if (file_exists($pPath)) { return $pPath; } elseif ($page->regenerate(true)) { clearstatcache(); if (file_exists($pPath)) { return $pPath; } } } //no valid url page found, go to 404 $matchAlias->raiseError('Invalid url page ' . $matchAlias->getPageID() . ' for alias ' . $matchAlias->getID()); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } else { //this is a redirection $params = isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] ? '?' . $_SERVER['QUERY_STRING'] : ''; if (isset($_SERVER['HTTP_REFERER'])) { header("Referer: " . $_SERVER['HTTP_REFERER']); } if (io::isPositiveInteger($matchAlias->getPageID())) { //it's a redirection to an Automne Page $page = CMS_tree::getPageById($matchAlias->getPageID()); if ($page && !$page->hasError()) { $pageURL = CMS_tree::getPageValue($matchAlias->getPageID(), 'url'); if ($pageURL) { CMS_view::redirect($pageURL . $params, true, $matchAlias->isPermanent() ? 301 : 302); } else { //no valid url page found, go to 404 $matchAlias->raiseError('Invalid url page ' . $matchAlias->getPageID() . ' for alias ' . $matchAlias->getID()); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } } else { //no valid page found, go to 404 $matchAlias->raiseError('Invalid page ' . $matchAlias->getPageID() . ' for alias ' . $matchAlias->getID()); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } } elseif ($matchAlias->getURL()) { //it's a redirection to an URL CMS_view::redirect($matchAlias->getURL(), true, $matchAlias->isPermanent() ? 301 : 302); } else { //no valid redirection found, go to 404 $matchAlias->raiseError('Invalid redirection for alias ' . $matchAlias->getID()); CMS_view::redirect(PATH_SPECIAL_PAGE_NOT_FOUND_WR, true, 301); } } }
// Current alias object to manipulate if ($aliasId) { $item = CMS_module_cms_aliases::getByID($aliasId); if (io::isPositiveInteger($item->getParent())) { $parentAlias = CMS_module_cms_aliases::getByID($item->getParent()); } } else { $item = new CMS_resource_cms_aliases(); if (io::isPositiveInteger($fatherId)) { // Parent alias $parentAlias = CMS_module_cms_aliases::getByID($fatherId); } } $items = array(); $selectContent = array(); $aliases = CMS_module_cms_aliases::getAll(false, true); foreach ($aliases as $alias) { if ($alias->getID() != $item->getID() && !$alias->hasParent($item->getID())) { $lineage = $alias->getPath(); $selectContent[$lineage] = array($alias->getID(), $lineage); } } ksort($selectContent); array_unshift($selectContent, array(0, '/')); $selectContent = sensitiveIO::jsonEncode(array_values($selectContent)); $controlerURL = PATH_ADMIN_MODULES_WR . '/' . $codename . '/controler.php'; $parentId = isset($parentAlias) && is_object($parentAlias) ? $parentAlias->getId() : 0; //mandatory $mandatory = '<span class="atm-red">*</span> '; //create pseudo href for redirection infos $href = new CMS_href();
/** * Method used for compatibility with cms_aliases V1 * * @return string * @access public */ function redirect() { return CMS_module_cms_aliases::redirect(); }
if ($aliasId) { $log->logMiscAction(CMS_log::LOG_ACTION_RESOURCE_EDIT_CONTENT, $cms_user, 'Edit Alias ' . $item->getPath(), 'cms_aliases'); } else { $log->logMiscAction(CMS_log::LOG_ACTION_RESOURCE_EDIT_CONTENT, $cms_user, 'Create Alias ' . $item->getPath(), 'cms_aliases'); } $cms_message = $cms_language->getMessage(MESSAGE_ACTION_OPERATION_DONE); $content = array('success' => true, 'id' => $item->getID()); } } } else { $cms_message = $cms_language->getMessage(MESSAGE_ERROR_ALIAS_PROTECTED, false, 'cms_aliases'); $item->raiseError('Error during modification of alias ' . $item->getID() . '. Alias is protected.'); } break; case 'delete': $item = CMS_module_cms_aliases::getByID($aliasId); if (!$item->isProtected()) { $path = $item->getPath(); if ($item->destroy()) { //Log action $log = new CMS_log(); $log->logMiscAction(CMS_log::LOG_ACTION_RESOURCE_DELETE, $cms_user, 'Delete Alias ' . $path, 'cms_aliases'); $cms_message = $cms_language->getMessage(MESSAGE_ACTION_OPERATION_DONE); $content = array('success' => true); } else { $cms_message = $cms_language->getMessage(MESSAGE_PAGE_ACTION_DELETE_ERROR); } } else { $cms_message = $cms_language->getMessage(MESSAGE_ERROR_ALIAS_PROTECTED, false, 'cms_aliases'); $category->raiseError('Error during modification of alias ' . $item->getID() . '. Alias is protected.'); }
$module = CMS_modulesCatalog::getByCodename($codename); if (!$module) { CMS_grandFather::raiseError('Unknown module or module for codename : ' . $codename); $view->show(); } //CHECKS user has module clearance if (!$cms_user->hasModuleClearance($codename, CLEARANCE_MODULE_EDIT)) { CMS_grandFather::raiseError('User has no rights on module : ' . $codename); $view->setActionMessage($cms_language->getmessage(MESSAGE_ERROR_MODULE_RIGHTS, array($module->getLabel($cms_language)))); $view->show(); } //get queried module aliases if ($pageId) { $aliases = CMS_module_cms_aliases::getAllByPage($rootId, $pageId, true); } else { $aliases = CMS_module_cms_aliases::getAll($rootId, true); } $nodes = array(); foreach ($aliases as $alias) { $hasSiblings = $alias->hasSubAliases(); if ($alias->hasError()) { $label = ($alias->getWebsites() ? '<span style="color:red;">*</span>' : '') . '<span style="color:red;">' . $alias->getAlias() . '</span>'; } elseif ($pageId && $alias->getPageID() == $pageId && $alias->urlReplaced()) { $label = ($alias->getWebsites() ? '<span style="color:red;">*</span>' : '') . '<span style="color:green;">' . $alias->getAlias() . '</span>'; } else { $label = ($alias->getWebsites() ? '<span style="color:red;">*</span>' : '') . $alias->getAlias(); } if ($alias->hasError()) { $qtip = '<span style="color:red;"><strong>' . $cms_language->getMessage(MESSAGE_PAGE_ALIAS_ERROR, false, 'cms_aliases') . '</strong></span><br />'; } else { $qtip = $cms_language->getMessage(MESSAGE_PAGE_ALIAS, false, 'cms_aliases') . ' <strong>' . $alias->getPath() . '</strong><br />';