You are here

class UniqueNicknameValidator in Open Social 8.9

Same name and namespace in other branches
  1. 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
  2. 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
  3. 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
  4. 10.0.x modules/social_features/social_profile/modules/social_profile_fields/src/Plugin/Validation/Constraint/UniqueNicknameValidator.php \Drupal\social_profile_fields\Plugin\Validation\Constraint\UniqueNicknameValidator
  5. 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
  6. 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

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\Constraint
View 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.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

Namesort descending Modifiers Type Description Overrides
UniqueNicknameValidator::$profileStorage protected property Profile storage.
UniqueNicknameValidator::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create
UniqueNicknameValidator::isUnique private function Checks if a nickname is unique.
UniqueNicknameValidator::validate public function Checks if the passed value is valid.
UniqueNicknameValidator::__construct public function UniqueNicknameValidator constructor.