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