Microweber\Providers\Content\ContentManagerHelpers::save_content_field PHP Method

save_content_field() public method

public save_content_field ( $data, $delete_the_cache = true )
    public function save_content_field($data, $delete_the_cache = true)
    {
        $adm = $this->app->user_manager->is_admin();
        $table = $this->tables['content_fields'];
        $table_drafts = $this->tables['content_fields_drafts'];
        if ($adm == false) {
            return false;
        }
        if (!is_array($data)) {
            $data = array();
        }
        if (isset($data['is_draft'])) {
            $table = $table_drafts;
        }
        $data = $this->app->format->strip_unsafe($data);
        if (isset($data['is_draft']) and isset($data['url'])) {
            $draft_url = $this->app->database_manager->escape_string($data['url']);
            $last_saved_date = date('Y-m-d H:i:s', strtotime('-1 week'));
            $history_files_params = array();
            $history_files_params['order_by'] = 'id desc';
            $history_files_params['fields'] = 'id';
            $history_files_params['field'] = $data['field'];
            $history_files_params['rel_type'] = $data['rel_type'];
            $history_files_params['rel_id'] = $data['rel_id'];
            $history_files_params['is_draft'] = 1;
            $history_files_params['limit'] = 200;
            $history_files_params['no_cache'] = true;
            $history_files_params['url'] = $draft_url;
            $history_files_params['current_page'] = 2;
            $history_files_params['created_at'] = '[lt]' . $last_saved_date;
            $history_files = $this->get_edit_field($history_files_params);
            if (is_array($history_files)) {
                $history_files_ids = $this->app->format->array_values($history_files);
            }
            if (isset($history_files_ids) and is_array($history_files_ids) and !empty($history_files_ids)) {
                ContentFields::whereIn('id', $history_files_ids)->delete();
            }
        }
        if (!isset($data['rel_type']) or !isset($data['rel_id'])) {
            mw_error('Error: ' . __FUNCTION__ . ' rel and rel_id is required');
        }
        if (isset($data['field']) and !isset($data['is_draft'])) {
            $fld = $this->app->database_manager->escape_string($data['field']);
            $fld_rel = $this->app->database_manager->escape_string($data['rel_type']);
            $del_params = array();
            $del_params['rel_type'] = $fld_rel;
            $del_params['field'] = $fld;
            $del_params['table'] = $table;
            $del_params['no_cache'] = true;
            if (isset($data['rel_id'])) {
                $i = $data['rel_id'];
                $del_params['rel_id'] = $i;
            } else {
                $del_params['rel_id'] = 0;
            }
            $del = $this->app->database_manager->get($del_params);
            if (!empty($del)) {
                foreach ($del as $item) {
                    $this->app->database_manager->delete_by_id($table, $item['id']);
                }
            }
            $cache_group = guess_cache_group('content_fields/' . $data['rel_type'] . '/' . $data['rel_id']);
            $this->app->cache_manager->delete($cache_group);
        }
        if (isset($fld)) {
            $this->app->cache_manager->delete('content_fields/' . $fld);
            $this->app->cache_manager->delete('content_fields/global/' . $fld);
        }
        $this->app->cache_manager->delete('content_fields/global');
        if (isset($data['rel_type']) and isset($data['rel_id'])) {
            $cache_group = guess_cache_group('content_fields/' . $data['rel_type'] . '/' . $data['rel_id']);
            $this->app->cache_manager->delete($cache_group);
            $this->app->cache_manager->delete('content/' . $data['rel_id']);
        }
        if (isset($data['rel_type'])) {
            $this->app->cache_manager->delete('content_fields/' . $data['rel_type']);
        }
        if (isset($data['rel_type']) and isset($data['rel_id'])) {
            $this->app->cache_manager->delete('content_fields/' . $data['rel_type'] . '/' . $data['rel_id']);
            $this->app->cache_manager->delete('content_fields/global/' . $data['rel_type'] . '/' . $data['rel_id']);
        }
        if (isset($data['field'])) {
            $this->app->cache_manager->delete('content_fields/' . $data['field']);
        }
        $this->app->cache_manager->delete('content_fields/global');
        $data['table'] = $table;
        $data['allow_html'] = 1;
        $save = $this->app->database_manager->save($data);
        $this->app->cache_manager->delete('content_fields');
        return $save;
    }