示例#1
0
 /**
  * Apply parameters to list settings
  *
  * @param $list_settings Data_List_Settings
  * @param $parameters    array
  * @param $form          array
  * @return Data_List_Settings set if parameters did change
  */
 public function applyParametersToListSettings(Data_List_Settings &$list_settings, $parameters, $form = null)
 {
     if (isset($form)) {
         $parameters = array_merge($parameters, $form);
     }
     $did_change = true;
     if (isset($parameters['add_property'])) {
         $list_settings->addProperty($parameters['add_property'], isset($parameters['before']) ? 'before' : 'after', isset($parameters['before']) ? $parameters['before'] : (isset($parameters['after']) ? $parameters['after'] : ''));
     } elseif (isset($parameters['less'])) {
         if ($parameters['less'] == 20) {
             $list_settings->maximum_displayed_lines_count = 20;
         } else {
             $list_settings->maximum_displayed_lines_count = max(20, $list_settings->maximum_displayed_lines_count - $parameters['less']);
         }
     } elseif (isset($parameters['more'])) {
         $list_settings->maximum_displayed_lines_count = round(min(1000, $list_settings->maximum_displayed_lines_count + $parameters['more']) / 100) * 100;
     } elseif (isset($parameters['move'])) {
         if ($parameters['move'] == 'down') {
             $list_settings->start_display_line_number += $list_settings->maximum_displayed_lines_count;
         } elseif ($parameters['move'] == 'up') {
             $list_settings->start_display_line_number -= $list_settings->maximum_displayed_lines_count;
         } elseif (is_numeric($parameters['move'])) {
             $list_settings->start_display_line_number = $parameters['move'];
         }
     } elseif (isset($parameters['remove_property'])) {
         $list_settings->removeProperty($parameters['remove_property']);
     } elseif (isset($parameters['property_path'])) {
         if (isset($parameters['property_title'])) {
             $list_settings->propertyTitle($parameters['property_path'], $parameters['property_title']);
         }
     } elseif (isset($parameters['reverse'])) {
         $list_settings->reverse($parameters['reverse']);
     } elseif (isset($parameters['search'])) {
         $list_settings->search(self::descapeForm($parameters['search']));
     } elseif (isset($parameters['sort'])) {
         $list_settings->sort($parameters['sort']);
     } elseif (isset($parameters['title'])) {
         $list_settings->title = $parameters['title'];
     } else {
         $did_change = false;
     }
     if ($list_settings->start_display_line_number < 1) {
         $list_settings->start_display_line_number = 1;
         $did_change = true;
     }
     if (Custom_Settings_Controller::applyParametersToCustomSettings($list_settings, $parameters)) {
         $did_change = true;
     }
     if ($did_change) {
         $list_settings->save();
     }
     return $did_change ? $list_settings : null;
 }