You are here

function biblio_form_filter in Bibliography Module 7

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

File

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

Code

function biblio_form_filter() {
  $session = isset($_SESSION['biblio_filter']) ? $_SESSION['biblio_filter'] : array();
  $filters = _get_biblio_filters();
  $i = 0;
  $form['filters'] = array(
    '#type' => 'fieldset',
    '#title' => t('Show only items where'),
    '#theme' => 'exposed_filters__node',
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  foreach ($session as $filter) {
    $type = key($filter);
    $value = $filter[$type];

    // list($type, $value) = $filter;.
    if ($type == 'search') {
      $session = array();
      break;
    }
    if ($type == 'category') {

      // Load term name from DB rather than search and parse options array.
      $value = module_invoke('taxonomy', 'get_term', $value);
      $value = $value->name;
    }
    else {
      $value = $filters[$type]['options'][$value];
    }
    $t_args = array(
      '%property' => $filters[$type]['title'],
      '%value' => $value,
    );
    if ($i++) {
      $form['filters']['current'][] = array(
        '#markup' => t('and where %property is %value', $t_args),
      );
    }
    else {
      $form['filters']['current'][] = array(
        '#markup' => t('where %property is %value', $t_args),
      );
    }
    if (in_array($type, array(
      'type',
      'language',
    ))) {

      // Remove the option if it is already being filtered on.
      unset($filters[$type]);
    }
  }
  $form['filters']['status'] = array(
    '#type' => 'container',
    '#attributes' => array(
      'class' => array(
        'clearfix',
      ),
    ),
    '#prefix' => $i ? '<div class="additional-filters">' . t('and where') . '</div>' : '',
  );
  $form['filters']['status']['filters'] = array(
    '#type' => 'container',
    '#attributes' => array(
      'class' => array(
        'filters',
      ),
    ),
  );
  foreach ($filters as $key => $filter) {
    $form['filters']['status']['filters'][$key] = array(
      '#type' => 'select',
      '#options' => $filter['options'],
      '#title' => $filter['title'],
      '#default_value' => 'any',
    );
  }
  $form['filters']['status']['actions'] = array(
    '#type' => 'actions',
    '#attributes' => array(
      'class' => array(
        'container-inline',
      ),
    ),
  );
  $form['filters']['status']['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => count($session) ? t('Refine') : t('Filter'),
    '#submit' => array(
      'biblio_form_filter_submit',
    ),
  );
  if (count($session)) {
    $form['filters']['status']['actions']['undo'] = array(
      '#type' => 'submit',
      '#value' => t('Undo'),
      '#submit' => array(
        'biblio_form_filter_submit',
      ),
    );
    $form['filters']['status']['actions']['reset'] = array(
      '#type' => 'submit',
      '#value' => t('Reset'),
      '#submit' => array(
        'biblio_form_filter_submit',
      ),
    );
  }
  return $form;
}