/** * Save grouped pages tab or specific page tab settings */ public function save_sidebar_settings($settings) { try { //Preset validate & saving for grouped pages tab if (isset($settings['slug']) and $settings['slug']) { $preset = $this->validate_preset($settings); $result['status'] = $this->update_preset($preset); if ($result['status']) { $grouped_label = $this->config->get_label_grouped($preset['type'], $preset['sub_type']); $result['label'] = reset($grouped_label); $result['slug'] = key($grouped_label); } } else { //Preset validate & saving for specific tab $new_key_preset = $this->generate_preset_id(); $slugs = array(); $preset_id = null; $db = $this->get_db(); $saved_settings = fw_akg('settings/saved_presets', $db, array()); if (!isset($settings['selected']) or empty($settings['selected'])) { throw new Exception('Error: Selection is empty'); } foreach ($settings['selected'] as $preset) { $preset['sidebars'] = isset($settings['sidebars']) ? $settings['sidebars'] : array(); $preset['position'] = isset($settings['position']) ? $settings['position'] : null; $preset['preset'] = isset($settings['preset']) ? $settings['preset'] : null; if (!isset($preset['preset']) or !preg_match('/^\\d+$/', $preset['preset']) or !in_array($preset['preset'], $saved_settings)) { $preset['preset'] = $new_key_preset; } $preset = $this->validate_preset($preset); $result['status'] = $this->update_preset($preset); $slugs[] = $preset['slug']; $preset_id = $preset['preset']; if ($result['status']) { $singular_label = $this->config->get_label_singular($preset['type'], $preset['sub_type']); $prefix = $this->config->get_prefix_by_type($preset['type']); $page_names = reset($singular_label) . ' - ' . implode(', ', $this->build_preset_ids_list($prefix, $preset['ids'], $preset['sub_type'])); $result['preset'] = $preset_id; $result['label'] = (isset($result['label']) ? $result['label'] : '') . $page_names . ' '; } } $slugs = array_unique($slugs); $this->clean_unused_presets($slugs, $preset_id); } } catch (Exception $e) { $result['status'] = false; $result['message'] = $e->getMessage(); if ($e instanceof _FW_Extension_Sidebars_MissingSidebar_Exception) { $result['colors'] = $e->get_colors(); } } return $result; }