checkUnique = $checkUnique; $this->userLogin = $userLogin; } public function validate($value) { if ($this->isValueBare($value)) { return; } if (!Piwik::isValidEmailString($value)) { throw new Exception(Piwik::translate('General_ValidatorErrorNotEmailLike', [$value])); } if ($this->checkUnique) { $this->isUnique($value); } } /** * check if email already exist in database * @param $email * @throws \Exception */ private function isUnique($email) { if (APIUsersManager::getInstance()->userEmailExists($email)) { throw new Exception(Piwik::translate('UsersManager_ExceptionEmailExists', $email)); } if ($this->userLogin && mb_strtolower($this->userLogin) !== mb_strtolower($email) && APIUsersManager::getInstance()->userExists($email)) { throw new Exception(Piwik::translate('UsersManager_ExceptionEmailExistsAsLogin', $email)); } if (!$this->userLogin && APIUsersManager::getInstance()->userExists($email)) { throw new Exception(Piwik::translate('UsersManager_ExceptionEmailExistsAsLogin', $email)); } if (!Piwik::isValidEmailString($email)) { throw new Exception(Piwik::translate('UsersManager_ExceptionInvalidEmail')); } } }