You are here

class views_plugin_argument_validate_field_extractor in Views Arguments Extras 7

Provide PHP code to validate whether or not an argument is ok.

Hierarchy

Expanded class hierarchy of views_plugin_argument_validate_field_extractor

1 string reference to 'views_plugin_argument_validate_field_extractor'
views_arguments_extras_views_plugins in ./views_arguments_extras.module

File

./views_arguments_extras_plugin_argument_validate_field.inc, line 12
Contains the php code argument validator plugin.

View source
class views_plugin_argument_validate_field_extractor extends views_plugin_argument_validate {
  function option_definition() {
    $options = parent::option_definition();
    $options['entity_type'] = array(
      'default' => '',
    );
    $options['field'] = array(
      'default' => '',
    );
    $options['settings'] = array(
      'default' => array(),
    );
    return $options;
  }
  function options_form(&$form, &$form_state) {
    $entity_infos = entity_get_info();
    foreach ($entity_infos as $key => $info) {
      $entity_options[$key] = $info['label'];
    }
    $form['entity_type'] = array(
      '#title' => 'Entity Type',
      '#type' => 'select',
      '#options' => $entity_options,
      '#default_value' => $this->options['entity_type'],
    );
    module_load_include("inc", "views_arguments_extras", "views_arguments_extras.field_plugins");
    $options = views_arguments_extras_get_plugin_options();
    $form['field'] = array(
      '#title' => 'Field',
      '#type' => 'select',
      '#options' => $options,
      '#default_value' => $this->options['field'],
      '#ajax' => array(
        'callback' => 'views_plugin_argument_validator_field_field_callback',
        'wrapper' => 'field-settings-wrapper',
        'method' => 'replace',
        'effect' => 'fade',
      ),
    );
    $form['settings'] = array(
      '#title' => "Settings",
      '#type' => 'fieldset',
      '#prefix' => '<div class="field-settings-wrapper">',
      '#suffix' => '</div>',
    );
    if ($this->options['field']) {
      $plugins = views_plugin_argument_default_field();
      list($p_id, $field) = explode("::", $this->options['field']);
      $plugin = $plugins[$p_id];
      $form['settings']['#title'] = "Settings for {$plugin['name']}";
      if ($form_fun = ctools_plugin_get_function($plugin, "form callback")) {
        $plugin_form = $form_fun();
        foreach ($plugin_form as $id => $form_element) {
          $form['settings'][$id] = $form_element;
          $form['settings'][$id]['#default_value'] = $this->options['settings'][$id];
        }
      }
    }
  }

  /**
   * We are going to take the current argument, find the enitity object to which it relates
   * and then change the argument to reflect a value from one if its fields
   */
  function validate_argument(&$argument) {

    // set up variables to make it easier to reference during the argument.
    // TODO parse arguement on , and allow for multiple values
    $view =& $this->view;
    $handler =& $this->argument;
    $id = $handler->argument;
    if ($this->options['field']) {
      global $language;
      list($plugin_id, $field_name) = explode("::", $this->options['field']);
      if ($this->options['entity_type'] == 'entity_boxes' && !is_numeric($id)) {
        $entity = array_pop(entity_boxes_load_delta($id));
      }
      else {
        $entity = array_pop(entity_load($this->options['entity_type'], array(
          $id,
        )));
      }
      $lang = isset($entity->{$field_name}[$language->language]) ? $language->language : LANGUAGE_NONE;
      $field = isset($entity->{$field_name}[$lang]) ? $entity->{$field_name}[$lang] : array();
      module_load_include("inc", "views_arguments_extras", "views_arguments_extras.field_plugins");
      module_load_include("inc", "views_arguments_extras", "views_plugin_argument_default_field");
      $plugin = views_plugin_argument_default_field($plugin_id);
      if ($arg_fun = ctools_plugin_get_function($plugin, "argument callback")) {
        $return = $arg_fun($field, $this->options['settings'], $entity, $this);
        $handler->argument = $return;
        return TRUE;
      }
    }
    return FALSE;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
views_object::$definition public property Handler's definition.
views_object::$options public property Except for displays, options for the object will be held here. 1
views_object::altered_option_definition function Collect this handler's option definition and alter them, ready for use.
views_object::construct public function Views handlers use a special construct function. 4
views_object::destroy public function Destructor. 2
views_object::export_option public function 1
views_object::export_options public function
views_object::export_option_always public function Always exports the option, regardless of the default value.
views_object::options Deprecated public function Set default options on this object. 1
views_object::set_default_options public function Set default options.
views_object::set_definition public function Let the handler know what its full definition is.
views_object::unpack_options public function Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away.
views_object::unpack_translatable public function Unpack a single option definition.
views_object::unpack_translatables public function Unpacks each handler to store translatable texts.
views_object::_set_option_defaults public function
views_plugin::$display public property The current used views display.
views_plugin::$plugin_name public property The plugin name of this plugin, for example table or full.
views_plugin::$plugin_type public property The plugin type of this plugin, for example style or query.
views_plugin::$view public property The top object of a view. Overrides views_object::$view 1
views_plugin::additional_theme_functions public function Provide a list of additional theme functions for the theme info page.
views_plugin::plugin_title public function Return the human readable name of the display.
views_plugin::query public function Add anything to the query that we might need to. 7
views_plugin::summary_title public function Returns the summary of the settings in the display. 8
views_plugin::theme_functions public function Provide a full list of possible theme templates used by this style.
views_plugin::validate public function Validate that the plugin is correct and can be saved. 3
views_plugin_argument_validate::access public function Determine if the administrator has the privileges to use this plugin. 1
views_plugin_argument_validate::check_access public function If we don't have access to the form but are showing it anyway, ensure that the form is safe and cannot be changed from user input.
views_plugin_argument_validate::convert_options public function Convert options from the older style. 4
views_plugin_argument_validate::init public function Initialize this plugin with the view and the argument it is linked to. 1
views_plugin_argument_validate::options_submit public function Provide the default form form for submitting options Overrides views_plugin::options_submit 3
views_plugin_argument_validate::options_validate public function Provide the default form form for validating options. Overrides views_plugin::options_validate
views_plugin_argument_validate::process_summary_arguments public function Process the summary arguments for displaying. 2
views_plugin_argument_validate_field_extractor::options_form function Provide the default form for setting options. Overrides views_plugin_argument_validate::options_form
views_plugin_argument_validate_field_extractor::option_definition function Retrieve the options when this is a new access control plugin. Overrides views_plugin_argument_validate::option_definition
views_plugin_argument_validate_field_extractor::validate_argument function We are going to take the current argument, find the enitity object to which it relates and then change the argument to reflect a value from one if its fields Overrides views_plugin_argument_validate::validate_argument