CRM-18276 Fixing truncated custom data tables array with GROUP_CONCAT
authorJoseph Lacey <joseph@palantetech.coop>
Wed, 23 Mar 2016 22:16:00 +0000 (18:16 -0400)
committerJoseph Lacey <joseph@palantetech.coop>
Wed, 23 Mar 2016 22:16:00 +0000 (18:16 -0400)
----------------------------------------
* CRM-18276: Report custom data table retrieval fails when tables are more than 1024 characters
  https://issues.civicrm.org/jira/browse/CRM-18276

CRM/Report/Form.php

index ebbe3f01ee471c8530a91da92abbd6f963b5b799..8a41ce49e7905084b2bc8cfcc9c83afaea872f95 100644 (file)
@@ -3658,7 +3658,12 @@ ORDER BY cg.weight, cf.weight";
       return;
     }
     $mapper = CRM_Core_BAO_CustomQuery::$extendsMap;
-    $customTables = explode(',', CRM_Core_DAO::singleValueQuery("SELECT GROUP_CONCAT(table_name) FROM civicrm_custom_group"));
+    //CRM-18276 GROUP_CONCAT could be used with singleValueQuery and then exploded,
+    //but by default that truncates to 1024 characters, which causes errors with installs with lots of custom field sets
+    $customTablesDAO = CRM_Core_DAO::executeQuery("SELECT table_name FROM civicrm_custom_group", CRM_Core_DAO::$_nullArray);
+    while ($customTablesDAO->fetch()) {
+      $customTables[] = $customTablesDAO->table_name;
+    }
 
     foreach ($this->_columns as $table => $prop) {
       if (in_array($table, $customTables)) {