����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/thread-self/root/home/builderbox/././././www/common/Validation/Validators/ |
Upload File : |
<?php
namespace Common\Validation\Validators;
use App\User;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Validation\Concerns\ValidatesAttributes;
class EmailsAreValid implements Rule
{
use ValidatesAttributes;
/**
* @var int
*/
private $maxEmails = 5;
/**
* @var bool
*/
private $validateExistence;
/**
* @var string
*/
private $validationMessage;
public function __construct($validateExistence = true)
{
$this->validateExistence = $validateExistence;
}
/**
* @inheritDoc
*/
public function passes($attribute, $emails)
{
$invalidEmails = array_filter($emails, function($email) use($attribute) {
return !$this->validateEmail($attribute, $email, []);
});
if ( ! empty($invalidEmails)) {
$this->validationMessage = $this->invalidEmailsMessage($invalidEmails);
return false;
}
if ($this->validateExistence) {
$dbEmails = app(User::class)->whereIn('email', $emails)->pluck('email');
$nonExistentEmails = array_filter($emails, function($email) use($dbEmails) {
return !$dbEmails->contains($email);
});
if ( ! empty($nonExistentEmails)) {
$this->validationMessage = $this->emailsDontExistMessage($nonExistentEmails);
return false;
}
}
return true;
}
private function invalidEmailsMessage(array $emails): string
{
$emailString = implode(', ', array_slice($emails, 0, $this->maxEmails));
if (count($emails) > $this->maxEmails) {
$emailString .= '...';
}
return trans("Invalid emails: :emails", ['emails' => $emailString]);
}
private function emailsDontExistMessage(array $emails): string
{
$emailString = implode(', ', array_slice($emails, 0, $this->maxEmails));
if (count($emails) > $this->maxEmails) {
$emailString .= '...';
}
return trans("Could not find users for emails: :emails", ['emails' => $emailString]);
}
/**
* @inheritDoc
*/
public function message()
{
return $this->validationMessage;
}
}