public function extended_save_tags($params)
{
if ($this->extended_save_has_permission()) {
event_trigger('mw.database.extended_save_tags', $params);
$data_to_save = $params;
$cats_modified = false;
if (isset($data_to_save['tags'])) {
if (is_string($data_to_save['tags'])) {
$data_to_save['tags'] = explode(',', $data_to_save['tags']);
}
$tags = $data_to_save['tags'];
if (is_array($tags)) {
$cats_modified = true;
foreach ($tags as $category) {
if (is_string($category) and trim($category) != '') {
$tag_id = false;
$save_cat_item = array();
$save_cat_item['rel_type'] = $data_to_save['table'];
$save_cat_item['data_type'] = 'tag';
$save_cat_item['title'] = trim($category);
$save_cat_item['single'] = true;
$check_if_tag_is_created = $this->app->category_manager->get($save_cat_item);
if (!$check_if_tag_is_created) {
//if tags is not created then make it
$tag_id = $this->app->category_manager->save($save_cat_item);
}
if (isset($check_if_tag_is_created['id'])) {
$tag_id = $check_if_tag_is_created['id'];
}
if (!$tag_id) {
continue;
}
$save_cat_item = array();
$save_cat_item['rel_type'] = $data_to_save['table'];
$save_cat_item['rel_id'] = $data_to_save['id'];
$save_cat_item['data_type'] = 'tag_item';
$save_cat_item['parent_id'] = $tag_id;
$check = $this->app->category_manager->get_items($save_cat_item);
if (is_array($check) and !empty($check)) {
foreach ($check as $item) {
if (!in_array($item['parent_id'], array($tag_id))) {
$this->app->category_manager->delete_item($item['id']);
}
}
}
if ($check == false) {
$this->app->category_manager->save_item($save_cat_item);
}
} else {
if (trim($category) != '') {
$save_cat_item = array();
$save_cat_item['rel_type'] = $data_to_save['table'];
$save_cat_item['rel_id'] = $data_to_save['id'];
$save_cat_item['data_type'] = 'tag_item';
$check = $this->app->category_manager->get_items($save_cat_item);
if (is_array($check) and !empty($check)) {
foreach ($check as $item) {
$this->app->category_manager->delete_item($item['id']);
}
}
}
}
}
}
}
if ($cats_modified != false) {
$this->app->cache_manager->delete('tags');
$this->app->cache_manager->delete('tags_items');
$this->app->cache_manager->delete('categories');
$this->app->cache_manager->delete('categories_items');
}
}
}