From fd830836242df9a3f5c3afed86b270ad0df12ae7 Mon Sep 17 00:00:00 2001 From: David Reedy Jr Date: Tue, 28 Jun 2016 18:53:24 -0500 Subject: [PATCH] CRM-19007 Optionally disable USPS address... ...validation during contact import. --- CRM/Contact/Import/Form/DataSource.php | 5 +++++ CRM/Contact/Import/Form/Preview.php | 10 +++++++++ CRM/Utils/Address/USPS.php | 21 +++++++++++++++++-- .../CRM/Contact/Import/Form/DataSource.tpl | 8 +++++++ 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/CRM/Contact/Import/Form/DataSource.php b/CRM/Contact/Import/Form/DataSource.php index 007b8a3323..e11473b5f0 100644 --- a/CRM/Contact/Import/Form/DataSource.php +++ b/CRM/Contact/Import/Form/DataSource.php @@ -210,6 +210,10 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Core_Form { $this->addElement('text', 'fieldSeparator', ts('Import Field Separator'), array('size' => 2)); + if (Civi::settings()->get('address_standardization_provider') == 'USPS') { + $this->addElement('checkbox', 'disableUSPS', ts('Disable USPS address validation during import?')); + } + $this->addButtons(array( array( 'type' => 'upload', @@ -306,6 +310,7 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Core_Form { $$storeName = $this->exportValue($storeValueName); $this->set($storeName, $$storeName); } + $this->set('disableUSPS', !empty($this->_params['disableUSPS'])); $this->set('dataSource', $this->_params['dataSource']); $this->set('skipColumnHeader', CRM_Utils_Array::value('skipColumnHeader', $this->_params)); diff --git a/CRM/Contact/Import/Form/Preview.php b/CRM/Contact/Import/Form/Preview.php index a9b0549321..e383dfb2c8 100644 --- a/CRM/Contact/Import/Form/Preview.php +++ b/CRM/Contact/Import/Form/Preview.php @@ -36,6 +36,13 @@ */ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview { + /** + * Whether USPS validation should be disabled during import. + * + * @var bool + */ + protected $_disableUSPS; + /** * Set variables up before form is built. */ @@ -47,6 +54,7 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview { $conflictRowCount = $this->get('conflictRowCount'); $mismatchCount = $this->get('unMatchCount'); $columnNames = $this->get('columnNames'); + $this->_disableUSPS = $this->get('disableUSPS'); //assign column names $this->assign('columnNames', $columnNames); @@ -282,6 +290,8 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview { CRM_ACL_BAO_Cache::updateEntry($userID); } + CRM_Utils_Address_USPS::disable($this->_disableUSPS); + // run the import $importJob->runImport($this); diff --git a/CRM/Utils/Address/USPS.php b/CRM/Utils/Address/USPS.php index 2f26dd8f9c..f624ec3a12 100644 --- a/CRM/Utils/Address/USPS.php +++ b/CRM/Utils/Address/USPS.php @@ -36,13 +36,30 @@ class CRM_Utils_Address_USPS { /** - * Check address. + * Whether USPS validation should be disabled during import. * - * @param array $values + * @var bool + */ + protected static $_disabled = FALSE; + + /** + * @param $disabled + * + * @return void + */ + public static function disable($disable = TRUE) { + self::$_disabled = $disable; + } + + /** + * @param $values * * @return bool */ public static function checkAddress(&$values) { + if (self::$_disabled) { + return FALSE; + } if (!isset($values['street_address']) || (!isset($values['city']) && !isset($values['state_province']) && diff --git a/templates/CRM/Contact/Import/Form/DataSource.tpl b/templates/CRM/Contact/Import/Form/DataSource.tpl index 28e5014e18..a014203a8e 100644 --- a/templates/CRM/Contact/Import/Form/DataSource.tpl +++ b/templates/CRM/Contact/Import/Form/DataSource.tpl @@ -98,6 +98,14 @@    {ts}Select Saved Mapping or Leave blank to create a new One.{/ts} { /if} + + {if $form.disableUSPS} + + + {$form.disableUSPS.html} + + + {/if} -- 2.25.1