CRM-19007 Optionally disable USPS address...
authorDavid Reedy Jr <davidrjr.konadave@gmail.com>
Fri, 24 Jun 2016 23:54:13 +0000 (18:54 -0500)
committerDavid Reedy Jr <davidrjr.konadave@gmail.com>
Fri, 24 Jun 2016 23:54:13 +0000 (18:54 -0500)
...validation during contact import.

CRM/Contact/Import/Form/DataSource.php
CRM/Contact/Import/Form/Preview.php
CRM/Utils/Address/USPS.php
templates/CRM/Contact/Import/Form/DataSource.tpl

index d30df0ad53f8e049accbcdbaba0345d2cfb5fc72..b18665b7768d4f11aa4dc7fa6da98978da8c3976 100644 (file)
@@ -217,6 +217,11 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Core_Form {
 
     $this->addElement('text', 'fieldSeparator', ts('Import Field Separator'), array('size' => 2));
 
+    if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::ADDRESS_STANDARDIZATION_PREFERENCES_NAME,
+      'address_standardization_provider') == 'USPS') {
+      $this->addElement('checkbox', 'disableUSPS', ts('Disable USPS address validation during import?'));
+    }
+
     $this->addButtons(array(
         array(
           'type' => 'upload',
@@ -320,6 +325,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));
index fd8ba0bba0ac342d7bae917ea200c062673e87d7..a3c5faa8993439b207c447c5cad5197e7f0c2621 100644 (file)
  */
 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.
    *
@@ -52,6 +59,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);
@@ -292,6 +300,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);
 
index a23df1eb717990591e5f8afce652833ef3f8932b..301ea92d480da67f2fedbca10925194f6f160f7a 100644 (file)
  */
 class CRM_Utils_Address_USPS {
 
+  /**
+   * Whether USPS validation should be disabled during import.
+   *
+   * @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;
+    }
     if (!isset($values['street_address']) ||
       (!isset($values['city']) &&
         !isset($values['state_province']) &&
index 2ec370e8a3bde0c2f9f8a206ea523f11ddc103f6..754170bce6a0dfd4ec277d277ae456bbc9e0526e 100644 (file)
       &nbsp;&nbsp;&nbsp;<span class="description">{ts}Select Saved Mapping or Leave blank to create a new One.{/ts}</span></td>
          </tr>
         { /if}
+
+        {if $form.disableUSPS}
+         <tr  class="crm-import-datasource-form-block-disableUSPS">
+              <td class="label"></td>
+              <td>{$form.disableUSPS.html} <label for="disableUSPS">{$form.disableUSPS.label}</label></td>
+         </tr>
+
+        {/if}
  </table>
   </div>