class UniqueNicknameValidator in Open Social 10.0.x
Same name and namespace in other branches
- 8.9 modules/social_features/social_profile/modules/social_profile_fields/src/Plugin/Validation/Constraint/UniqueNicknameValidator.php \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator
- 8.7 modules/social_features/social_profile/modules/social_profile_fields/src/Plugin/Validation/Constraint/UniqueNicknameValidator.php \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator
- 8.8 modules/social_features/social_profile/modules/social_profile_fields/src/Plugin/Validation/Constraint/UniqueNicknameValidator.php \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator
- 10.3.x modules/social_features/social_profile/modules/social_profile_fields/src/Plugin/Validation/Constraint/UniqueNicknameValidator.php \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator
- 10.1.x modules/social_features/social_profile/modules/social_profile_fields/src/Plugin/Validation/Constraint/UniqueNicknameValidator.php \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator
- 10.2.x modules/social_features/social_profile/modules/social_profile_fields/src/Plugin/Validation/Constraint/UniqueNicknameValidator.php \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator
Validates the UniqueInteger constraint.
Hierarchy
- class \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator extends \Symfony\Component\Validator\ConstraintValidator implements ContainerInjectionInterface
Expanded class hierarchy of UniqueNicknameValidator
File
- modules/
social_features/ social_profile/ modules/ social_profile_fields/ src/ Plugin/ Validation/ Constraint/ UniqueNicknameValidator.php, line 14
Namespace
Drupal\social_profile_fields\Plugin\Validation\ConstraintView source
class UniqueNicknameValidator extends ConstraintValidator implements ContainerInjectionInterface {
/**
* Profile storage.
*
* @var \Drupal\profile\ProfileStorageInterface
*/
protected $profileStorage;
/**
* UniqueNicknameValidator constructor.
*
* @param \Drupal\profile\ProfileStorageInterface $profile_storage
* Profile storage.
*/
public function __construct(ProfileStorageInterface $profile_storage) {
$this->profileStorage = $profile_storage;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('entity_type.manager')
->getStorage('profile'));
}
/**
* {@inheritdoc}
*/
public function validate($items, Constraint $constraint) {
foreach ($items as $item) {
// Next check if the value is unique.
if (!$this
->isUnique($item->value)) {
$this->context
->addViolation($constraint->notUnique, [
'%value' => $item->value,
]);
}
}
}
/**
* Checks if a nickname is unique.
*
* @param string $value
* The provided nickname.
*
* @return bool
* Returns TRUE if the name is not taken. Returns FALSE if the name is
* taken.
*/
private function isUnique($value) {
// Get all profiles with the provided nickname.
$profiles = $this->profileStorage
->loadByProperties([
'field_profile_nick_name' => $value,
]);
// Remove current profile from profiles.
foreach ($profiles as $key => $profile) {
// Get the profile we're performing actions on.
$current_profile = _social_profile_get_profile_from_route();
if ($profile
->id() === $current_profile
->get('profile_id')->value) {
unset($profiles[$key]);
}
}
// If we have results, the name is taken.
return count($profiles) === 0;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
UniqueNicknameValidator:: |
protected | property | Profile storage. | |
UniqueNicknameValidator:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
|
UniqueNicknameValidator:: |
private | function | Checks if a nickname is unique. | |
UniqueNicknameValidator:: |
public | function | ||
UniqueNicknameValidator:: |
public | function | UniqueNicknameValidator constructor. |