public function merge_tag() { if ( empty(query::$get['master']) || !is_numeric(query::$get['master']) || empty(query::$get['slave']) || !is_numeric(query::$get['slave']) ) { return; } if (query::$get['master'] != query::$get['slave']) { $master = Database::get_full_row('tag', query::$get['master']); $slave = Database::get_full_row('tag', query::$get['slave']); $old_count = $master['post_main'] + $master['post_flea_market'] + $master['video_main'] + $master['video_flea_market'] + $master['art_main'] + $master['art_flea_market']; $params = array( '%|'.$master['alias'].'|%', '|'.$slave['alias'].'|', '|'.$slave['alias'].'|', '|'.$master['alias'].'|', ); Database::sql('update post set tag = if (tag like ?, replace(tag, ?, "|"), replace(tag, ?, ?))', $params); Database::sql('update video set tag = if (tag like ?, replace(tag, ?, "|"), replace(tag, ?, ?))', $params); Database::sql('update art set tag = if (tag like ?, replace(tag, ?, "|"), replace(tag, ?, ?))', $params); $variants = explode('|', $master['variants'].$slave['variants']); if ($slave['name'] != $master['name']) { $variants[] = $slave['name']; } $params_main = array('|'.$master['alias'].'|', 'main'); $params_flea = array('|'.$master['alias'].'|', 'flea_market'); $update = array( 'post_main' => Database::get_count('post', 'locate(?, tag) and area = ?', $params_main), 'post_flea_market' => Database::get_count('post', 'locate(?, tag) and area = ?', $params_flea), 'video_main' => Database::get_count('video', 'locate(?, tag) and area = ?', $params_main), 'video_flea_market' => Database::get_count('video', 'locate(?, tag) and area = ?', $params_flea), 'art_main' => Database::get_count('art', 'locate(?, tag) and area = ?', $params_main), 'art_flea_market' => Database::get_count('art', 'locate(?, tag) and area = ?', $params_flea), 'variants' => '|'.implode('|',array_unique(array_filter($variants))).'|', 'color' => empty($master['color']) ? $slave['color'] : $master['color'] ); Database::update('tag', $update, query::$get['master']); Database::delete('tag', query::$get['slave']); $add_count = array_sum(array_slice($update,0,6)) - $old_count; engine::add_res("Тег {$slave['name']} успешно влит в {$master['name']}. ". "Счет {$master['name']} подрос на $add_count нахождений.", false, true); } }