Microweber\Traits\ExtendedSave::extended_save_tags PHP Метод

extended_save_tags() публичный Метод

public extended_save_tags ( $params )
    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');
            }
        }
    }