You are here

function advuser_form_user_filter_form_add in Advanced User 7.4

AJAX callback for "Add Filter".

2 calls to advuser_form_user_filter_form_add()
advuser_form_user_filter_form_alter in ./advuser.module
Implements hook_form_FORM_ID_alter().
advuser_form_user_filter_form_reset in ./advuser.module
AJAX callback for "Clear Filters".
1 string reference to 'advuser_form_user_filter_form_add'
advuser_form_user_filter_form_alter in ./advuser.module
Implements hook_form_FORM_ID_alter().

File

./advuser.module, line 246
advuser.module

Code

function advuser_form_user_filter_form_add(&$form, &$form_state, $increment = TRUE) {

  // Get user entity filters.
  $filters = advuser_filters();

  // Set filter operators.
  $options_operator = array(
    '',
    '=',
    '<>',
    '>',
    '>=',
    '<',
    '<=',
    'STARTS_WITH',
    'CONTAINS',
  );
  $options_operator = drupal_map_assoc($options_operator);
  $default_operator = array_keys(array_slice($options_operator, 1, 1, TRUE));
  $default_operator = $default_operator[0];

  // Set filter fields.
  $options_field = array();
  foreach ($filters as &$group) {
    foreach ($group as $key => &$meta) {
      $options_field[$key] = $meta['#title'];
    }
  }
  $default_field = array_keys(array_slice($options_field, 0, 1, TRUE));
  $default_field = $default_field[0];
  $form['filters']['advuser'] = array(
    '#type' => 'container',
    '#tree' => TRUE,
    '#attributes' => array(
      'id' => 'advuser',
      'class' => array(
        'filters',
      ),
    ),
  );
  $count = (!empty($_SESSION['advuser_overview_filter_count']) ? $_SESSION['advuser_overview_filter_count'] : 0) + ($increment ? 1 : 0);
  $_SESSION['advuser_overview_filter_count'] = $count;
  for ($i = 0; $i < $count; $i++) {
    $filter_key = 'filter_' . $i;

    // Get session filters.
    $field = advuser_filter_get($filter_key, 'field', $default_field);
    $operator = advuser_filter_get($filter_key, 'operator', $default_operator);
    $value = advuser_filter_get($filter_key, 'value');
    $form['filters']['advuser'][$filter_key] = array(
      '#type' => 'container',
      '#attributes' => array(
        'id' => $filter_key,
        'class' => array(
          'container-inline',
          'filter',
        ),
      ),
    );
    $form['filters']['advuser'][$filter_key]['field'] = array(
      '#type' => 'select',
      '#title' => t('Field'),
      '#title_display' => 'invisible',
      '#options' => $options_field,
      '#default_value' => $field,
      '#weight' => 0,
      '#attributes' => array(
        'data' => 'field',
        'style' => 'width: 127px;',
      ),
    );
    $form['filters']['advuser'][$filter_key]['operator'] = array(
      '#type' => 'select',
      '#options' => $options_operator,
      '#default_value' => $operator,
      '#weight' => 1,
      '#attributes' => array(
        'data' => 'operator',
        'style' => 'width: 80px;',
      ),
    );
    foreach ($filters as &$group) {
      foreach ($group as $key => &$meta) {
        if ($key == $field) {
          $meta = array_merge($meta, array(
            '#default_value' => $value,
            '#title_display' => 'invisible',
            '#weight' => 2,
            '#attributes' => array(
              'data' => 'value',
              'style' => 'width: ' . ($meta['#type'] == 'select' ? '102' : '96') . 'px;',
            ),
          ));
          $form['filters']['advuser'][$filter_key]['value'] = $meta;
        }
      }
    }
    $form['filters']['advuser'][$filter_key]['field']['#ajax']['callback'] = $form['filters']['advuser'][$filter_key]['operator']['#ajax']['callback'] = $form['filters']['advuser'][$filter_key]['value']['#ajax']['callback'] = 'advuser_form_user_filter_form_submit';
    $form['filters']['advuser'][$filter_key]['field']['#attached']['js'][] = $form['filters']['advuser'][$filter_key]['operator']['#attached']['js'][] = $form['filters']['advuser'][$filter_key]['value']['#attached']['js'][] = drupal_get_path('module', 'advuser') . '/advuser.js';
    $form['filters']['advuser'][$filter_key]['field']['#attributes']['class'][] = $form['filters']['advuser'][$filter_key]['operator']['#attributes']['class'][] = $form['filters']['advuser'][$filter_key]['value']['#attributes']['class'][] = 'advuser-filter';
  }
  return $form['filters']['advuser'];
}