CRM-19007 Optionally disable USPS address...
authorDavid Reedy Jr <davidrjr.konadave@gmail.com>
Tue, 28 Jun 2016 23:53:24 +0000 (18:53 -0500)
committerDavid Reedy Jr <davidrjr.konadave@gmail.com>
Tue, 28 Jun 2016 23:53:24 +0000 (18:53 -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 007b8a33232bbef6522fe9c17b48f4595e1c01d6..e11473b5f0d4832df898c763a0cf17f8f2ce9f19 100644 (file)
@@ -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));
index a9b05493218b4aef836d8387995014630480ff30..e383dfb2c8a15d5ef1dc2bcfb05fb4a1ebdf6e81 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.
    */
@@ -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);
 
index 2f26dd8f9c6f6b406778569fd870d8c1a713b1a5..f624ec3a12c212b0244a73ff9ab40630c2481a91 100644 (file)
 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']) &&
index 28e5014e18b42614485806b47199ebeae4a93b5b..a014203a8e86a4a58437620da8d08afb4cd226f9 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>