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; | |
} | |
} |