Skip to content
Permalink
Browse files

Make unsetting the email pattern work as expected.

When set to `null`, only `filter_var()` should be used. This is a
partial backport of #5111
  • Loading branch information...
ndm2
ndm2 committed Nov 9, 2014
1 parent c151ea5 commit f0b6657113f5b0f9e642a6497a52efdeb6b886e3
Showing with 27 additions and 5 deletions.
  1. +8 −5 lib/Cake/Network/Email/CakeEmail.php
  2. +19 −0 lib/Cake/Test/Case/Network/Email/CakeEmailTest.php
@@ -553,7 +553,9 @@ public function headerCharset($charset = null) {
/**
* EmailPattern setter/getter
*
* @param string $regex for email address validation
* @param string|bool|null $regex The pattern to use for email address validation,
* null to unset the pattern and make use of filter_var() instead, false or
* nothing to return the current value
* @return string|$this
*/
public function emailPattern($regex = false) {
@@ -602,10 +604,11 @@ protected function _setEmail($varName, $email, $name) {
* @throws SocketException If email address does not validate
*/
protected function _validateEmail($email) {
if ($this->_emailPattern === null && filter_var($email, FILTER_VALIDATE_EMAIL)) {
return;
}
if (preg_match($this->_emailPattern, $email)) {
if ($this->_emailPattern === null) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
return;
}
} elseif (preg_match($this->_emailPattern, $email)) {
return;
}
throw new SocketException(__d('cake_dev', 'Invalid email: "%s"', $email));
@@ -386,6 +386,25 @@ public function testCustomEmailValidation() {
), $this->CakeEmail->to());
}
/**
* Tests that it is possible to unset the email pattern and make use of filter_var() instead.
*
* @return void
*
* @expectedException SocketException
* @expectedExceptionMessage Invalid email: "fail.@example.com"
*/
public function testUnsetEmailPattern() {
$email = new CakeEmail();
$this->assertSame(CakeEmail::EMAIL_PATTERN, $email->emailPattern());
$email->emailPattern(null);
$this->assertNull($email->emailPattern());
$email->to('pass@example.com');
$email->to('fail.@example.com');
}
/**
* testFormatAddress method
*

0 comments on commit f0b6657

Please sign in to comment.
You can’t perform that action at this time.