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; }