CRM-19184 - Activities target contact list does not truncate
[civicrm-core.git] / CRM / Report / Form.php
index 04be6ad607de867f000cc8275268315c55692348..a4c589826249877b62b536e9fb16ddd825107417 100644 (file)
@@ -2644,35 +2644,6 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND
     return $sql;
   }
 
-  /**
-   * append select with ANY_VALUE() keyword.
-   *
-   * @param array $selectClauses
-   * @param array $groupBy - Columns already included in GROUP By clause.
-   */
-  public function appendSelect($selectClauses, $groupBy) {
-    $mysqlVersion = CRM_Core_DAO::singleValueQuery('SELECT VERSION()');
-    $sqlMode = explode(',', CRM_Core_DAO::singleValueQuery('SELECT @@sql_mode'));
-
-    // Disable only_full_group_by mode for lower sql versions.
-    if (version_compare($mysqlVersion, '5.7', '<') || (!empty($sqlMode) && !in_array('ONLY_FULL_GROUP_BY', $sqlMode))) {
-      $key = array_search('ONLY_FULL_GROUP_BY', $sqlMode);
-      unset($sqlMode[$key]);
-      CRM_Core_DAO::executeQuery("SET SESSION sql_mode = '" . implode(',', $sqlMode) . "'");
-      return;
-    }
-    $groupBy = array_map('trim', (array) $groupBy);
-    $aggregateFunctions = '/(ROUND|AVG|COUNT|GROUP_CONCAT|SUM|MAX|MIN)\(/i';
-    foreach ($selectClauses as $key => &$val) {
-      list($selectColumn, $alias) = array_pad(preg_split('/ as /i', $val), 2, NULL);
-      // append ANY_VALUE() keyword
-      if (!in_array($selectColumn, $groupBy) && preg_match($aggregateFunctions, trim($selectColumn)) !== 1) {
-        $val = str_replace($selectColumn, "ANY_VALUE({$selectColumn})", $val);
-      }
-    }
-    $this->_select = "SELECT " . implode(', ', $selectClauses) . " ";
-  }
-
   /**
    * Build group by clause.
    */
@@ -2846,7 +2817,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND
         $ifnulls[] = "ifnull($alias, '') as $alias";
       }
       $this->_select = "SELECT " . implode(", ", $ifnulls);
-      $this->appendSelect($ifnulls, $sectionAliases);
+      $this->_select = CRM_Contact_BAO_Query::appendAnyValueToSelect($ifnulls, $sectionAliases);
 
       // Group (un-limited) report by all aliases and get counts. This might
       // be done more efficiently when the contents of $sql are known, ie. by