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