legacy support for group and tag
authormonishdeb <monish.deb@webaccessglobal.com>
Mon, 28 Sep 2015 12:49:49 +0000 (18:19 +0530)
committermonishdeb <monish.deb@webaccessglobal.com>
Mon, 28 Sep 2015 12:50:40 +0000 (18:20 +0530)
CRM/Contact/BAO/Query.php
tests/phpunit/CRM/Contact/BAO/QueryTestDataProvider.php

index c24fe198e0b432b03e5e51520e66e1e66199ee09..ed780c0970b67f9e67be51de45852cd7049a2cb2 100644 (file)
@@ -1485,6 +1485,9 @@ class CRM_Contact_BAO_Query {
     }
 
     foreach ($formValues as $id => $values) {
+
+      self::legacyConvertFormValues($id, $values);
+
       if (self::isAlreadyProcessedForQueryFormat($values)) {
         $params[] = $values;
         continue;
@@ -1562,6 +1565,25 @@ class CRM_Contact_BAO_Query {
     return $params;
   }
 
+  /**
+   * Function to support legacy format for groups and tags.
+   *
+   * @param string $id
+   * @param array|int $values
+   *
+   */
+   public static function legacyConvertFormValues($id, &$values) {
+     if (in_array($id, array('group', 'tag')) && is_array($values)) {
+       // prior to 4.7, formValues for some attributes (e.g. group, tag) are stored in array(id1 => 1, id2 => 1),
+       // as per the recent Search fixes $values need to be in standard array(id1, id2) format
+       $ids = array_keys($values, 1);
+       if (count($ids) > 1 || (count($ids) == 1 && key($values) > 1)) {
+         $values = $ids;
+       }
+     }
+  }
+
+
   /**
    * Fix values from query from/to something no-one cared enough to document.
    *
index ca44aaa6c9b281539c2c7702e56520b1f7390cec..1d6104dd967377ac25697bc2efae0b673e67d9ec 100644 (file)
@@ -95,6 +95,24 @@ class CRM_Contact_BAO_QueryTestDataProvider implements Iterator {
         '24',
       ),
     ),
+    //  Include static groups 3 and 5 in legacy format
+    array(
+      'fv' => array('group' => array('3' => 1, '5' => 1)),
+      'id' => array(
+        '13',
+        '14',
+        '15',
+        '16',
+        '17',
+        '18',
+        '19',
+        '20',
+        '21',
+        '22',
+        '23',
+        '24',
+      ),
+    ),
     //  Include tag 7
     array(
       'fv' => array('tag' => '7'),
@@ -111,7 +129,7 @@ class CRM_Contact_BAO_QueryTestDataProvider implements Iterator {
     ),
     //  Include tag 9
     array(
-      'fv' => array('tag' => '9'),
+      'fv' => array('tag' => array('9' => 1)),
       'id' => array(
         '10',
         '12',