CRM-13123 - Fix serialization metadata for uf group type field
authorColeman Watts <coleman@civicrm.org>
Sun, 31 Dec 2017 20:01:57 +0000 (15:01 -0500)
committerColeman Watts <coleman@civicrm.org>
Sun, 31 Dec 2017 20:10:41 +0000 (15:10 -0500)
CRM/Core/DAO.php
CRM/Core/DAO/UFGroup.php
xml/schema/Core/UFGroup.xml

index ef96f423289be231d992c1c07061e46a5077bce7..d5eab412c1ea9775066b6ce247afbd1969dd4a82 100644 (file)
@@ -83,7 +83,11 @@ class CRM_Core_DAO extends DB_DataObject {
     /**
      * @deprecated format using php serialize()
      */
-    SERIALIZE_PHP = 4;
+    SERIALIZE_PHP = 4,
+    /**
+     * Comma separated string, no quotes, no spaces
+     */
+    SERIALIZE_COMMA = 5;
 
   /**
    * Define entities that shouldn't be created or deleted when creating/ deleting
@@ -2615,6 +2619,7 @@ SELECT contact_id
    * @param array|NULL $value
    * @param $serializationType
    * @return string|NULL
+   * @throws \Exception
    */
   public static function serializeField($value, $serializationType) {
     if ($value === NULL) {
@@ -2632,6 +2637,12 @@ SELECT contact_id
 
       case self::SERIALIZE_PHP:
         return is_array($value) ? serialize($value) : $value;
+
+      case self::SERIALIZE_COMMA:
+        return is_array($value) ? implode(',', $value) : $value;
+
+      default:
+        throw new Exception('Unknown serialization method for field.');
     }
   }
 
@@ -2641,6 +2652,7 @@ SELECT contact_id
    * @param string|null $value
    * @param $serializationType
    * @return array|null
+   * @throws \Exception
    */
   public static function unSerializeField($value, $serializationType) {
     if ($value === NULL) {
@@ -2661,6 +2673,12 @@ SELECT contact_id
 
       case self::SERIALIZE_PHP:
         return strlen($value) ? unserialize($value) : array();
+
+      case self::SERIALIZE_COMMA:
+        return explode(',', trim(str_replace(', ', '', $value)));
+
+      default:
+        throw new Exception('Unknown serialization method for field.');
     }
   }
 
index 44300b6f4ff20885645054c730a65c413c46bd89..a7c90e8753b7182bdec7461f924331d7b0ffbc3f 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UFGroup.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2c943baba637124caec29c4aefeb9228)
+ * (GenCodeChecksum:a33112c87c32c1af77464d08a8715bdb)
  */
 
 /**
@@ -43,7 +43,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO {
   public $is_active;
 
   /**
-   * This column will store a comma separated list of the type(s) of profile fields.
+   * Comma separated list of the type(s) of profile fields.
    *
    * @var string
    */
@@ -260,7 +260,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO {
           'name' => 'group_type',
           'type' => CRM_Utils_Type::T_STRING,
           'title' => ts('Profile Group Type'),
-          'description' => 'This column will store a comma separated list of the type(s) of profile fields.',
+          'description' => 'Comma separated list of the type(s) of profile fields.',
           'maxlength' => 255,
           'size' => CRM_Utils_Type::HUGE,
           'import' => TRUE,
@@ -272,7 +272,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO {
           'entity' => 'UFGroup',
           'bao' => 'CRM_Core_BAO_UFGroup',
           'localizable' => 0,
-          'serialize' => self::SERIALIZE_SEPARATOR_TRIMMED,
+          'serialize' => self::SERIALIZE_COMMA,
         ],
         'title' => [
           'name' => 'title',
index 69784bf2249f7a6305df1f4196a5c2f5b3c5a4c1..e8da1e09dcc628a1103734925f8fe91f808e886c 100644 (file)
@@ -33,8 +33,8 @@
     <type>varchar</type>
     <length>255</length>
     <import>true</import>
-    <comment>This column will store a comma separated list of the type(s) of profile fields.</comment>
-    <serialize>SEPARATOR_TRIMMED</serialize>
+    <comment>Comma separated list of the type(s) of profile fields.</comment>
+    <serialize>COMMA</serialize>
     <add>2.1</add>
   </field>
   <field>