public function execute(HTTPRequestCustom $request)
 {
     AppContext::get_session()->csrf_get_protect();
     $config = BugtrackerConfig::load();
     $parameter = $request->get_string('parameter', '');
     if (in_array($parameter, array('type', 'category', 'severity', 'priority', 'version'))) {
         switch ($parameter) {
             case 'type':
                 $config->set_default_type(0);
                 break;
             case 'category':
                 $config->set_default_category(0);
                 break;
             case 'severity':
                 $config->set_default_severity(0);
                 break;
             case 'priority':
                 $config->set_default_priority(0);
                 break;
             case 'version':
                 $config->set_default_version(0);
                 break;
         }
         BugtrackerConfig::save();
         AppContext::get_response()->redirect(BugtrackerUrlBuilder::configuration());
     } else {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), LangLoader::get_message('error.e_unexist_parameter', 'common', 'bugtracker'));
         $controller->set_response_classname(UserErrorController::ADMIN_RESPONSE);
         DispatchManager::redirect($controller);
     }
 }
 private function save()
 {
     $request = AppContext::get_request();
     $types = $this->config->get_types();
     $categories = $this->config->get_categories();
     $severities = $this->config->get_severities();
     $priorities = $this->config->get_priorities();
     $versions = $this->config->get_versions();
     foreach ($types as $key => $type) {
         $new_type_name = $request->get_value('type' . $key, '');
         $types[$key] = !empty($new_type_name) && $new_type_name != $type ? $new_type_name : $type;
     }
     $nb_types = count($types);
     for ($i = 1; $i <= $this->max_input; $i++) {
         $type = 'type_' . $i;
         if ($request->has_postparameter($type) && $request->get_poststring($type)) {
             if (empty($nb_types)) {
                 $types[1] = addslashes($request->get_poststring($type));
             } else {
                 $types[] = addslashes($request->get_poststring($type));
             }
             $nb_types++;
         }
     }
     foreach ($categories as $key => $category) {
         $new_category_name = $request->get_value('category' . $key, '');
         $categories[$key] = !empty($new_category_name) && $new_category_name != $category ? $new_category_name : $category;
     }
     $nb_categories = count($categories);
     for ($i = 1; $i <= $this->max_input; $i++) {
         $category = 'category_' . $i;
         if ($request->has_postparameter($category) && $request->get_poststring($category)) {
             if (empty($nb_categories)) {
                 $categories[1] = addslashes($request->get_poststring($category));
             } else {
                 $categories[] = addslashes($request->get_poststring($category));
             }
             $nb_categories++;
         }
     }
     foreach ($severities as $key => $severity) {
         $new_severity_name = $request->get_value('severity' . $key, '');
         $new_severity_color = $request->get_value('color' . $key, '');
         $severities[$key]['name'] = !empty($new_severity_name) && $new_severity_name != $severity['name'] ? $new_severity_name : $severity['name'];
         $severities[$key]['color'] = $new_severity_color != $severity['color'] ? $new_severity_color : $severity['color'];
     }
     foreach ($priorities as $key => $priority) {
         $new_priority_name = $request->get_value('priority' . $key, '');
         $priorities[$key] = !empty($new_priority_name) && $new_priority_name != $priority ? $new_priority_name : $priority;
     }
     foreach ($versions as $key => $version) {
         $new_version_name = $request->get_value('version' . $key, '');
         $new_version_release_date = $request->get_value('release_date' . $key, '');
         $new_version_detected_in = (bool) $request->get_value('detected_in' . $key, '');
         $versions[$key]['name'] = !empty($new_version_name) && $new_version_name != $version['name'] ? $new_version_name : $version['name'];
         $release_date = $new_version_release_date ? new Date($new_version_release_date) : '';
         $versions[$key]['release_date'] = $release_date ? $release_date->get_timestamp() : '';
         $versions[$key]['detected_in'] = $new_version_detected_in != $version['detected_in'] ? $new_version_detected_in : $version['detected_in'];
     }
     $nb_versions = count($versions);
     for ($i = 1; $i <= $this->max_input; $i++) {
         $version = 'version_' . $i;
         if ($request->has_postparameter($version) && $request->get_poststring($version)) {
             $version_release_date = $request->get_value('release_date_' . $i, '');
             $release_date = $version_release_date ? new Date($version_release_date) : '';
             $release_date = $release_date ? $release_date->get_timestamp() : '';
             if (empty($nb_versions)) {
                 $versions[1] = array('name' => addslashes($request->get_poststring($version)), 'release_date' => $release_date, 'detected_in' => (bool) $request->get_value('detected_in' . $i, ''));
             } else {
                 $versions[] = array('name' => addslashes($request->get_poststring($version)), 'release_date' => $release_date, 'detected_in' => (bool) $request->get_value('detected_in' . $i, ''));
             }
             $nb_versions++;
         }
     }
     $this->config->set_items_per_page($this->form->get_value('items_per_page'));
     $this->config->set_rejected_bug_color($this->form->get_value('rejected_bug_color'));
     $this->config->set_fixed_bug_color($this->form->get_value('fixed_bug_color'));
     if ($this->form->get_value('roadmap_enabled')) {
         $this->config->enable_roadmap();
     } else {
         $this->config->disable_roadmap();
     }
     if ($this->form->get_value('progress_bar_displayed')) {
         $this->config->display_progress_bar();
         $status_list = array();
         foreach ($this->config->get_status_list() as $key => $value) {
             $status_list[$key] = $this->form->get_value($key);
         }
         $this->config->set_status_list($status_list);
     } else {
         $this->config->hide_progress_bar();
     }
     if ($this->form->get_value('admin_alerts_enabled')) {
         $this->config->enable_admin_alerts();
         $this->config->set_admin_alerts_fix_action($this->form->get_value('admin_alerts_fix_action')->get_raw_value());
         $admin_alerts_levels = array();
         foreach ($this->form->get_value('admin_alerts_levels') as $level => $value) {
             $admin_alerts_levels[] = (string) $value->get_id();
         }
         $this->config->set_admin_alerts_levels($admin_alerts_levels);
     } else {
         $this->config->disable_admin_alerts();
     }
     if ($this->form->get_value('stats_enabled')) {
         $this->config->enable_stats();
         if ($this->form->get_value('stats_top_posters_enabled')) {
             $this->config->enable_stats_top_posters();
             $this->config->set_stats_top_posters_number($this->form->get_value('stats_top_posters_number'));
         } else {
             $this->config->disable_stats_top_posters();
         }
     } else {
         $this->config->disable_stats();
     }
     if ($this->form->get_value('pm_enabled')) {
         $this->config->enable_pm();
         if ($this->form->get_value('pm_comment_enabled')) {
             $this->config->enable_pm_comment();
         } else {
             $this->config->disable_pm_comment();
         }
         if ($this->form->get_value('pm_in_progress_enabled')) {
             $this->config->enable_pm_in_progress();
         } else {
             $this->config->disable_pm_in_progress();
         }
         if ($this->form->get_value('pm_fix_enabled')) {
             $this->config->enable_pm_fix();
         } else {
             $this->config->disable_pm_fix();
         }
         if ($this->form->get_value('pm_pending_enabled')) {
             $this->config->enable_pm_pending();
         } else {
             $this->config->disable_pm_pending();
         }
         if ($this->form->get_value('pm_assign_enabled')) {
             $this->config->enable_pm_assign();
         } else {
             $this->config->disable_pm_assign();
         }
         if ($this->form->get_value('pm_edit_enabled')) {
             $this->config->enable_pm_edit();
         } else {
             $this->config->disable_pm_edit();
         }
         if ($this->form->get_value('pm_reject_enabled')) {
             $this->config->enable_pm_reject();
         } else {
             $this->config->disable_pm_reject();
         }
         if ($this->form->get_value('pm_reopen_enabled')) {
             $this->config->enable_pm_reopen();
         } else {
             $this->config->disable_pm_reopen();
         }
         if ($this->form->get_value('pm_delete_enabled')) {
             $this->config->enable_pm_delete();
         } else {
             $this->config->disable_pm_delete();
         }
     } else {
         $this->config->disable_pm();
     }
     $this->config->set_contents_value($this->form->get_value('contents_value'));
     if ($this->form->get_value('type_mandatory')) {
         $this->config->type_mandatory();
     } else {
         $this->config->type_not_mandatory();
     }
     if ($this->form->get_value('display_type_column')) {
         $this->config->display_type_column();
     } else {
         $this->config->hide_type_column();
     }
     $this->config->set_types($types);
     $this->config->set_default_type($request->get_value('default_type', 0));
     if ($this->form->get_value('category_mandatory')) {
         $this->config->category_mandatory();
     } else {
         $this->config->category_not_mandatory();
     }
     if ($this->form->get_value('display_category_column')) {
         $this->config->display_category_column();
     } else {
         $this->config->hide_category_column();
     }
     $this->config->set_categories($categories);
     $this->config->set_default_category($request->get_value('default_category', 0));
     if ($this->form->get_value('severity_mandatory')) {
         $this->config->severity_mandatory();
     } else {
         $this->config->severity_not_mandatory();
     }
     $this->config->set_severities($severities);
     $this->config->set_default_severity($request->get_value('default_severity', 0));
     if ($this->form->get_value('priority_mandatory')) {
         $this->config->priority_mandatory();
     } else {
         $this->config->priority_not_mandatory();
     }
     if ($this->form->get_value('display_priority_column')) {
         $this->config->display_priority_column();
     } else {
         $this->config->hide_priority_column();
     }
     $this->config->set_priorities($priorities);
     $this->config->set_default_priority($request->get_value('default_priority', 0));
     if ($this->form->get_value('detected_in_version_mandatory')) {
         $this->config->detected_in_version_mandatory();
     } else {
         $this->config->detected_in_version_not_mandatory();
     }
     if ($this->form->get_value('display_detected_in_column')) {
         $this->config->display_detected_in_column();
     } else {
         $this->config->hide_detected_in_column();
     }
     $this->config->set_versions($versions);
     $this->config->set_default_version($request->get_value('default_version', 0));
     BugtrackerConfig::save();
     BugtrackerStatsCache::invalidate();
 }
 private function save()
 {
     //Save the authorizations list
     BugtrackerConfig::load()->set_authorizations($this->form->get_value('authorizations')->build_auth_array());
     BugtrackerConfig::save();
 }
 private function delete_parameter_in_config()
 {
     $types = $this->config->get_types();
     $categories = $this->config->get_categories();
     $versions = $this->config->get_versions();
     switch ($this->parameter) {
         case 'type':
             //Delete the type in the list of types
             unset($types[$this->id]);
             $this->config->set_types($types);
             if ($this->config->get_default_type() == $this->id) {
                 $this->config->set_default_type(0);
             }
             break;
         case 'category':
             //Delete the category in the list of categories
             unset($categories[$this->id]);
             $this->config->set_categories($categories);
             if ($this->config->get_default_category() == $this->id) {
                 $this->config->set_default_category(0);
             }
             break;
         case 'version':
             //Delete the version in the list of versions
             unset($versions[$this->id]);
             $this->config->set_versions($versions);
             if ($this->config->get_default_version() == $this->id) {
                 $this->config->set_default_version(0);
             }
             break;
     }
     BugtrackerConfig::save();
 }