Add RegisterValidator.php

This commit is contained in:
Ivor Barhansky 2024-04-24 12:32:43 +00:00
commit 48f6cbeef0
1 changed files with 95 additions and 0 deletions

95
RegisterValidator.php Normal file
View File

@ -0,0 +1,95 @@
<?php
class RegisterValidator
{
private $login = '';
private $email = '';
private $password = '';
private $birthday = '';
private $sex = 0;
public function setLogin($login)
{
$login = preg_replace('!\s+!', ' ', $login); // remove inner spaces
$login = trim($login); // remove outer spaces
if ($this->loginIsAllowed($login) && !$this->loginIsMixed($login)) {
$this->login = $login;
}
return $this;
}
private function loginIsAllowed($login)
{
$disallowed = [
'Мироздатель',
'Мусорщик',
'Комментатор',
];
$d = implode('|', $disallowed);
$pattern = "/\b($d)\b/iu";
return !preg_match($pattern, $login);
}
private function loginIsMixed($login)
{
$en = preg_match("/^(([0-9A-z -])+)$/iu", $login);
$ru = preg_match("/^([а-яёіїє\s\d]*)$/iu", $login);
return ($ru && $en) || (!$ru && !$en);
}
public function setEmail($email)
{
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$this->email = $email;
}
return $this;
}
public function setPassword($password, $passwordVerify)
{
if ($this->password === $passwordVerify) {
$this->password = md5($password);
}
return $this;
}
public function setBirthday($birthday)
{
$bdate = DateTime::createFromFormat('Y-m-d', $birthday);
if ($bdate) {
$this->birthday = $bdate->format('d.m.Y');
}
return $this;
}
public function setSex($sex)
{
if ((int)$sex > 0) {
$this->sex = $sex;
}
return $this;
}
public function verify()
{
if (!empty($this->login) && !empty($this->email) && !empty($this->password) && !empty($this->birthday)) {
return [
'login' => $this->login,
'email' => $this->email,
'password' => $this->password,
'birthday' => $this->birthday,
'sex' => $this->sex,
];
}
return [];
}
}
$rv = new RegisterValidator();
$values = $rv
->setLogin($login)
->setPassword($pass1, $pass2)
->setEmail($email)
->setBirthday($birthday)
->setSex($sex)
->verify();