towards CRM-10128
authorDeepak Srivastava <deepak.srivastava@webaccess.co.in>
Thu, 5 Sep 2013 14:22:54 +0000 (19:52 +0530)
committerDeepak Srivastava <deepak.srivastava@webaccess.co.in>
Thu, 5 Sep 2013 14:22:54 +0000 (19:52 +0530)
CRM/Contact/BAO/Contact.php
CRM/Event/Form/Registration/Register.php
CRM/Profile/Form.php

index 603dd4e12af682f28722f558c652492b83d1fa75..49fd4b065d18ff4d4c9ea704158639dc98963c7c 100644 (file)
@@ -2067,6 +2067,11 @@ ORDER BY civicrm_email.is_primary DESC";
             $value .= ' ' . $params[$key . '_time'];
           }
 
+          // updateBlankCustomInfo flag is false && $value is blank, do not proceed
+          if (!CRM_Utils_Array::value('updateBlankCustomInfo', $params, TRUE) && ($value == '' || !isset($value))) {
+            continue;
+          }
+
           $valueId = NULL;
           if (CRM_Utils_Array::value('customRecordValues', $params)) {
             if (is_array($params['customRecordValues']) && !empty($params['customRecordValues'])) {
index 719a0a5a5cbb5830f89f131dc19ed40d1c3573e6..381c9cedca2bbca34dba11f1948c7f5129bdb006 100644 (file)
@@ -1362,7 +1362,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration {
    * @return void
    * @access public
    */
-  static function checkRegistration($fields, &$self, $isAdditional = FALSE, $returnContactId = FALSE, $useDedupeRules = FALSE) {
+  static function checkRegistration(&$fields, &$self, $isAdditional = FALSE, $returnContactId = FALSE, $useDedupeRules = FALSE) {
     // CRM-3907, skip check for preview registrations
     // CRM-4320 participant need to walk wizard
     if (!$returnContactId &&
@@ -1406,6 +1406,9 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration {
           }
         }
       }
+      if ($contactID) {
+        $fields['updateBlankCustomInfo'] = FALSE;
+      }
     }
 
     if ($returnContactId) {
index 4a083cc8c51153704c1d3bb974d02bc62dbd8fa1..7fe7a6f30bd52409ac7d426f97112b618e32ad7b 100644 (file)
@@ -59,6 +59,8 @@ class CRM_Profile_Form extends CRM_Core_Form {
    */
   protected $_id;
 
+  protected $_updateBlankInfos = array();
+
   /**
    * The group id that we are editing
    *
@@ -959,6 +961,8 @@ class CRM_Profile_Form extends CRM_Core_Form {
         elseif ($form->_isUpdateDupe == 1) {
           if (!$form->_id) {
             $form->_id = $ids[0];
+            // CRM-10128: flag to ignore empty form fields rather than clearing the existing DB value
+            $form->_updateBlankInfos['updateBlankCustomInfo'] = FALSE;
           }
         }
         else {
@@ -1070,6 +1074,7 @@ class CRM_Profile_Form extends CRM_Core_Form {
    */
   public function postProcess() {
     $params = $this->controller->exportValues($this->_name);
+    $params = $params + $this->_updateBlankInfos;
 
     //if the delete record button is clicked
     if ($this->_deleteButtonName) {