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))); }
if (!empty($v['name'])) { fn_create_seo_name(0, 's', $v['name'], 0, $v['rule_params'], '', fn_get_corrected_seo_lang_code(DESCR_SL)); } } } } if ($mode == 'm_delete') { if (!empty($_REQUEST['dispatches'])) { foreach ($_REQUEST['dispatches'] as $v) { fn_delete_seo_name(0, 's', $v); } } } if ($mode == 'delete') { if (!empty($_REQUEST['rule_params'])) { fn_delete_seo_name(0, 's', $_REQUEST['rule_params']); } } return array(CONTROLLER_STATUS_OK, "seo_rules.manage"); } if ($mode == 'manage') { list($seo_data, $search) = fn_get_seo_rules($_REQUEST, Registry::get('settings.Appearance.admin_elements_per_page')); Tygh::$app['view']->assign('seo_data', $seo_data); Tygh::$app['view']->assign('search', $search); } function fn_get_seo_rules($params = array(), $items_per_page = 0, $lang_code = DESCR_SL) { $condition = fn_get_seo_company_condition('?:seo_names.company_id'); $lang_code = fn_get_corrected_seo_lang_code($lang_code); $global_total = db_get_fields("SELECT dispatch FROM ?:seo_names WHERE object_id = '0' AND type = 's' ?p GROUP BY dispatch", $condition); $local_total = db_get_fields("SELECT dispatch FROM ?:seo_names WHERE object_id = '0' AND type = 's' AND lang_code = ?s ?p", $lang_code, $condition);
function fn_seo_check_and_update_product_sharing(&$product_id, &$shared, &$shared_categories_company_ids, &$new_categories_company_ids) { $deleted_company_ids = array_diff($shared_categories_company_ids, $new_categories_company_ids); if (!empty($deleted_company_ids)) { foreach ($deleted_company_ids as $c_id) { fn_delete_seo_name($product_id, 'p', '', $c_id); db_query("DELETE FROM ?:seo_redirects WHERE object_id = ?i AND type = 'p' AND company_id = ?i", $product_id, $c_id); } } }
function fn_seo_delete_news(&$news_id) { return fn_delete_seo_name($news_id, 'n'); }
if ($mode == 'delete_rules') { if (!empty($_REQUEST['controllers'])) { foreach ($_REQUEST['controllers'] as $v) { fn_delete_seo_name(0, 's', $v); } } } return array(CONTROLLER_STATUS_OK, "seo_rules.manage"); } if ($mode == 'manage') { list($seo_data, $search) = fn_get_seo_rules($_REQUEST, Registry::get('settings.Appearance.admin_elements_per_page')); $view->assign('seo_data', $seo_data); $view->assign('search', $search); } elseif ($mode == 'delete_rule') { if (!empty($_REQUEST['controller'])) { fn_delete_seo_name(0, 's', $_REQUEST['controller']); } return array(CONTROLLER_STATUS_OK, "seo_rules.manage"); } function fn_get_seo_rules($params = array(), $items_per_page = 0, $lang_code = DESCR_SL) { $lang_code = fn_get_corrected_seo_lang_code($lang_code); $global_total = db_get_fields("SELECT dispatch FROM ?:seo_names WHERE object_id = '0' AND type = 's' GROUP BY dispatch"); $local_total = db_get_fields("SELECT dispatch FROM ?:seo_names WHERE object_id = '0' AND type = 's' AND lang_code = ?s", $lang_code); if ($diff = array_diff($global_total, $local_total)) { foreach ($diff as $disp) { fn_create_seo_name(0, 's', str_replace('.', '-', $disp), 0, $disp, DESCR_SL); } } // Init filter $params = fn_init_view('seo_rules', $params);
if ($mode == 'm_delete') { if (!empty($_REQUEST['dispatches'])) { foreach ($_REQUEST['dispatches'] as $v) { fn_delete_seo_name(0, 's', $v); } } } return array(CONTROLLER_STATUS_OK, "seo_rules.manage"); } if ($mode == 'manage') { list($seo_data, $search) = fn_get_seo_rules($_REQUEST, Registry::get('settings.Appearance.admin_elements_per_page')); Registry::get('view')->assign('seo_data', $seo_data); Registry::get('view')->assign('search', $search); } elseif ($mode == 'delete') { if (!empty($_REQUEST['rule_dispatch'])) { fn_delete_seo_name(0, 's', $_REQUEST['rule_dispatch']); } return array(CONTROLLER_STATUS_OK, "seo_rules.manage"); } function fn_get_seo_rules($params = array(), $items_per_page = 0, $lang_code = DESCR_SL) { $condition = fn_get_seo_company_condition('?:seo_names.company_id'); $lang_code = fn_get_corrected_seo_lang_code($lang_code); $global_total = db_get_fields("SELECT dispatch FROM ?:seo_names WHERE object_id = '0' AND type = 's' ?p GROUP BY dispatch", $condition); $local_total = db_get_fields("SELECT dispatch FROM ?:seo_names WHERE object_id = '0' AND type = 's' AND lang_code = ?s ?p", $lang_code, $condition); if ($diff = array_diff($global_total, $local_total)) { foreach ($diff as $disp) { fn_create_seo_name(0, 's', str_replace('.', '-', $disp), 0, $disp, '', DESCR_SL); } } // Init filter