CRM-14747 - Profiles - Fixed error caused by profile fields with empty labels
authorKirk Jackson <kirk@caat.org.uk>
Tue, 27 May 2014 04:42:03 +0000 (05:42 +0100)
committerKirk Jackson <kirk@caat.org.uk>
Tue, 27 May 2014 04:42:03 +0000 (05:42 +0100)
----------------------------------------
* CRM-14747:
  https://issues.civicrm.org/jira/browse/CRM-14747

CRM/Core/BAO/UFGroup.php
CRM/Profile/Page/Dynamic.php

index 68996800464f7e200e8529ffeb7d0cd780ca768a..cd7a474c1250eb3b34c83bcf9fc657cb0ca2b53f 100644 (file)
@@ -958,7 +958,6 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
     $websiteTypes  = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Website', 'website_type_id');
 
     $multipleFields = array('url');
-    $nullIndex = $nullValueIndex = ' ';
 
     //start of code to set the default values
     foreach ($fields as $name => $field) {
@@ -972,18 +971,12 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
         continue;
       }
 
+      // Create a unique, non-empty index for each field.
       $index = $field['title'];
-      //handle for the label not set for the field
-      if (empty($field['title'])) {
-        $index = $nullIndex;
-        $nullIndex .= $nullIndex;
-      }
+      if ($index === '') $index = ' ';
+      while (array_key_exists($index, $values))
+        $index .= ' ';
 
-      //handle the case to avoid re-write where the profile field labels are the same
-      if (array_key_exists($index, $values)) {
-        $index .= $nullValueIndex;
-        $nullValueIndex .= $nullValueIndex;
-      }
       $params[$index] = $values[$index] = '';
       $customFieldName = NULL;
       // hack for CRM-665
index f37b42731a5bc788df3fd0e1f21e25fb05f0970f..08b3bcb24645e40525a8092ec559dba15c48549c 100644 (file)
@@ -321,16 +321,15 @@ class CRM_Profile_Page_Dynamic extends CRM_Core_Page {
       $profileFields = array();
       $labels = array();
 
-      //CRM-14338
-      $nullValueIndex = ' ';
       foreach ($fields as $name => $field) {
-        if ( isset($labels[$field['title']]) ) {
-          $labels[$field['title'].$nullValueIndex] = preg_replace('/\s+|\W+/', '_', $name);
-          $nullValueIndex .= $nullValueIndex;
-        }
-        else {
-          $labels[$field['title']] = preg_replace('/\s+|\W+/', '_', $name);
-        }
+        //CRM-14338
+        // Create a unique, non-empty index for each field.
+        $index = $field['title'];
+        if ($index === '') $index = ' ';
+        while (array_key_exists($index, $labels))
+          $index .= ' ';
+
+        $labels[$index] = preg_replace('/\s+|\W+/', '_', $name);
       }
 
       foreach ($values as $title => $value) {