diff --git a/controllers/admin/AdminAddressesController.php b/controllers/admin/AdminAddressesController.php index c07147afb..959687eef 100644 --- a/controllers/admin/AdminAddressesController.php +++ b/controllers/admin/AdminAddressesController.php @@ -344,28 +344,14 @@ class AdminAddressesControllerCore extends AdminController if ((int)$country->contains_states && !$id_state) $this->errors[] = Tools::displayError('An address located in a country containing states must have a state selected.'); - /* Check zip code */ - if ($country->need_zip_code) - { - $zip_code_format = $country->zip_code_format; - if (($postcode = Tools::getValue('postcode')) && $zip_code_format) - { - $zip_regexp = '/^'.$zip_code_format.'$/ui'; - $zip_regexp = str_replace(' ', '( |)', $zip_regexp); - $zip_regexp = str_replace('-', '(-|)', $zip_regexp); - $zip_regexp = str_replace('N', '[0-9]', $zip_regexp); - $zip_regexp = str_replace('L', '[a-zA-Z]', $zip_regexp); - $zip_regexp = str_replace('C', $country->iso_code, $zip_regexp); - if (!preg_match($zip_regexp, $postcode)) - $this->errors[] = Tools::displayError('Your Postal / Zip Code is incorrect.').'
'. - Tools::displayError('It must be entered as follows:').' '. - str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $zip_code_format))); - } - else if ($zip_code_format) - $this->errors[] = Tools::displayError('A Postal / Zip Code required.'); - else if ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) - $this->errors[] = Tools::displayError('Your Postal / Zip Code is incorrect.'); - } + $postcode = Tools::getValue('postcode'); + /* Check zip code format */ + if ($country->zip_code_format && !$country->checkZipCode($postcode)) + $this->errors[] = Tools::displayError('Your Postal / Zip Code is incorrect.').'
'.Tools::displayError('It must be entered as follows:').' '.str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))); + elseif(empty($postcode) && $country->need_zip_code) + $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); + elseif ($postcode && !Validate::isPostCode($postcode)) + $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.'); if (Configuration::get('PS_ONE_PHONE_AT_LEAST') && !Tools::getValue('phone') && !Tools::getValue('phone_mobile')) $this->errors[] = Tools::displayError('You must register at least one phone number.'); diff --git a/controllers/admin/AdminStoresController.php b/controllers/admin/AdminStoresController.php index 430673708..03a001d34 100644 --- a/controllers/admin/AdminStoresController.php +++ b/controllers/admin/AdminStoresController.php @@ -354,40 +354,15 @@ class AdminStoresControllerCore extends AdminController if (empty($latitude) || empty($longitude)) $this->errors[] = Tools::displayError('Latitude and longitude are required.'); - - /* Check zip code */ - if ($country->need_zip_code) - { - $zip_code_format = $country->zip_code_format; - if (($postcode = Tools::getValue('postcode')) && $zip_code_format) - { - $zip_regexp = '/^'.$zip_code_format.'$/ui'; - $zip_regexp = str_replace(' ', '( |)', $zip_regexp); - $zip_regexp = str_replace('-', '(-|)', $zip_regexp); - $zip_regexp = str_replace('N', '[0-9]', $zip_regexp); - $zip_regexp = str_replace('L', '[a-zA-Z]', $zip_regexp); - $zip_regexp = str_replace('C', $country->iso_code, $zip_regexp); - if (!preg_match($zip_regexp, $postcode)) - $this->errors[] = Tools::displayError('Your Postal / Zip Code is incorrect.').'
'.Tools::displayError('It must be entered as follows:').' '. - str_replace( - 'C', - $country->iso_code, - str_replace( - 'N', - '0', - str_replace( - 'L', - 'A', - $zip_code_format - ) - ) - ); - } - else if ($zip_code_format) - $this->errors[] = Tools::displayError('A Postal / Zip Code required.'); - else if ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) - $this->errors[] = Tools::displayError('Your Postal / Zip Code is incorrect.'); - } + + $postcode = Tools::getValue('postcode'); + /* Check zip code format */ + if ($country->zip_code_format && !$country->checkZipCode($postcode)) + $this->errors[] = Tools::displayError('Your Postal / Zip Code is incorrect.').'
'.Tools::displayError('It must be entered as follows:').' '.str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))); + elseif(empty($postcode) && $country->need_zip_code) + $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); + elseif ($postcode && !Validate::isPostCode($postcode)) + $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.'); /* Store hours */ $_POST['hours'] = array(); diff --git a/controllers/front/AddressController.php b/controllers/front/AddressController.php index dcb01a619..0d5a399c3 100644 --- a/controllers/front/AddressController.php +++ b/controllers/front/AddressController.php @@ -145,27 +145,15 @@ class AddressControllerCore extends FrontController $address->address1 = $normalize->AddressLineStandardization($address->address1); $address->address2 = $normalize->AddressLineStandardization($address->address2); } - - // Check country zip code - $zip_code_format = $country->zip_code_format; - if ($country->need_zip_code) - { - if (($postcode = Tools::getValue('postcode')) && $zip_code_format) - { - if (!$country->checkZipCode($postcode)) - $this->errors[] = sprintf( - Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), - str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))) - ); - } - else if ($zip_code_format) - $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); - else if ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) - $this->errors[] = sprintf( - Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), - str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))) - ); - } + + $postcode = Tools::getValue('postcode'); + /* Check zip code format */ + if ($country->zip_code_format && !$country->checkZipCode($postcode)) + $this->errors[] = sprintf(Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format)))); + elseif(empty($postcode) && $country->need_zip_code) + $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); + elseif ($postcode && !Validate::isPostCode($postcode)) + $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.'); // Check country DNI if ($country->isNeedDni() && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) diff --git a/controllers/front/AuthController.php b/controllers/front/AuthController.php index 055831105..577874c71 100644 --- a/controllers/front/AuthController.php +++ b/controllers/front/AuthController.php @@ -486,22 +486,14 @@ class AuthControllerCore extends FrontController $address->address2 = $normalize->AddressLineStandardization($address->address2); } - $country = new Country((int)Tools::getValue('id_country')); - if ($country->need_zip_code) - { - if (($postcode = Tools::getValue('postcode')) && $country->zip_code_format) - { - if (!$country->checkZipCode($postcode)) - $this->errors[] = sprintf( - Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), - str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format))) - ); - } - elseif ($country->zip_code_format) - $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); - elseif ($postcode && !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) - $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.'); - } + $postcode = Tools::getValue('postcode'); + /* Check zip code format */ + if ($country->zip_code_format && !$country->checkZipCode($postcode)) + $this->errors[] = sprintf(Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format)))); + elseif(empty($postcode) && $country->need_zip_code) + $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); + elseif ($postcode && !Validate::isPostCode($postcode)) + $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.'); if ($country->need_identification_number && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.');