Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 32 |
UserName | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
132 | |
0.00% |
0 / 32 |
buildOptionsForm | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 7 |
|||
validateArgument | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 20 |
|||
processSummaryArguments | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 5 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\user\Plugin\views\argument_validator\UserName. | |
*/ | |
namespace Drupal\user\Plugin\views\argument_validator; | |
use Drupal\Core\Form\FormStateInterface; | |
/** | |
* Validates whether a user name is valid. | |
* | |
* @ViewsArgumentValidator( | |
* id = "user_name", | |
* title = @Translation("User name"), | |
* entity_type = "user" | |
* ) | |
*/ | |
class UserName extends User { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function buildOptionsForm(&$form, FormStateInterface $form_state) { | |
parent::buildOptionsForm($form, $form_state); | |
$entity_type = $this->entityManager->getDefinition('user'); | |
$form['multiple']['#options'] = array( | |
0 => $this->t('Single name', array('%type' => $entity_type->getLabel())), | |
1 => $this->t('One or more names separated by , or +', array('%type' => $entity_type->getLabel())), | |
); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function validateArgument($argument) { | |
if ($this->multipleCapable && $this->options['multiple']) { | |
// At this point only interested in individual IDs no matter what type, | |
// just splitting by the allowed delimiters. | |
$names = array_filter(preg_split('/[,+ ]/', $argument)); | |
} | |
elseif ($argument) { | |
$names = array($argument); | |
} | |
// No specified argument should be invalid. | |
else { | |
return FALSE; | |
} | |
$accounts = $this->userStorage->loadByProperties(array('name' => $names)); | |
// If there are no accounts, return FALSE now. As we will not enter the | |
// loop below otherwise. | |
if (empty($accounts)) { | |
return FALSE; | |
} | |
// Validate each account. If any fails break out and return false. | |
foreach ($accounts as $account) { | |
if (!in_array($account->getUserName(), $names) || !$this->validateEntity($account)) { | |
return FALSE; | |
} | |
} | |
return TRUE; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function processSummaryArguments(&$args) { | |
// If the validation says the input is an username, we should reverse the | |
// argument so it works for example for generation summary urls. | |
$uids_arg_keys = array_flip($args); | |
foreach ($this->userStorage->loadMultiple($args) as $uid => $account) { | |
$args[$uids_arg_keys[$uid]] = $account->label(); | |
} | |
} | |
} |