You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
990 B
45 lines
990 B
<?php |
|
|
|
namespace Egulias\EmailValidator\Validation; |
|
|
|
use Egulias\EmailValidator\EmailLexer; |
|
use Egulias\EmailValidator\Exception\InvalidEmail; |
|
use Egulias\EmailValidator\Validation\Error\SpoofEmail; |
|
use \Spoofchecker; |
|
|
|
class SpoofCheckValidation implements EmailValidation |
|
{ |
|
/** |
|
* @var InvalidEmail |
|
*/ |
|
private $error; |
|
|
|
public function __construct() |
|
{ |
|
if (!extension_loaded('intl')) { |
|
throw new \LogicException(sprintf('The %s class requires the Intl extension.', __CLASS__)); |
|
} |
|
} |
|
|
|
public function isValid($email, EmailLexer $emailLexer) |
|
{ |
|
$checker = new Spoofchecker(); |
|
$checker->setChecks(Spoofchecker::SINGLE_SCRIPT); |
|
|
|
if ($checker->isSuspicious($email)) { |
|
$this->error = new SpoofEmail(); |
|
} |
|
|
|
return $this->error === null; |
|
} |
|
|
|
public function getError() |
|
{ |
|
return $this->error; |
|
} |
|
|
|
public function getWarnings() |
|
{ |
|
return []; |
|
} |
|
}
|
|
|