function views_plugin_argument_validate_field_extractor::validate_argument in Views Arguments Extras 7
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
File
- ./
views_arguments_extras_plugin_argument_validate_field.inc, line 73 - Contains the php code argument validator plugin.
Class
- views_plugin_argument_validate_field_extractor
- Provide PHP code to validate whether or not an argument is ok.
Code
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;
}