/**
  * Show and process edit settings page
  *
  * @param void
  * @return null
  */
 function edit_settings()
 {
     $this->wireframe->print_button = false;
     if ($this->active_user->isNew()) {
         $this->httpError(HTTP_ERR_NOT_FOUND);
     }
     // if
     if (!$this->active_user->canEdit($this->logged_user)) {
         $this->httpError(HTTP_ERR_FORBIDDEN);
     }
     // if
     $config_options = array('format_date', 'format_time', 'time_timezone', 'time_dst', 'time_first_week_day', 'visual_editor', 'theme', 'default_assignments_filter', 'generate_daily_mail');
     if (LOCALIZATION_ENABLED) {
         $config_options[] = 'language';
     }
     // if
     $user_data = $this->request->post('user');
     if (!is_array($user_data)) {
         $user_data = array_merge(array('auto_assign' => $this->active_user->getAutoAssign(), 'auto_assign_role_id' => $this->active_user->getAutoAssignRoleId(), 'auto_assign_permissions' => $this->active_user->getAutoAssignPermissions()), UserConfigOptions::getValues($config_options, $this->active_user));
         if (LOCALIZATION_ENABLED) {
             if (!UserConfigOptions::hasValue('language', $this->active_user)) {
                 $user_data['language'] = null;
             }
             // if
         }
         // if
         if (!UserConfigOptions::hasValue('time_dst', $this->active_user)) {
             $user_data['time_dst'] = null;
         }
         // if
         if (!UserConfigOptions::hasValue('format_date', $this->active_user)) {
             $user_data['format_date'] = null;
         }
         // if
         if (!UserConfigOptions::hasValue('format_time', $this->active_user)) {
             $user_data['format_time'] = null;
         }
         // if
         if (!UserConfigOptions::hasValue('theme', $this->active_user)) {
             $user_data['theme'] = null;
         }
         // if
         if (!UserConfigOptions::hasValue('default_assignments_filter', $this->active_user)) {
             $user_data['default_assignments_filter'] = null;
         }
         // if
     }
     // if
     $this->smarty->assign(array('user_data' => $user_data, 'default_dst_value' => (bool) ConfigOptions::getValue('time_dst')));
     if ($this->request->isSubmitted()) {
         db_begin_work();
         $display = $this->active_user->getDisplayName();
         $user_data['role_id'] = $this->active_user->getRoleId();
         // role cannot be changed
         $this->active_user->setAttributes($user_data);
         if ($this->active_user->canChangeRole($this->logged_user)) {
             $this->active_user->setAutoAssignData((bool) array_var($user_data, 'auto_assign'), (int) array_var($user_data, 'auto_assign_role_id'), array_var($user_data, 'auto_assign_permissions'));
         }
         // if
         $save = $this->active_user->save();
         if ($save && !is_error($save)) {
             foreach ($config_options as $config_option) {
                 if ($config_option == 'time_dst') {
                     $value = array_var($user_data, $config_option) === '' ? '' : (bool) array_var($user_data, $config_option);
                 } elseif ($config_option == 'visual_editor') {
                     $value = (bool) array_var($user_data, $config_option);
                 } elseif ($config_option == 'generate_daily_mail') {
                     $value = (bool) array_var($user_data, $config_option);
                 } elseif ($config_option == 'time_timezone' || $config_option == 'time_first_week_day' || $config_option == 'default_assignments_filter') {
                     $value = (int) array_var($user_data, $config_option);
                 } else {
                     $value = trim(array_var($user_data, $config_option));
                 }
                 // if
                 if ($config_option == 'default_assignments_filter' && $value == 0) {
                     $value = '';
                     // Reset to default
                 }
                 // if
                 if ($value === '') {
                     UserConfigOptions::removeValue($config_option, $this->active_user);
                 } else {
                     $display_localized_message = false;
                     if (LOCALIZATION_ENABLED && $this->logged_user->getId() == $this->active_user->getId() && $user_data['language'] !== UserConfigOptions::getValue('language', $this->active_user)) {
                         $display_localized_message = true;
                     }
                     // if
                     UserConfigOptions::setValue($config_option, $value, $this->active_user);
                 }
                 // if
             }
             // foreach
             db_commit();
             flash_success(lang(":display's settings have been updated", array('display' => $this->active_user->getDisplayName()), true, $display_localized_message === true ? $this->active_user->getLanguage() : null), null, true);
             $this->redirectToUrl($this->active_user->getViewUrl());
         } else {
             db_rollback();
             $this->smarty->assign('errors', $save);
         }
         // if
     }
     // if
 }