/** * Validates if URL is valid * @param array $seo parsed data of target object * @param string $path URL path * @param array $objects list of objects in URL path * @return boolean true if object is valid, false - otherwise */ function fn_seo_validate_object($seo, $path, $objects) { $result = true; if (Registry::get('addons.seo.single_url') == 'Y' && $seo['lang_code'] != Registry::get('settings.Appearance.frontend_default_language')) { return false; } if (!empty($objects['sl']) && $objects['sl'] != $seo['lang_code'] && Registry::get('addons.seo.single_url') != 'Y') { return false; } if (AREA == 'C') { $avail_langs = fn_get_simple_languages(!empty($_SESSION['auth']['area']) && $_SESSION['auth']['area'] == 'A'); $obj_sl = !empty($objects['sl']) ? $objects['sl'] : $seo['lang_code']; if (!in_array($obj_sl, array_keys($avail_langs))) { return false; } } if (preg_match('/^(.*\\/)?((' . $objects['object_name'] . ')(([\\/\\-]page[\\-]?[\\d]*)?(\\/|(\\' . SEO_FILENAME_EXTENSION . '))?)?)$/', $path, $matches)) { // remove object from path $path = substr_replace($path, '', strrpos($path, $matches[2])); } if (Registry::get('addons.seo.seo_language') == 'Y') { $path = substr($path, 3); // remove language prefix } $path = rtrim($path, '/'); // remove trailing slash $vars = fn_get_seo_vars($seo['type']); // check parent objects $result = fn_seo_validate_parents($path, $seo['path'], !empty($vars['parent_type']) ? $vars['parent_type'] : $seo['type'], $vars, $seo['lang_code']); if ($result) { if (fn_check_seo_schema_option($vars, 'html_options')) { $result = !empty($objects['extension']); } else { $result = empty($objects['extension']); } } // Deprecated fn_set_hook('validate_sef_object', $path, $seo, $vars, $result, $objects); return $result; }
function fn_news_and_emails_validate_sef_object($path, $seo, $vars, &$result, $objects) { if ($seo['type'] == 'n') { $result = empty($objects['extension']) ? false : fn_seo_validate_parents($path, '', 'n', true, $seo['lang_code']); } }