function fn_get_seo_redirects($params = array(), $items_per_page = 0, $lang_code = DESCR_SL) { // Init filter $params = LastView::instance()->update('seo_redirects', $params); // Set default values to input params $default_params = array('page' => 1, 'items_per_page' => $items_per_page); $params = array_merge($default_params, $params); $condition = ''; if (isset($params['src']) && fn_string_not_empty($params['src'])) { $condition .= db_quote(" AND src LIKE ?l", "%" . trim($params['src']) . "%"); } if (!empty($params['type'])) { $condition .= db_quote(" AND type = ?s", $params['type']); } if (!empty($params['lang_code'])) { $condition .= db_quote(" AND lang_code = ?s", $params['lang_code']); } $condition .= fn_get_seo_company_condition('?:seo_redirects.company_id'); $limit = ''; if (!empty($params['items_per_page'])) { $params['total_items'] = db_get_field("SELECT COUNT(*) FROM ?:seo_redirects WHERE 1 ?p", $condition); $limit = db_paginate($params['page'], $params['items_per_page']); } $seo_redirects = db_get_hash_array("SELECT * FROM ?:seo_redirects WHERE 1 ?p ORDER BY src {$limit}", 'redirect_id', $condition); if (!empty($seo_redirects)) { foreach ($seo_redirects as $key => $seo_redirect) { $seo_redirects[$key]['parsed_url'] = fn_generate_seo_url_from_schema($seo_redirect); } } return array($seo_redirects, $params); }
function fn_seo_settings_update($type, $option, $new_value, $redirect_only) { $old_value = Registry::get('addons.seo.' . $option); fn_iterate_through_seo_names(function ($seo_name) use($option, $old_value, $new_value, $redirect_only) { // We shouldn't consider null value if (false === fn_check_seo_object_exists($seo_name['object_id'], $seo_name['type'], $seo_name['company_id'])) { fn_delete_seo_name($seo_name['object_id'], $seo_name['type'], '', $seo_name['company_id']); return; } Registry::set('addons.seo.' . $option, $old_value); $url = fn_generate_seo_url_from_schema(array('type' => $seo_name['type'], 'object_id' => $seo_name['object_id'], 'lang_code' => $seo_name['lang_code']), false); fn_seo_update_redirect(array('src' => $url, 'type' => $seo_name['type'], 'object_id' => $seo_name['object_id'], 'company_id' => $seo_name['company_id'], 'lang_code' => $seo_name['lang_code']), 0, false); if (!$redirect_only) { Registry::set('addons.seo.' . $option, $new_value); fn_create_seo_name($seo_name['object_id'], $seo_name['type'], $seo_name['name'], 0, '', $seo_name['company_id'], $seo_name['lang_code'], true); } }, db_quote("type = ?s ?p", $type, fn_get_seo_company_condition('?:seo_names.company_id', $type))); }
function fn_seo_settings_update($type, $option, $new_value, $redirect_only) { $i = 0; $items_per_pass = 100; $old_value = Registry::get('addons.seo.' . $option); $company_condition = fn_get_seo_company_condition('?:seo_names.company_id', $type); while ($update_data = db_get_array("SELECT * FROM ?:seo_names WHERE type = ?s ?p LIMIT {$i}, {$items_per_pass}", $type, $company_condition)) { foreach ($update_data as $data) { Registry::set('addons.seo.' . $option, $old_value); $url = fn_generate_seo_url_from_schema(array('type' => $data['type'], 'object_id' => $data['object_id'], 'lang_code' => $data['lang_code']), false); fn_seo_update_redirect(array('src' => $url, 'type' => $data['type'], 'object_id' => $data['object_id'], 'company_id' => $data['company_id'], 'lang_code' => $data['lang_code']), 0, false); if (!$redirect_only) { Registry::set('addons.seo.' . $option, $new_value); fn_create_seo_name($data['object_id'], $data['type'], $data['name'], 0, '', $data['company_id'], $data['lang_code'], true); } } $i += $items_per_pass; } }
/** * Gets parent URI and suffix of SEO url * @param integert $object_id object ID * @param string $object_type object type * @return array prefix (uri) and suffix (extension) */ function fn_get_seo_parent_uri($object_id, $object_type, $lang_code = CART_LANGUAGE) { $url = fn_generate_seo_url_from_schema(array('object_id' => $object_id, 'type' => $object_type, 'lang_code' => $lang_code), false); $aurl = explode('/', $url); array_pop($aurl); $seo_var = fn_get_seo_vars($object_type); return array('prefix' => implode('/', $aurl) . '/', 'suffix' => fn_check_seo_schema_option($seo_var, 'html_options') ? SEO_FILENAME_EXTENSION : ''); }