You are here

function biblio_form_filter_submit in Bibliography Module 7

Same name and namespace in other branches
  1. 5 biblio.module \biblio_form_filter_submit()
  2. 6.2 includes/biblio.pages.inc \biblio_form_filter_submit()
  3. 6 biblio.pages.inc \biblio_form_filter_submit()
  4. 7.2 includes/biblio.pages.inc \biblio_form_filter_submit()

_state

Parameters

$form:

1 string reference to 'biblio_form_filter_submit'
biblio_form_filter in includes/biblio.pages.inc

File

includes/biblio.pages.inc, line 1173
Copyright (C) 2006-2011 Ron Jerome.

Code

function biblio_form_filter_submit($form, &$form_state) {

  // If the search filter was set, remove it now.
  if (_get_biblio_search_filter()) {
    $_SESSION['biblio_filter'] = array();
  }
  $op = $form_state['values']['op'];
  $filters = _get_biblio_filters();
  switch ($op) {
    case t('Filter'):
    case t('Refine'):
      $uri = drupal_parse_url(request_uri());
      $uri['path'] = variable_get('biblio_base', 'biblio');
      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['biblio_filter'][] = array(
              $filter => $form_state['values'][$filter],
            );
            $uri['query']['f'][$filter] = $form_state['values'][$filter];
          }
        }
      }
      $form_state['redirect'] = array(
        $uri['path'],
        $uri,
      );
      break;
    case t('Undo'):
      array_pop($_SESSION['biblio_filter']);
      break;
    case t('Reset'):
      $_SESSION['biblio_filter'] = array();
      break;
  }
}