/** * Get name for seo object * * @param string $object_type object type of seo object * @param int $object_id object id of seo object * @param string $dispatch dispatch of seo object * @param int $company_id Company identifier * @param string $lang_code language code * @return string name for seo object */ function fn_seo_get_name($object_type, $object_id = 0, $dispatch = '', $company_id = null, $lang_code = CART_LANGUAGE) { /** * Get name for seo object (running before fn_seo_get_name() function) * * @param string $object_type * @param int $object_id * @param string $dispatch * @param int $company_id * @param string $lang_code Two-letter language code (e.g. 'en', 'ru', etc.) */ fn_set_hook('seo_get_name_pre', $object_type, $object_id, $dispatch, $company_id, $lang_code); $company_id_condition = ''; if (fn_allowed_for('ULTIMATE')) { if ($company_id !== null) { $company_id_condition = fn_get_seo_company_condition("?:seo_names.company_id", $object_type, $company_id); } else { $company_id_condition = fn_get_seo_company_condition('?:seo_names.company_id', $object_type); if (Registry::get('runtime.company_id')) { $company_id = Registry::get('runtime.company_id'); } } } if ($company_id == null) { $company_id = ''; } $lang_code = fn_get_corrected_seo_lang_code($lang_code); $_object_id = !empty($object_id) ? $object_id : $dispatch; $name = SeoCache::get('name', $object_type, $_object_id, $company_id, $lang_code); if (is_null($name)) { $where_params = array('object_id' => $object_id, 'type' => $object_type, 'dispatch' => $dispatch, 'lang_code' => $lang_code); $seo_data = db_get_row("SELECT name, path FROM ?:seo_names WHERE ?w ?p", $where_params, $company_id_condition); if (empty($seo_data)) { if ($object_type == 's') { $alt_name = db_get_field("SELECT name FROM ?:seo_names WHERE object_id = ?i AND type = ?s AND dispatch = ?s ?p", $object_id, $object_type, $dispatch, $company_id_condition); if (!empty($alt_name)) { $name = fn_create_seo_name($object_id, $object_type, str_replace('.', '-', $dispatch), 0, $dispatch, $company_id, $lang_code); } } else { $object_name = fn_seo_get_default_object_name($object_id, $object_type, $lang_code); if (!empty($object_name)) { $name = fn_create_seo_name($object_id, $object_type, $object_name, 0, $dispatch, $company_id, $lang_code); } } } else { $name = $seo_data['name']; } $name = !empty($name) ? $name : ''; if (!empty($seo_data)) { $cache_data = array('seo_name' => $seo_data['name'], 'seo_path' => $seo_data['path']); } else { $cache_data = array('seo_name' => $name); } SeoCache::set($object_type, $_object_id, $cache_data, $company_id, $lang_code); } /** * Get name for seo object (running after fn_seo_get_name() function) * * @param string $name * @param string $object_type * @param int $object_id * @param string $dispatch * @param int $company_id * @param string $lang_code Two-letter language code (e.g. 'en', 'ru', etc.) */ fn_set_hook('seo_get_name_post', $name, $object_type, $object_id, $dispatch, $company_id, $lang_code); return $name; }