You are here

function skinr_ui_filter_form_submit in Skinr 8.2

Same name and namespace in other branches
  1. 6.2 skinr_ui.admin.inc \skinr_ui_filter_form_submit()
  2. 7.2 skinr_ui.admin.inc \skinr_ui_filter_form_submit()

Form submission handler for skinr_ui_filter_form().

2 string references to 'skinr_ui_filter_form_submit'
skinr_context_ui_admin_list in skinr_context/skinr_context_ui.admin.inc
Menu callback: skin configuration groups administration.
skinr_context_ui_admin_skin_list in skinr_context/skinr_context_ui.admin.inc
Overrides skinr_ui_list().

File

skinr_ui/skinr_ui.admin.inc, line 302
Admin page callbacks for the Skinr UI module.

Code

function skinr_ui_filter_form_submit($form, &$form_state) {
  $filters_callback = $form_state['#callback'];
  $filters = $filters_callback();
  switch ($form_state['values']['op']) {
    case t('Filter'):
    case t('Refine'):

      // Apply every filter that has a choice selected other than 'any'.
      foreach ($filters as $filter => $options) {
        if (isset($form_state['values'][$filter]) && $form_state['values'][$filter] != '[any]') {

          // Flatten the options array to accommodate hierarchical/nested options.
          $flat_options = form_options_flatten($filters[$filter]['options']);

          // Only accept valid selections offered on the dropdown, block bad input.
          if (isset($flat_options[$form_state['values'][$filter]])) {
            $_SESSION[$filters_callback][] = array(
              $filter,
              $form_state['values'][$filter],
            );
          }
        }
      }
      break;
    case t('Undo'):
      array_pop($_SESSION[$filters_callback]);
      break;
    case t('Reset'):
      $_SESSION[$filters_callback] = array();
      break;
  }
}