CRM_Core_DAO::setFactory($factory);
$currentModes = CRM_Utils_SQL::getSqlModes();
if (CRM_Utils_Constant::value('CIVICRM_MYSQL_STRICT', CRM_Utils_System::isDevelopment())) {
- if (CRM_Utils_SQL::supportsFullGroupBy() && !in_array('ONLY_FULL_GROUP_BY', $currentModes)) {
+ if (CRM_Utils_SQL::supportsFullGroupBy() && !in_array('ONLY_FULL_GROUP_BY', $currentModes) && CRM_Utils_SQL::isGroupByModeInDefault()) {
$currentModes[] = 'ONLY_FULL_GROUP_BY';
}
if (!in_array('STRICT_TRANS_TABLES', $currentModes)) {
return FALSE;
}
+ /**
+ * CHeck if ONLY_FULL_GROUP_BY is in the global sql_modes
+ * @return bool
+ */
+ public static function isGroupByModeInDefault() {
+ if (!self::supportsFullGroupBy()) {
+ return FALSE;
+ }
+ $sqlModes = explode(',', CRM_Core_DAO::singleValueQuery('SELECT @@global.sql_mode'));
+ if (!in_array('ONLY_FULL_GROUP_BY', $sqlModes)) {
+ return FALSE;
+ }
+ return TRUE;
+ }
+
}