Skip to content

Commit

Permalink
compatibility(MySQL) change group by queries (and some others) to adj…
Browse files Browse the repository at this point in the history
…ust to ONLY_FULL_GROUP_BY in strict_mode
  • Loading branch information
joebordes committed Sep 24, 2016
1 parent 2867c49 commit bd28bcb
Show file tree
Hide file tree
Showing 19 changed files with 141 additions and 134 deletions.
2 changes: 1 addition & 1 deletion build/tests/testgetRAC.php
Expand Up @@ -15,7 +15,7 @@
ini_set('memory_limit','1024M');
$current_user = Users::getActiveAdminUser();

$recs = $adb->query('SELECT crmid,setype FROM `vtiger_crmentity` where deleted=0 group by setype');
$recs = $adb->query('SELECT max(crmid),setype FROM `vtiger_crmentity` where deleted=0 group by setype');
echo "<table border=1 width='80%' align='center'><tr><th>EntityID</th><th>Related Account</th><th>Related Contact</th></tr>";
while ($rec = $adb->fetch_row($recs)) {
echo "<tr>";
Expand Down
16 changes: 12 additions & 4 deletions cron/SendReminder.service
Expand Up @@ -37,8 +37,7 @@ if(empty($current_language))
$current_language = 'en_us';

//modified query for recurring events -Jag
$query="select vtiger_crmentity.crmid,vtiger_seactivityrel.crmid as setype,vtiger_activity.*,
vtiger_activity_reminder.reminder_time,vtiger_activity_reminder.recurringid,vtiger_recurringevents.recurringdate
$query="select vtiger_activity.activityid,vtiger_recurringevents.recurringid
from vtiger_activity
inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_activity.activityid
inner join vtiger_activity_reminder on vtiger_activity.activityid=vtiger_activity_reminder.activity_id
Expand All @@ -52,8 +51,17 @@ $result = $adb->pquery($query, array());

if($adb->num_rows($result) >= 1)
{
while($result_set = $adb->fetch_array($result))
{
$query='select vtiger_crmentity.crmid,vtiger_seactivityrel.crmid as setype,vtiger_activity.*,
vtiger_activity_reminder.reminder_time,vtiger_activity_reminder.recurringid,vtiger_recurringevents.recurringdate
from vtiger_activity
inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_activity.activityid
inner join vtiger_activity_reminder on vtiger_activity.activityid=vtiger_activity_reminder.activity_id
left outer join vtiger_recurringevents on vtiger_activity.activityid=vtiger_recurringevents.activityid
left outer join vtiger_seactivityrel on vtiger_seactivityrel.activityid = vtiger_activity.activityid
where vtiger_activity.activityid = ? limit 1';
while($allactrs = $adb->fetch_array($result)) {
$actrs = $adb->pquery($query, array($allactrs['activityid']));
$result_set = $adb->fetch_array($actrs);
$date_start = $result_set['date_start'];
$time_start = $result_set['time_start'];
$reminder_time = $result_set['reminder_time'];
Expand Down
24 changes: 11 additions & 13 deletions data/CRMEntity.php
Expand Up @@ -410,44 +410,42 @@ function insertIntoEntityTable($table_name, $module, $fileid = '') {
if ($module == 'Calendar' && $this->column_fields["activitytype"] != null && $this->column_fields["activitytype"] != 'Task') {
$tabid = getTabid('Events');
}
$uniqueFieldsRestriction = 'vtiger_field.fieldid IN (select min(vtiger_field.fieldid) from vtiger_field where vtiger_field.tabid=? GROUP BY vtiger_field.columnname)';
if ($insertion_mode == 'edit') {
$update = array();
$update_params = array();
checkFileAccessForInclusion('user_privileges/user_privileges_' . $current_user->id . '.php');
require('user_privileges/user_privileges_' . $current_user->id . '.php');
if (isset($from_wf) && $from_wf) {
$sql = "select * from vtiger_field where tabid in (" . generateQuestionMarks($tabid) . ") and tablename=? and displaytype in (1,3,4) and presence in (0,2) group by columnname";
$sql = "select * from vtiger_field where $uniqueFieldsRestriction and tablename=? and displaytype in (1,3,4) and presence in (0,2)";
$params = array($tabid, $table_name);
} elseif ($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0) {
$sql = "select * from vtiger_field where tabid in (" . generateQuestionMarks($tabid) . ") and tablename=? and displaytype in (1,3) and presence in (0,2) group by columnname";
} elseif ($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0) {
$sql = "select * from vtiger_field where $uniqueFieldsRestriction and tablename=? and displaytype in (1,3) and presence in (0,2)";
$params = array($tabid, $table_name);
} else {
$profileList = getCurrentUserProfileList();

if (count($profileList) > 0) {
$sql = "SELECT *
$sql = "SELECT distinct vtiger_field.*
FROM vtiger_field
INNER JOIN vtiger_profile2field
ON vtiger_profile2field.fieldid = vtiger_field.fieldid
INNER JOIN vtiger_def_org_field
ON vtiger_def_org_field.fieldid = vtiger_field.fieldid
WHERE vtiger_field.tabid = ?
WHERE $uniqueFieldsRestriction
AND vtiger_profile2field.visible = 0 AND vtiger_profile2field.readonly = 0
AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ")
AND vtiger_def_org_field.visible = 0 and vtiger_field.tablename=? and vtiger_field.displaytype in (1,3) and vtiger_field.presence in (0,2) group by columnname";

AND vtiger_def_org_field.visible = 0 and vtiger_field.tablename=? and vtiger_field.displaytype in (1,3) and vtiger_field.presence in (0,2)";
$params = array($tabid, $profileList, $table_name);
} else {
$sql = "SELECT *
$sql = "SELECT distinct vtiger_field.*
FROM vtiger_field
INNER JOIN vtiger_profile2field
ON vtiger_profile2field.fieldid = vtiger_field.fieldid
INNER JOIN vtiger_def_org_field
ON vtiger_def_org_field.fieldid = vtiger_field.fieldid
WHERE vtiger_field.tabid = ?
WHERE $uniqueFieldsRestriction
AND vtiger_profile2field.visible = 0 AND vtiger_profile2field.readonly = 0
AND vtiger_def_org_field.visible = 0 and vtiger_field.tablename=? and vtiger_field.displaytype in (1,3) and vtiger_field.presence in (0,2) group by columnname";

AND vtiger_def_org_field.visible = 0 and vtiger_field.tablename=? and vtiger_field.displaytype in (1,3) and vtiger_field.presence in (0,2)";
$params = array($tabid, $table_name);
}
}
Expand All @@ -459,7 +457,7 @@ function insertIntoEntityTable($table_name, $module, $fileid = '') {
}
$column = array($table_index_column);
$value = array($this->id);
$sql = "select * from vtiger_field where tabid=? and tablename=? and displaytype in (1,3,4) and vtiger_field.presence in (0,2)";
$sql = "select * from vtiger_field where $uniqueFieldsRestriction and tablename=? and displaytype in (1,3,4) and vtiger_field.presence in (0,2)";
$params = array($tabid, $table_name);
}

Expand Down
2 changes: 1 addition & 1 deletion include/ComboUtil.php
Expand Up @@ -37,7 +37,7 @@ function getComboArray($combofieldNames)
{
$roleids = $roleid;
}
$sql = "select distinct $tableName from vtiger_$tableName inner join vtiger_role2picklist on vtiger_role2picklist.picklistvalueid = vtiger_$tableName.picklist_valueid where roleid in(". generateQuestionMarks($roleids) .") order by sortid";
$sql = "select distinct $tableName,sortid from vtiger_$tableName inner join vtiger_role2picklist on vtiger_role2picklist.picklistvalueid = vtiger_$tableName.picklist_valueid where roleid in(". generateQuestionMarks($roleids) .") order by sortid";
$params = array($roleids);
}
$result = $adb->pquery($sql, $params);
Expand Down
18 changes: 7 additions & 11 deletions include/Webservices/VtigerCRMObjectMeta.php
Expand Up @@ -363,47 +363,43 @@ private function retrieveUserHierarchy(){
private function retrieveMetaForBlock($block){
global $adb;
$tabid = $this->getTabId();
$uniqueFieldsRestriction = 'vtiger_field.fieldid IN (select min(vtiger_field.fieldid) from vtiger_field where vtiger_field.tabid=? GROUP BY vtiger_field.columnname)';
//Select condition if we are in Calendar
if($tabid == '9')
$condition = "(vtiger_field.tabid=? or vtiger_field.tablename='vtiger_activitycf')";
$condition = "($uniqueFieldsRestriction or vtiger_field.tablename='vtiger_activitycf')";
else
$condition = "vtiger_field.tabid=?";
$condition = $uniqueFieldsRestriction;
require('user_privileges/user_privileges_'.$this->user->id.'.php');
if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] ==0){
$sql = "select *, '0' as readonly from vtiger_field where ".$condition." and block in (".generateQuestionMarks($block).") and displaytype in (1,2,3,4)";
$params = array($tabid, $block);
}else{
$profileList = getCurrentUserProfileList();
if (count($profileList) > 0) {
$sql = "SELECT vtiger_field.*, vtiger_profile2field.readonly
$sql = "SELECT distinct vtiger_field.*, vtiger_profile2field.readonly
FROM vtiger_field
INNER JOIN vtiger_profile2field
ON vtiger_profile2field.fieldid = vtiger_field.fieldid
INNER JOIN vtiger_def_org_field
ON vtiger_def_org_field.fieldid = vtiger_field.fieldid
WHERE ".$condition." AND vtiger_profile2field.visible = 0
AND vtiger_profile2field.profileid IN (". generateQuestionMarks($profileList) .")
AND vtiger_def_org_field.visible = 0 and vtiger_field.block in (".generateQuestionMarks($block).") and vtiger_field.displaytype in (1,2,3,4) and vtiger_field.presence in (0,2) group by columnname";
AND vtiger_def_org_field.visible = 0 and vtiger_field.block in (".generateQuestionMarks($block).") and vtiger_field.displaytype in (1,2,3,4) and vtiger_field.presence in (0,2)";
$params = array($tabid, $profileList, $block);
} else {
$sql = "SELECT vtiger_field.*, vtiger_profile2field.readonly
$sql = "SELECT distinct vtiger_field.*, vtiger_profile2field.readonly
FROM vtiger_field
INNER JOIN vtiger_profile2field
ON vtiger_profile2field.fieldid = vtiger_field.fieldid
INNER JOIN vtiger_def_org_field
ON vtiger_def_org_field.fieldid = vtiger_field.fieldid
WHERE ".$condition."
AND vtiger_profile2field.visible = 0
AND vtiger_def_org_field.visible = 0 and vtiger_field.block in (".generateQuestionMarks($block).") and vtiger_field.displaytype in (1,2,3,4) and vtiger_field.presence in (0,2) group by columnname";
AND vtiger_def_org_field.visible = 0 and vtiger_field.block in (".generateQuestionMarks($block).") and vtiger_field.displaytype in (1,2,3,4) and vtiger_field.presence in (0,2)";
$params = array($tabid, $block);
}
}

// Bulk Save Mode: Group by is not required!?
if(CRMEntity::isBulkSaveMode()) {
$sql = preg_replace("/group by [^ ]*/", " ", $sql);
}

$result = $adb->pquery($sql,$params);
$noofrows = $adb->num_rows($result);
$referenceArray = array();
Expand Down
2 changes: 1 addition & 1 deletion include/freetag/freetag.class.php
Expand Up @@ -1101,7 +1101,7 @@ function get_tag_cloud_tags($max = 100, $tagger_id = NULL,$module = "",$obj_id =
ON (${prefix}freetags.id = tag_id)
WHERE 1=1
$tagger_sql
GROUP BY tag
GROUP BY tag_id
ORDER BY quantity DESC LIMIT 0, $max";
$rs = $adb->pquery($sql, $params);
$retarr = $retarr1 = $return_value = array();
Expand Down

0 comments on commit bd28bcb

Please sign in to comment.