public function save($data)
{
if (defined('MW_API_CALL')) {
$is_admin = $this->app->user_manager->is_admin();
if ($is_admin == false) {
return false;
}
}
if (is_string($data)) {
$data = parse_params($data);
}
$option_group = false;
if (is_array($data)) {
if (strval($data['option_key']) != '') {
if (strstr($data['option_key'], '|for_module|')) {
$option_key_1 = explode('|for_module|', $data['option_key']);
if (isset($option_key_1[0])) {
$data['option_key'] = $option_key_1[0];
}
if (isset($option_key_1[1])) {
$data['module'] = $option_key_1[1];
if (isset($data['id']) and intval($data['id']) > 0) {
$chck = $this->get('limit=1&module=' . $data['module'] . '&option_key=' . $data['option_key']);
if (isset($chck[0]) and isset($chck[0]['id'])) {
$data['id'] = $chck[0]['id'];
} else {
$table = $this->tables['options'];
$copy = $this->app->database_manager->copy_row_by_id($table, $data['id']);
$data['id'] = $copy;
}
}
}
}
}
$delete_content_cache = false;
if (!isset($data['id']) or intval($data['id']) == 0) {
if (isset($data['option_key']) and isset($data['option_group']) and trim($data['option_group']) != '') {
$option_group = $data['option_group'];
// $this->delete($data['option_key'], $data['option_group']);
$existing = $this->get($data['option_key'], $data['option_group'], $return_full = true);
if ($existing == false) {
//
} elseif (isset($existing['id'])) {
$data['id'] = $existing['id'];
}
}
}
$table = $this->tables['options'];
if (isset($data['field_values']) and $data['field_values'] != false) {
$data['field_values'] = base64_encode(serialize($data['field_values']));
}
if (isset($data['module'])) {
$data['module'] = str_ireplace('/admin', '', $data['module']);
}
if (strval($data['option_key']) != '') {
if ($data['option_key'] == 'current_template') {
$delete_content_cache = true;
}
if (isset($data['option_group']) and strval($data['option_group']) == '') {
unset($data['option_group']);
}
if (isset($data['option_value']) and $data['option_value'] != false) {
$data['option_value'] = $this->app->url_manager->replace_site_url($data['option_value']);
}
$data['allow_html'] = true;
$data['allow_scripts'] = true;
$data['table'] = $this->tables['options'];
$save = $this->app->database_manager->save($data);
if ($option_group != false) {
$cache_group = 'options/' . $option_group;
$this->app->cache_manager->delete($cache_group);
} else {
$cache_group = 'options/' . 'global';
$this->app->cache_manager->delete($cache_group);
}
if ($save != false) {
$cache_group = 'options/' . $save;
$this->app->cache_manager->delete($cache_group);
}
if ($delete_content_cache != false) {
$cache_group = 'content/global';
$this->app->cache_manager->delete($cache_group);
}
if (isset($data['id']) and intval($data['id']) > 0) {
$opt = $this->get_by_id($data['id']);
if (isset($opt['option_group'])) {
$cache_group = 'options/' . $opt['option_group'];
$this->app->cache_manager->delete($cache_group);
}
$cache_group = 'options/' . intval($data['id']);
$this->app->cache_manager->delete($cache_group);
}
$this->app->cache_manager->delete('options');
return $save;
}
}
}