You are here

function views_plugin_argument_validate_taxonomy_term_machine_name::validate_argument in Taxonomy Machine Name 7

Overrides views_plugin_argument_validate_taxonomy_term::validate_argument

File

views/modules/taxonomy/views_plugin_argument_validate_taxonomy_term_machine_name.inc, line 24
Contains the 'taxonomy term' overridden argument validator plugin.

Class

views_plugin_argument_validate_taxonomy_term_machine_name
Validate whether an argument is an acceptable node.

Code

function validate_argument($argument) {
  $vocabularies = array_filter($this->options['vocabularies']);
  $type = $this->options['type'];
  $transform = $this->options['transform'];
  switch ($type) {
    case 'machine_name':
      $query = db_select('taxonomy_term_data', 'td');
      $query
        ->leftJoin('taxonomy_vocabulary', 'tv', 'td.vid = tv.vid');
      $query
        ->fields('td');
      $query
        ->fields('tv', array(
        'machine_name',
      ));
      if (!empty($vocabularies)) {
        $query
          ->condition('tv.machine_name', $vocabularies);
      }
      if ($transform) {
        $query
          ->condition('td.machine_name', array(
          ':name' => str_replace('-', '_', $argument),
        ));
      }
      else {
        $query
          ->condition('td.machine_name', $argument);
      }
      $term = $query
        ->execute()
        ->fetchObject();
      if ($term && (empty($vocabularies) || !empty($vocabularies[$term->machine_name]))) {
        $term = taxonomy_term_load($term->tid);
        $this->argument->real_field = 'tid';
        $this->argument->argument = $term->tid;
        $this->argument->validated_title = check_plain(entity_label('taxonomy_term', $term));
        return TRUE;
      }
      return FALSE;
    default:
      return parent::validate_argument($argument);
  }
}