You are here

class oa_core_og_group_ref_views_handler_filter_entityreference_autocomplete in Open Atrium Core 7.2

@file Code to override field to add in auto option.

Hierarchy

Expanded class hierarchy of oa_core_og_group_ref_views_handler_filter_entityreference_autocomplete

1 string reference to 'oa_core_og_group_ref_views_handler_filter_entityreference_autocomplete'
oa_core_views_data_alter in ./oa_core.views.inc
Implements hook_views_data_alter

File

plugins/views/oa_core_og_group_ref_views_handler_filter_entityreference_autocomplete.inc, line 8
Code to override field to add in auto option.

View source
class oa_core_og_group_ref_views_handler_filter_entityreference_autocomplete extends views_handler_filter_entityreference_autocomplete {
  private $fail_build = FALSE;
  function init(&$view, &$options) {
    parent::init($view, $options);
    $this->fail_build = !oa_core_process_exposed_group_input($this);
  }
  function query() {
    parent::query();
    if (!empty($this->fail_build)) {
      $this->view->build_info['fail'] = TRUE;
    }
  }
  function value_form(&$form, &$form_state) {
    $saved_value = $this->value;
    $this->value = array();
    parent::value_form($form, $form_state);
    $field = field_info_field('og_group_ref');
    $value_key = key($field['columns']);

    // Below is mocking what og/select2widget does so it thinks this is a
    // select2 element.
    $type = 'select2widgetajax';
    $required = !empty($form['value']['#required']);
    $instance = _oa_core_get_og_group_ref_mocked_field_instance();
    $settings = $instance['widget']['settings'];
    $id = 'NULL';
    $admin_form = !empty($form_state['form_id']) && $form_state['form_id'] == 'views_ui_config_item_form';
    $autocomplete_path = ($admin_form ? 'oacoreselect2widgetpanes' : 'oacoreselect2widget') . '/ajax/' . $field['field_name'] . '/' . $instance['entity_type'] . '/' . $instance['bundle'] . '/' . $id . '?field_mode=all';
    if (variable_get('oa_core_group_reference_default_current', TRUE)) {
      $entity_labels = is_string($saved_value) ? _oa_core_select2widget_process_entity_labels($saved_value) : array();
      $default_value = $saved_value == OA_SPACE_CURRENT ? OA_SPACE_CURRENT : implode(', ', $entity_labels);
    }
    else {
      $default_value = _oa_core_select2widget_all_label();
    }
    $form['value'] = array(
      '#type' => 'textfield',
      '#default_value' => $default_value,
      '#autocomplete_path' => $autocomplete_path,
      '#element_validate' => array(
        'oa_core_select2widget_entity_validate_field',
      ),
      '#settings' => $instance['widget']['settings'],
      '#process' => array(
        'oa_core_exposed_og_group_ref_fix_cardinality',
        'select2widget_entity_process_callback',
        'ajax_process_form',
      ),
      '#maxlength' => 1024,
      '#init' => $entity_labels,
      '#field_name' => 'og_group_ref',
      '#language' => LANGUAGE_NONE,
      '#bundle' => $instance['bundle'],
      '#entity_type' => 'node',
      '#field' => $field,
      '#field_parents' => array(),
      '#convert_empty_to_current' => variable_get('oa_core_group_reference_default_current', TRUE),
      '#oa_core_select2_set_value' => TRUE,
    ) + $form['value'];
    $form['value']['#settings']['select2widgetajax']['min_char'] = 0;
    $form_state['field'][$form['value']['#field_name']][$form['value']['#language']]['field'] = $field;
  }
  function exposed_form(&$form, &$form_state) {
    parent::exposed_form($form, $form_state);
    global $user;
    $exposed = $this->view
      ->get_exposed_input();

    // just call OG for spaces, we don't care about subspaces
    // really we just need a count, but at least this doesn't load every space
    $full_user = user_load($user->uid);
    $groups = field_get_items('user', $full_user, 'og_user_node');

    // check is to check if part of any spaces.
    if (($id = $this->options['expose']['identifier']) && $groups) {
      $form[$id . '_mine'] = array(
        '#title' => t('My Spaces'),
        '#default_value' => 0,
        '#type' => 'checkbox',
      );
      if (!empty($exposed[$id . '_mine'])) {
        $form[$id]['#access'] = FALSE;

        // Need to set it here else the value is ignored when access is FALSE.
        if (!empty($exposed[$id])) {
          $form[$id] = array(
            '#type' => 'value',
            '#value' => $exposed[$id],
          );
        }
      }
    }
  }
  function exposed_validate(&$form, &$form_state) {
    if (empty($this->options['exposed'])) {
      return;
    }
    if (empty($this->options['expose']['identifier'])) {
      return;
    }
    $identifier = $this->options['expose']['identifier'];
    if (!empty($form_state['values'][$identifier])) {
      $this->validated_exposed_input = $form_state['values'][$identifier];
    }
  }

}

Members