LogintobogganMailNameValidator.php in LoginToboggan 8
File
src/Plugin/Validation/Constraint/LogintobogganMailNameValidator.php
View source
<?php
namespace Drupal\logintoboggan\Plugin\Validation\Constraint;
use Drupal\Core\Database\Database;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class LogintobogganMailNameValidator extends ConstraintValidator {
public function validate($items, Constraint $constraint) {
$parent = $items
->getEntity();
$uid = $parent
->get('uid')->value;
$name = $items
->get(0)->value;
$connection = Database::getConnection();
if (is_null($uid)) {
$result = $connection
->select('users_field_data', 'ufd')
->fields('ufd', [
'mail',
])
->condition('mail', $name, 'LIKE')
->countQuery()
->execute()
->fetchField();
}
else {
$result = $connection
->select('users_field_data', 'ufd')
->fields('ufd', [
'mail',
])
->condition('mail', $name, 'LIKE')
->condition('uid', $uid, '<>')
->countQuery()
->execute()
->fetchField();
}
if ($result > 0) {
$this->context
->addViolation($constraint->message, []);
}
}
}