Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      0.00%  | 
      0 / 1  | 
              | 
      0.00%  | 
      0 / 4  | 
      CRAP |         | 
      0.00%  | 
      0 / 29  | 
     
| TermName |         | 
      0.00%  | 
      0 / 1  | 
              | 
      0.00%  | 
      0 / 4  | 
      72 |         | 
      0.00%  | 
      0 / 29  | 
     
| __construct |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 4  | 
     |||
| defineOptions |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 4  | 
     |||
| buildOptionsForm |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 7  | 
     |||
| validateArgument |         | 
      0.00%  | 
      0 / 1  | 
      30 |         | 
      0.00%  | 
      0 / 14  | 
     |||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\taxonomy\Plugin\views\argument_validator\TermName. | |
| */ | |
| namespace Drupal\taxonomy\Plugin\views\argument_validator; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\Core\Entity\EntityManagerInterface; | |
| use Drupal\views\Plugin\views\argument_validator\Entity; | |
| /** | |
| * Validates whether a term name is a valid term argument. | |
| * | |
| * @ViewsArgumentValidator( | |
| * id = "taxonomy_term_name", | |
| * title = @Translation("Taxonomy term name"), | |
| * entity_type = "taxonomy_term" | |
| * ) | |
| */ | |
| class TermName extends Entity { | |
| /** | |
| * The taxonomy term storage. | |
| * | |
| * @var \Drupal\taxonomy\TermStorageInterface | |
| */ | |
| protected $termStorage; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityManagerInterface $entity_manager) { | |
| parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_manager); | |
| // Not handling exploding term names. | |
| $this->multipleCapable = FALSE; | |
| $this->termStorage = $entity_manager->getStorage('taxonomy_term'); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function defineOptions() { | |
| $options = parent::defineOptions(); | |
| $options['transform'] = array('default' => FALSE); | |
| return $options; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function buildOptionsForm(&$form, FormStateInterface $form_state) { | |
| parent::buildOptionsForm($form, $form_state); | |
| $form['transform'] = array( | |
| '#type' => 'checkbox', | |
| '#title' => $this->t('Transform dashes in URL to spaces in term name filter values'), | |
| '#default_value' => $this->options['transform'], | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function validateArgument($argument) { | |
| if ($this->options['transform']) { | |
| $argument = str_replace('-', ' ', $argument); | |
| } | |
| $terms = $this->termStorage->loadByProperties(array('name' => $argument)); | |
| if (!$terms) { | |
| // Returned empty array no terms with the name. | |
| return FALSE; | |
| } | |
| // Not knowing which term will be used if more than one is returned check | |
| // each one. | |
| foreach ($terms as $term) { | |
| if (!$this->validateEntity($term)) { | |
| return FALSE; | |
| } | |
| } | |
| return TRUE; | |
| } | |
| } |