/** * BUILD SINGLE XML LOC FRAGMENT * * @param $loc (string) full article url [including lang] * @param $lastmod (string) article last modified date [UNIX date] * @param $changefreq (string) change frequency [never|yearly|monthly|weekly|daily|hourly|always] * @param $priority (float) priority [maximum: 1.0] * * @return (string) xml location fragment */ private function xml_loc_fragment($loc, $lastmod, $changefreq, $priority) { $xml_loc = "\t" . '<url>' . PHP_EOL . "\t\t" . '<loc>' . seo42::getServerUrl() . seo42::trimUrl($loc) . '</loc>' . PHP_EOL . "\t\t" . '<lastmod>' . $lastmod . '</lastmod>' . PHP_EOL . "\t\t" . '<changefreq>' . $changefreq . '</changefreq>' . PHP_EOL . "\t\t" . '<priority>' . number_format($priority, 1, ".", "") . '</priority>' . PHP_EOL . "\t" . '</url>' . PHP_EOL; return $xml_loc; }
/** * REWRITE() * * rewrite URL * @param $params from EP URL_REWRITE */ function rewrite($params) { // URL ALREADY SET BY OTHER EXTENSION if ($params['subject'] != '') { return $params['subject']; } // EP "SEO42_PRE_REWRITE" $url = rex_register_extension_point('SEO42_PRE_REWRITE', false, $params); if ($url !== false) { return $url; } global $REX, $SEO42_IDS; $id = $params['id']; $name = $params['name']; $clang = $params['clang']; $subdir = ''; // 42 | $REX['ADDON']['seo42']['settings']['install_subdir'] $notfound_id = $REX['NOTFOUND_ARTICLE_ID']; // GET PARAMS STRING $urlparams = self::makeUrlParams($params); // GET URL FROM PATHLIST AND APPEND PARAMS if (isset($SEO42_IDS[$id]) && isset($SEO42_IDS[$id][$clang])) { $base_url = $SEO42_IDS[$id][$clang]['url']; $url = $base_url . $urlparams; $notfound = false; } else { // RexDude $url = ''; $base_url = ''; if (!empty($SEO42_IDS)) { if (!isset($SEO42_IDS[$notfound_id][$clang]['url'])) { $clang = $REX['START_CLANG_ID']; } $url = $base_url = $SEO42_IDS[$notfound_id][$clang]['url']; } $notfound = true; } // URL START // 42 if ($REX['REDAXO'] && !(rex_request('page', 'string') == 'seo42' && rex_request('subpage', 'string') == 'help')) { // for seo42 debug page urls should look like in frontend $subdir = ''; } else { $subdir = seo42::getUrlStart() . $subdir; } // HACK: EP URL_REWRITE WON'T ACCEPT EMPTY STRING AS RETURN if ($subdir == '' && $url == '') { $url = ' '; } // str_replace fixes a caching bug that appears while updating specific // modules/slices in the redaxo backend $url = str_replace('/redaxo/', '/', $subdir . $url); // retrieve trimmend url $trimmedUrl = seo42::trimUrl($url); // external urls / javascript urls etc. so we have to remove the url start string if (!seo42_utils::isInternalCustomUrl($trimmedUrl)) { $url = $trimmedUrl; } // EP "SEO42_POST_REWRITE" $ep_params = array('article_id' => $id, 'clang' => $clang, 'notfound' => $notfound, 'base_url' => $base_url, 'subdir' => $subdir, 'urlparams' => $urlparams, 'params' => $params['params'], 'divider' => $params['divider']); $url = rex_register_extension_point('SEO42_POST_REWRITE', $url, $ep_params); return $url; }