From fc5c07927f82f7d3a1f0ac3c694cf70bc5aa6643 Mon Sep 17 00:00:00 2001 From: yuri Date: Tue, 20 Oct 2015 12:57:42 +0300 Subject: [PATCH] fix email address case --- application/Espo/Entities/EmailAddress.php | 7 +++---- application/Espo/Repositories/EmailAddress.php | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/application/Espo/Entities/EmailAddress.php b/application/Espo/Entities/EmailAddress.php index 261cbe4a83..2ebed5330a 100644 --- a/application/Espo/Entities/EmailAddress.php +++ b/application/Espo/Entities/EmailAddress.php @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU General Public License * along with EspoCRM. If not, see http://www.gnu.org/licenses/. - ************************************************************************/ + ************************************************************************/ namespace Espo\Entities; @@ -33,7 +33,6 @@ class EmailAddress extends \Espo\Core\ORM\Entity throw new Error("Not valid email address '{$value}'"); } $this->valuesContainer['name'] = $value; - $this->set('lower', strtolower($value)); - } - + $this->set('lower', strtolower($value)); + } } diff --git a/application/Espo/Repositories/EmailAddress.php b/application/Espo/Repositories/EmailAddress.php index 3669ec0bba..03918d0506 100644 --- a/application/Espo/Repositories/EmailAddress.php +++ b/application/Espo/Repositories/EmailAddress.php @@ -65,7 +65,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB $pdo = $this->getEntityManager()->getPDO(); $sql = " - SELECT email_address.name, email_address.invalid, email_address.opt_out AS optOut, entity_email_address.primary + SELECT email_address.name, email_address.lower, email_address.invalid, email_address.opt_out AS optOut, entity_email_address.primary FROM entity_email_address JOIN email_address ON email_address.id = entity_email_address.email_address_id AND email_address.deleted = 0 WHERE @@ -80,6 +80,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB foreach ($rows as $row) { $obj = new \StdClass(); $obj->emailAddress = $row['name']; + $obj->lower = $row['lower']; $obj->primary = ($row['primary'] == '1') ? true : false; $obj->optOut = ($row['optOut'] == '1') ? true : false; $obj->invalid = ($row['invalid'] == '1') ? true : false; @@ -180,22 +181,25 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB foreach ($emailAddressData as $row) { $key = $row->emailAddress; if (!empty($key)) { + $key = strtolower($key); $hash[$key] = array( 'primary' => $row->primary ? true : false, 'optOut' => $row->optOut ? true : false, 'invalid' => $row->invalid ? true : false, + 'emailAddress' => $row->emailAddress ); } } $hashPrev = array(); foreach ($previousEmailAddressData as $row) { - $key = $row->emailAddress; + $key = $row->lower; if (!empty($key)) { $hashPrev[$key] = array( 'primary' => $row->primary ? true : false, 'optOut' => $row->optOut ? true : false, 'invalid' => $row->invalid ? true : false, + 'emailAddress' => $row->emailAddress ); } } @@ -216,7 +220,10 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB if (array_key_exists($key, $hashPrev)) { $new = false; - $changed = $hash[$key]['optOut'] != $hashPrev[$key]['optOut'] || $hash[$key]['invalid'] != $hashPrev[$key]['invalid']; + $changed = + $hash[$key]['optOut'] != $hashPrev[$key]['optOut'] || + $hash[$key]['invalid'] != $hashPrev[$key]['invalid'] || + $hash[$key]['emailAddress'] !== $hashPrev[$key]['emailAddress']; if ($hash[$key]['primary']) { if ($hash[$key]['primary'] == $hashPrev[$key]['primary']) { $primary = false; @@ -259,6 +266,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB $emailAddress->set(array( 'optOut' => $hash[$address]['optOut'], 'invalid' => $hash[$address]['invalid'], + 'name' => $hash[$address]['emailAddress'] )); $this->save($emailAddress); } @@ -270,7 +278,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB $emailAddress = $this->get(); $emailAddress->set(array( - 'name' => $address, + 'name' => $hash[$address]['emailAddress'], 'optOut' => $hash[$address]['optOut'], 'invalid' => $hash[$address]['invalid'], )); @@ -280,6 +288,7 @@ class EmailAddress extends \Espo\Core\ORM\Repositories\RDB $emailAddress->set(array( 'optOut' => $hash[$address]['optOut'], 'invalid' => $hash[$address]['invalid'], + 'name' => $hash[$address]['emailAddress'] )); $this->save($emailAddress); }