You are here

public function AdminContentNotification::validateForm in Admin Content Notification 8.3

Add validate handler.

@inheritDoc

Overrides FormBase::validateForm

File

src/Form/AdminContentNotification.php, line 189

Class

AdminContentNotification
Class AdminContentNotification implements settings for admin notification.

Namespace

Drupal\admin_content_notification\Form

Code

public function validateForm(array &$form, FormStateInterface $form_state) {
  $user_input_values = $form_state
    ->getUserInput();
  $admin_content_notification_email_limit = $user_input_values['admin_content_notification_email_limit'];
  if ($admin_content_notification_email_limit != -1) {
    if (!empty($user_input_values['admin_content_notification_email'])) {
      $admin_content_notification_email = explode(',', $user_input_values['admin_content_notification_email']);
      if (count($admin_content_notification_email) > $admin_content_notification_email_limit) {
        $form_state
          ->setErrorByName('admin_content_notification_email', $this
          ->t('Email Ids should be less than ' . $admin_content_notification_email_limit . '.'));
      }
      foreach ($admin_content_notification_email as $email) {
        if (!\Drupal::service('email.validator')
          ->isValid(trim($email))) {
          $form_state
            ->setErrorByName('admin_content_notification_email', $this
            ->t('Some Email Ids are not valid, please add all email ids in a valid format.'));
          break;
        }
      }
    }
    else {
      $roles_notified = array_keys(array_filter($user_input_values['admin_content_notification_roles_notified']));
      if (count($roles_notified)) {
        $ids = $this->adminContentNotificationService
          ->getUsersOfRoles($roles_notified);
        if (count($ids) > $admin_content_notification_email_limit) {
          $form_state
            ->setErrorByName('admin_content_notification_roles_notified', $this
            ->t('User count for the Recipients should be less than ' . $admin_content_notification_email_limit . '.'));
        }
      }
    }
  }
}