diff --git a/build/tests/testgetRAC.php b/build/tests/testgetRAC.php
index a28d60af8c..1622ad47d7 100644
--- a/build/tests/testgetRAC.php
+++ b/build/tests/testgetRAC.php
@@ -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 "
EntityID | Related Account | Related Contact |
";
while ($rec = $adb->fetch_row($recs)) {
echo "";
diff --git a/cron/SendReminder.service b/cron/SendReminder.service
index 2f41093cbb..2840ce5842 100644
--- a/cron/SendReminder.service
+++ b/cron/SendReminder.service
@@ -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
@@ -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'];
diff --git a/data/CRMEntity.php b/data/CRMEntity.php
index 43611c3e97..973f79e5cc 100755
--- a/data/CRMEntity.php
+++ b/data/CRMEntity.php
@@ -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);
}
}
@@ -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);
}
diff --git a/include/ComboUtil.php b/include/ComboUtil.php
index f10da96695..460d88d188 100644
--- a/include/ComboUtil.php
+++ b/include/ComboUtil.php
@@ -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);
diff --git a/include/Webservices/VtigerCRMObjectMeta.php b/include/Webservices/VtigerCRMObjectMeta.php
index b614fe2890..f4dd99198c 100644
--- a/include/Webservices/VtigerCRMObjectMeta.php
+++ b/include/Webservices/VtigerCRMObjectMeta.php
@@ -363,11 +363,12 @@ 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)";
@@ -375,7 +376,7 @@ private function retrieveMetaForBlock($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
@@ -383,10 +384,10 @@ private function retrieveMetaForBlock($block){
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
@@ -394,16 +395,11 @@ private function retrieveMetaForBlock($block){
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();
diff --git a/include/freetag/freetag.class.php b/include/freetag/freetag.class.php
index bcdad9aade..caf6fc2e6e 100644
--- a/include/freetag/freetag.class.php
+++ b/include/freetag/freetag.class.php
@@ -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();
diff --git a/include/home.php b/include/home.php
index 96c9f909f1..2ae5e4c3a8 100644
--- a/include/home.php
+++ b/include/home.php
@@ -539,12 +539,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query = '';
$params = array();
if(isPermitted('Leads','index') == "yes"){
- $query = "select vtiger_leaddetails.leadid as id,vtiger_leaddetails.lastname as name,vtiger_groups.groupname as groupname, 'Leads ' as Type from vtiger_leaddetails inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_leaddetails.leadid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_leaddetails.leadid > 0";
+ $query = "(select vtiger_leaddetails.leadid as id,vtiger_leaddetails.lastname as name,vtiger_groups.groupname as groupname, 'Leads ' as Type from vtiger_leaddetails inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_leaddetails.leadid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_leaddetails.leadid > 0";
if (count($groupids) > 0){
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Calendar") && isPermitted('Calendar','index') == "yes"){
@@ -552,12 +552,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .= " union all ";
}
//Get the activities assigned to group
- $query .= "select vtiger_activity.activityid as id,vtiger_activity.subject as name,vtiger_groups.groupname as groupname,'Activities' as Type from vtiger_activity inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_activity.activityid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and ((vtiger_activity.eventstatus !='held'and (vtiger_activity.status is null or vtiger_activity.status ='')) or (vtiger_activity.status !='completed' and (vtiger_activity.eventstatus is null or vtiger_activity.eventstatus=''))) and vtiger_activity.activityid > 0";
+ $query .= "(select vtiger_activity.activityid as id,vtiger_activity.subject as name,vtiger_groups.groupname as groupname,'Activities' as Type from vtiger_activity inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_activity.activityid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and ((vtiger_activity.eventstatus !='held'and (vtiger_activity.status is null or vtiger_activity.status ='')) or (vtiger_activity.status !='completed' and (vtiger_activity.eventstatus is null or vtiger_activity.eventstatus=''))) and vtiger_activity.activityid > 0";
if (count($groupids) > 0) {
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("HelpDesk") && isPermitted('HelpDesk','index') == "yes"){
@@ -565,12 +565,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .= " union all ";
}
//Get the tickets assigned to group (status not Closed -- hardcoded value)
- $query .= "select vtiger_troubletickets.ticketid,vtiger_troubletickets.title as name,vtiger_groups.groupname,'Tickets ' as Type from vtiger_troubletickets inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_troubletickets.ticketid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_troubletickets.status != 'Closed' and vtiger_troubletickets.ticketid > 0";
+ $query .= "(select vtiger_troubletickets.ticketid,vtiger_troubletickets.title as name,vtiger_groups.groupname,'Tickets ' as Type from vtiger_troubletickets inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_troubletickets.ticketid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_troubletickets.status != 'Closed' and vtiger_troubletickets.ticketid > 0";
if (count($groupids) > 0) {
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Potentials") && isPermitted('Potentials','index') == "yes"){
@@ -578,12 +578,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the potentials assigned to group(sales stage not Closed Lost or Closed Won-- hardcoded value)
- $query .= "select vtiger_potential.potentialid,vtiger_potential.potentialname as name,vtiger_groups.groupname as groupname,'Potentials ' as Type from vtiger_potential inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_potential.potentialid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and ((vtiger_potential.sales_stage !='Closed Lost') or (vtiger_potential.sales_stage != 'Closed Won')) and vtiger_potential.potentialid > 0";
+ $query .= "(select vtiger_potential.potentialid,vtiger_potential.potentialname as name,vtiger_groups.groupname as groupname,'Potentials ' as Type from vtiger_potential inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_potential.potentialid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and ((vtiger_potential.sales_stage !='Closed Lost') or (vtiger_potential.sales_stage != 'Closed Won')) and vtiger_potential.potentialid > 0";
if (count($groupids) > 0){
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Accounts") && isPermitted('Accounts','index') == "yes"){
@@ -591,12 +591,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Accounts assigned to group
- $query .= "select vtiger_account.accountid as id,vtiger_account.accountname as name,vtiger_groups.groupname as groupname, 'Accounts ' as Type from vtiger_account inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_account.accountid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_account.accountid > 0";
+ $query .= "(select vtiger_account.accountid as id,vtiger_account.accountname as name,vtiger_groups.groupname as groupname, 'Accounts ' as Type from vtiger_account inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_account.accountid inner join vtiger_groups on vtiger_crmentity.smownerid=vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_account.accountid > 0";
if (count($groupids) > 0){
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Contacts") && isPermitted('Contacts','index') =='yes'){
@@ -604,12 +604,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Contacts assigned to group
- $query .= "select vtiger_contactdetails.contactid as id, vtiger_contactdetails.lastname as name ,vtiger_groups.groupname as groupname, 'Contacts ' as Type from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_contactdetails.contactid > 0";
+ $query .= "(select vtiger_contactdetails.contactid as id, vtiger_contactdetails.lastname as name ,vtiger_groups.groupname as groupname, 'Contacts ' as Type from vtiger_contactdetails inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_contactdetails.contactid > 0";
if (count($groupids) > 0) {
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Campaigns") && isPermitted('Campaigns','index') =='yes'){
@@ -617,12 +617,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Campaigns assigned to group(Campaign status not Complete -- hardcoded value)
- $query .= "select vtiger_campaign.campaignid as id, vtiger_campaign.campaignname as name, vtiger_groups.groupname as groupname,'Campaigns ' as Type from vtiger_campaign inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_campaign.campaignid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and (vtiger_campaign.campaignstatus != 'Complete') and vtiger_campaign.campaignid > 0";
+ $query .= "(select vtiger_campaign.campaignid as id, vtiger_campaign.campaignname as name, vtiger_groups.groupname as groupname,'Campaigns ' as Type from vtiger_campaign inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_campaign.campaignid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and (vtiger_campaign.campaignstatus != 'Complete') and vtiger_campaign.campaignid > 0";
if (count($groupids) > 0) {
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Quotes") && isPermitted('Quotes','index') == 'yes'){
@@ -630,12 +630,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Quotes assigned to group(Quotes stage not Rejected -- hardcoded value)
- $query .="select vtiger_quotes.quoteid as id,vtiger_quotes.subject as name, vtiger_groups.groupname as groupname ,'Quotes 'as Type from vtiger_quotes inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_quotes.quoteid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and (vtiger_quotes.quotestage != 'Rejected') and vtiger_quotes.quoteid > 0";
+ $query .="(select vtiger_quotes.quoteid as id,vtiger_quotes.subject as name, vtiger_groups.groupname as groupname ,'Quotes 'as Type from vtiger_quotes inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_quotes.quoteid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and (vtiger_quotes.quotestage != 'Rejected') and vtiger_quotes.quoteid > 0";
if (count($groupids) > 0) {
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("SalesOrder") && isPermitted('SalesOrder','index') =='yes'){
@@ -643,12 +643,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Sales Order assigned to group
- $query .="select vtiger_salesorder.salesorderid as id, vtiger_salesorder.subject as name,vtiger_groups.groupname as groupname,'SalesOrder ' as Type from vtiger_salesorder inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_salesorder.salesorderid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_salesorder.salesorderid > 0";
+ $query .="(select vtiger_salesorder.salesorderid as id, vtiger_salesorder.subject as name,vtiger_groups.groupname as groupname,'SalesOrder ' as Type from vtiger_salesorder inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_salesorder.salesorderid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_salesorder.salesorderid > 0";
if (count($groupids) > 0){
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Invoice") && isPermitted('Invoice','index') =='yes'){
@@ -656,12 +656,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Sales Order assigned to group(Invoice status not Paid -- hardcoded value)
- $query .="select vtiger_invoice.invoiceid as Id , vtiger_invoice.subject as Name, vtiger_groups.groupname as groupname,'Invoice ' as Type from vtiger_invoice inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_invoice.invoiceid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and(vtiger_invoice.invoicestatus != 'Paid') and vtiger_invoice.invoiceid > 0";
+ $query .="(select vtiger_invoice.invoiceid as Id , vtiger_invoice.subject as Name, vtiger_groups.groupname as groupname,'Invoice ' as Type from vtiger_invoice inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_invoice.invoiceid inner join vtiger_groups on vtiger_crmentity.smownerid = vtiger_groups.groupid where vtiger_crmentity.deleted=0 and(vtiger_invoice.invoicestatus != 'Paid') and vtiger_invoice.invoiceid > 0";
if (count($groupids) > 0){
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("PurchaseOrder") && isPermitted('PurchaseOrder','index') == 'yes'){
@@ -669,12 +669,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Purchase Order assigned to group
- $query .="select vtiger_purchaseorder.purchaseorderid as id,vtiger_purchaseorder.subject as name,vtiger_groups.groupname as groupname, 'PurchaseOrder ' as Type from vtiger_purchaseorder inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_purchaseorder.purchaseorderid inner join vtiger_groups on vtiger_crmentity.smownerid =vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_purchaseorder.purchaseorderid >0";
+ $query .="(select vtiger_purchaseorder.purchaseorderid as id,vtiger_purchaseorder.subject as name,vtiger_groups.groupname as groupname, 'PurchaseOrder ' as Type from vtiger_purchaseorder inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_purchaseorder.purchaseorderid inner join vtiger_groups on vtiger_crmentity.smownerid =vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_purchaseorder.purchaseorderid >0";
if (count($groupids) > 0) {
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
if(vtlib_isModuleActive("Documents") && isPermitted('Documents','index') == 'yes'){
@@ -682,12 +682,12 @@ function getGroupTaskLists($maxval,$calCnt){
$query .=" union all ";
}
//Get the Purchase Order assigned to group
- $query .="select vtiger_notes.notesid as id,vtiger_notes.title as name,vtiger_groups.groupname as groupname, 'Documents' as Type from vtiger_notes inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_notes.notesid inner join vtiger_groups on vtiger_crmentity.smownerid =vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_notes.notesid > 0";
+ $query .="(select vtiger_notes.notesid as id,vtiger_notes.title as name,vtiger_groups.groupname as groupname, 'Documents' as Type from vtiger_notes inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_notes.notesid inner join vtiger_groups on vtiger_crmentity.smownerid =vtiger_groups.groupid where vtiger_crmentity.deleted=0 and vtiger_notes.notesid > 0";
if (count($groupids) > 0) {
$query .= " and vtiger_groups.groupid in (". generateQuestionMarks($groupids). ")";
array_push($params, $groupids);
}
- $query .= " LIMIT $maxval";
+ $query .= " LIMIT $maxval)";
}
$log->info("Here is the where clause for the list view: $query");
diff --git a/include/utils/CommonUtils.php b/include/utils/CommonUtils.php
index 944533e23d..d69f07b842 100644
--- a/include/utils/CommonUtils.php
+++ b/include/utils/CommonUtils.php
@@ -1253,15 +1253,16 @@ function getBlocks($module, $disp_view, $mode, $col_fields = '', $info_type = ''
require('user_privileges/user_privileges_' . $current_user->id . '.php');
if ($disp_view == "detail_view") {
if ($is_admin == true || $profileGlobalPermission[2] == 0 || $module == "Users" || $module == "Emails") {
- $sql = "SELECT vtiger_field.*, '0' as readonly FROM vtiger_field WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) ORDER BY block,sequence";
+ $uniqueFieldsRestriction = 'vtiger_field.fieldid IN (select max(vtiger_field.fieldid) from vtiger_field where vtiger_field.tabid=? GROUP BY vtiger_field.columnname)';
+ $sql = "SELECT distinct vtiger_field.*, '0' as readonly FROM vtiger_field WHERE $uniqueFieldsRestriction AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) ORDER BY block,sequence";
$params = array($tabid, $blockid_list);
} elseif ($profileGlobalPermission[1] == 0) { // view all
$profileList = getCurrentUserProfileList();
- $sql = "SELECT vtiger_field.*, vtiger_profile2field.readonly FROM vtiger_field INNER JOIN vtiger_profile2field ON vtiger_profile2field.fieldid=vtiger_field.fieldid WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") ORDER BY block,sequence";
+ $sql = "SELECT distinct vtiger_field.*, vtiger_profile2field.readonly FROM vtiger_field INNER JOIN vtiger_profile2field ON vtiger_profile2field.fieldid=vtiger_field.fieldid WHERE vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") ORDER BY block,sequence";
$params = array($tabid, $blockid_list, $profileList);
} else {
$profileList = getCurrentUserProfileList();
- $sql = "SELECT 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 vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") GROUP BY vtiger_field.fieldid ORDER BY block,sequence";
+ $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 vtiger_field.tabid=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND vtiger_field.displaytype IN (1,2,4) and vtiger_field.presence in (0,2) AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") ORDER BY block,sequence";
$params = array($tabid, $blockid_list, $profileList);
}
$result = $adb->pquery($sql, $params);
@@ -1279,7 +1280,7 @@ function getBlocks($module, $disp_view, $mode, $col_fields = '', $info_type = ''
$params = array($tabid, $blockid_list, $info_type);
} else {
$profileList = getCurrentUserProfileList();
- $sql = "SELECT 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=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND $display_type_check AND info_type = ? AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid ORDER BY block,sequence";
+ $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=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND $display_type_check AND info_type = ? AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) ORDER BY block,sequence";
$params = array($tabid, $blockid_list, $info_type, $profileList);
}
}
@@ -1289,7 +1290,7 @@ function getBlocks($module, $disp_view, $mode, $col_fields = '', $info_type = ''
$params = array($tabid, $blockid_list);
} else {
$profileList = getCurrentUserProfileList();
- $sql = "SELECT 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=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND $display_type_check AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid ORDER BY block,sequence";
+ $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=? AND vtiger_field.block IN (" . generateQuestionMarks($blockid_list) . ") AND $display_type_check AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) ORDER BY block,sequence";
$params = array($tabid, $blockid_list, $profileList);
}
}
@@ -2016,7 +2017,7 @@ function QuickCreate($module) {
$params = array($tabid);
} else {
$profileList = getCurrentUserProfileList();
- $quickcreate_query = "SELECT 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=? AND quickcreate in (0,2) AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) and displaytype != 2 GROUP BY vtiger_field.fieldid ORDER BY quickcreatesequence";
+ $quickcreate_query = "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=? AND quickcreate in (0,2) AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly = 0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (" . generateQuestionMarks($profileList) . ") and vtiger_field.presence in (0,2) and displaytype != 2 ORDER BY quickcreatesequence";
$params = array($tabid, $profileList);
}
$category = getParentTab();
diff --git a/include/utils/InventoryUtils.php b/include/utils/InventoryUtils.php
index 474eb87004..bf7ccf6282 100644
--- a/include/utils/InventoryUtils.php
+++ b/include/utils/InventoryUtils.php
@@ -385,7 +385,7 @@ function getTaxDetailsForProduct($productid, $available='all', $acvid=0)
}
if($available != 'all' && $available == 'available_associated')
{
- $query = "SELECT vtiger_producttaxrel.*, vtiger_inventorytaxinfo.* FROM vtiger_inventorytaxinfo left JOIN vtiger_producttaxrel ON vtiger_inventorytaxinfo.taxid = vtiger_producttaxrel.taxid WHERE vtiger_producttaxrel.productid = ? or vtiger_inventorytaxinfo.deleted=0 GROUP BY vtiger_inventorytaxinfo.taxid";
+ $query = "SELECT max(vtiger_producttaxrel.taxpercentage), vtiger_inventorytaxinfo.* FROM vtiger_inventorytaxinfo left JOIN vtiger_producttaxrel ON vtiger_inventorytaxinfo.taxid = vtiger_producttaxrel.taxid WHERE vtiger_producttaxrel.productid = ? or vtiger_inventorytaxinfo.deleted=0 GROUP BY vtiger_inventorytaxinfo.taxid";
}
else
{
@@ -396,7 +396,7 @@ function getTaxDetailsForProduct($productid, $available='all', $acvid=0)
$res = $adb->pquery($query, $params);
for($i=0;$i<$adb->num_rows($res);$i++)
{
- $tax_details[$i]['productid'] = $adb->query_result($res,$i,'productid');
+ $tax_details[$i]['productid'] = $productid;
$tax_details[$i]['taxid'] = $adb->query_result($res,$i,'taxid');
$tax_details[$i]['taxname'] = $adb->query_result($res,$i,'taxname');
$tax_details[$i]['taxlabel'] = html_entity_decode($adb->query_result($res,$i,'taxlabel'),ENT_QUOTES,$default_charset);
@@ -1175,7 +1175,7 @@ function createRecords($obj) {
}
$tableName = Import_Utils::getDbTableName($obj->user);
- $sql = 'SELECT * FROM ' . $tableName . ' WHERE status = '. Import_Data_Controller::$IMPORT_RECORD_NONE .' GROUP BY subject';
+ $sql = 'SELECT subject FROM ' . $tableName . ' WHERE status = '. Import_Data_Controller::$IMPORT_RECORD_NONE .' GROUP BY subject';
if($obj->batchImport) {
$importBatchLimit = GlobalVariable::getVariable('Import_Batch_Limit', 100);
$sql .= ' LIMIT '. $importBatchLimit;
@@ -1283,9 +1283,9 @@ function createRecords($obj) {
array_push($lineItems,$lineItemData);
}
foreach ($fieldMapping as $fieldName => $index) {
- $fieldData[$fieldName] = $row[strtolower($fieldName)];
+ $fieldData[$fieldName] = $subjectRow[strtolower($fieldName)];
if ($fieldName=='hdnTaxType') {
- $fieldData['taxtype'] = $row[strtolower($fieldName)];
+ $fieldData['taxtype'] = $subjectRow[strtolower($fieldName)];
}
if ($fieldName=='txtAdjustment' and $fieldData[$fieldName]!=0) {
$fieldData['adjustmentType'] = 'add';
@@ -1351,7 +1351,7 @@ function importRecord($obj, $inventoryFieldData, $lineItems) {
function getImportStatusCount($obj) {
global $adb;
$tableName = Import_Utils_Helper::getDbTableName($obj->user);
- $result = $adb->query('SELECT status FROM '.$tableName. ' GROUP BY subject');
+ $result = $adb->query('SELECT status FROM '.$tableName. ' GROUP BY subject,status');
$statusCount = array('TOTAL' => 0, 'IMPORTED' => 0, 'FAILED' => 0, 'PENDING' => 0,
'CREATED' => 0, 'SKIPPED' => 0, 'UPDATED' => 0, 'MERGED' => 0);
@@ -1399,7 +1399,7 @@ function undoLastImport($obj, $user) {
exit;
}
$result = $adb->query("SELECT recordid FROM $dbTableName WHERE status = ". Import_Data_Controller::$IMPORT_RECORD_CREATED
- ." AND recordid IS NOT NULL GROUP BY subject");
+ ." AND recordid IS NOT NULL GROUP BY subject,recordid");
$noOfRecords = $adb->num_rows($result);
$noOfRecordsDeleted = 0;
for($i=0; $i<$noOfRecords; ++$i) {
diff --git a/include/utils/ListViewUtils.php b/include/utils/ListViewUtils.php
index 195598aeaa..c5825e8029 100755
--- a/include/utils/ListViewUtils.php
+++ b/include/utils/ListViewUtils.php
@@ -2445,7 +2445,7 @@ function getListQuery($module, $where = '') {
$query .= "WHERE vtiger_crmentity.deleted = 0 " . $where;
break;
Case "Calendar":
-
+ // only one row per event no matter how many contacts are related
$query = "SELECT vtiger_activity.activityid as act_id,vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_crmentity.setype,
vtiger_activity.*,
vtiger_contactdetails.lastname, vtiger_contactdetails.firstname,
@@ -2454,10 +2454,12 @@ function getListQuery($module, $where = '') {
FROM vtiger_activity
LEFT JOIN vtiger_activitycf
ON vtiger_activitycf.activityid = vtiger_activity.activityid
- LEFT JOIN vtiger_cntactivityrel
- ON vtiger_cntactivityrel.activityid = vtiger_activity.activityid
- LEFT JOIN vtiger_contactdetails
- ON vtiger_contactdetails.contactid = vtiger_cntactivityrel.contactid
+ LEFT JOIN (SELECT min(vtiger_cntactivityrel.contactid) as contactid,vtiger_cntactivityrel.activityid
+ from vtiger_cntactivityrel
+ inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_cntactivityrel.contactid and deleted=0
+ GROUP BY vtiger_cntactivityrel.activityid
+ ) ctorel ON ctorel.activityid = vtiger_activity.activityid
+ LEFT JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid = ctorel.contactid
LEFT JOIN vtiger_seactivityrel
ON vtiger_seactivityrel.activityid = vtiger_activity.activityid
LEFT OUTER JOIN vtiger_activity_reminder
diff --git a/include/utils/SearchUtils.php b/include/utils/SearchUtils.php
index 7ce5252b07..9a79e10524 100755
--- a/include/utils/SearchUtils.php
+++ b/include/utils/SearchUtils.php
@@ -78,12 +78,11 @@ function getSearchListHeaderValues($focus, $module,$sort_qry='',$sorder='',$orde
}
array_push($field_list, $fieldname);
}
- //Getting the Entries from Profile2 vtiger_field vtiger_table
+ //Getting the Entries from Profile2field table
if($is_admin == false)
{
$profileList = getCurrentUserProfileList();
- //changed to get vtiger_field.fieldname
- $query = "SELECT vtiger_profile2field.*,vtiger_field.fieldname 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=? AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (". generateQuestionMarks($profileList) .") AND vtiger_field.fieldname IN (". generateQuestionMarks($field_list) .") and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
+ $query = "SELECT vtiger_field.fieldname 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=? AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid IN (". generateQuestionMarks($profileList) .") AND vtiger_field.fieldname IN (". generateQuestionMarks($field_list) .") and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
$result = $adb->pquery($query, array($tabid, $profileList, $field_list));
$field=Array();
for($k=0;$k < $adb->num_rows($result);$k++)
@@ -535,9 +534,7 @@ function getAdvSearchfields($module)
if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)
{
- $sql = "select * from vtiger_field ";
- $sql.= " where vtiger_field.tabid in(?) and";
- $sql.= " vtiger_field.displaytype in (1,2,3) and vtiger_field.presence in (0,2)";
+ $sql = 'select vtiger_field.* from vtiger_field where vtiger_field.displaytype in (1,2,3) and vtiger_field.presence in (0,2)';
if($tabid == 13 || $tabid == 15)
{
$sql.= " and vtiger_field.fieldlabel != 'Add Comment'";
@@ -558,18 +555,17 @@ function getAdvSearchfields($module)
{
$sql.= " and vtiger_field.fieldlabel != 'Attachment'";
}
- $sql.= " group by vtiger_field.fieldlabel order by block,sequence";
+ $sql.= ' and vtiger_field.fieldid in (select min(fieldid) from vtiger_field where vtiger_field.tabid in (?) group by vtiger_field.fieldlabel) order by block,sequence';
$params = array($tabid);
}
else
{
$profileList = getCurrentUserProfileList();
- $sql = "select * 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 ";
- $sql.= " where vtiger_field.tabid in(?) and";
- $sql.= " vtiger_field.displaytype in (1,2,3) and vtiger_field.presence in (0,2) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0";
+ $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 ";
+ $sql.= ' where vtiger_field.displaytype in (1,2,3) and vtiger_field.presence in (0,2) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0';
- $params = array($tabid);
+ $params = array();
if (count($profileList) > 0) {
$sql.= " and vtiger_profile2field.profileid in (". generateQuestionMarks($profileList) .")";
@@ -596,7 +592,8 @@ function getAdvSearchfields($module)
{
$sql.= " and vtiger_field.fieldlabel != 'Attachment'";
}
- $sql .= " group by vtiger_field.fieldlabel order by block,sequence";
+ $sql.= ' and vtiger_field.fieldid in (select min(fieldid) from vtiger_field where vtiger_field.tabid in (?) group by vtiger_field.fieldlabel) order by block,sequence';
+ $params[] = $tabid;
}
$result = $adb->pquery($sql, $params);
diff --git a/include/utils/UserInfoUtil.php b/include/utils/UserInfoUtil.php
index f66bdc092c..380b1133d9 100755
--- a/include/utils/UserInfoUtil.php
+++ b/include/utils/UserInfoUtil.php
@@ -3672,6 +3672,7 @@ function getFieldVisibilityPermission($fld_module, $userid, $fieldname, $accessm
return '1';
}
+ if (empty($userid)) $userid = $current_user->id;
require('user_privileges/user_privileges_'.$userid.'.php');
/* Asha: Fix for ticket #4508. Users with View all and Edit all permission will also have visibility permission for all fields */
@@ -3682,32 +3683,34 @@ function getFieldVisibilityPermission($fld_module, $userid, $fieldname, $accessm
}
else
{
- //get vtiger_profile list using userid
- $profilelist = getCurrentUserProfileList();
+ //get profile list using userid
+ $profilelist = array();
+ foreach ($current_user_profiles as $profid) {
+ array_push($profilelist, $profid);
+ }
//get tabid
$tabid = getTabid($fld_module);
if (count($profilelist) > 0) {
if($accessmode == 'readonly') {
- $query="SELECT vtiger_profile2field.* 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=? AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid in (". generateQuestionMarks($profilelist) .") AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
+ $query="SELECT vtiger_profile2field.visible 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=? AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid in (". generateQuestionMarks($profilelist) .") AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
} else {
- $query="SELECT vtiger_profile2field.* 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=? AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid in (". generateQuestionMarks($profilelist) .") AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
+ $query="SELECT vtiger_profile2field.visible 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=? AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly=0 AND vtiger_def_org_field.visible=0 AND vtiger_profile2field.profileid in (". generateQuestionMarks($profilelist) .") AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
}
$params = array($tabid, $profilelist, $fieldname);
-
} else {
if($accessmode == 'readonly') {
- $query="SELECT vtiger_profile2field.* 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=? AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
- } else {
- $query="SELECT vtiger_profile2field.* 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=? AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly=0 AND vtiger_def_org_field.visible=0 AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
+ $query="SELECT vtiger_profile2field.visible 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=? AND vtiger_profile2field.visible=0 AND vtiger_def_org_field.visible=0 AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
+ } else {
+ $query="SELECT vtiger_profile2field.visible 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=? AND vtiger_profile2field.visible=0 AND vtiger_profile2field.readonly=0 AND vtiger_def_org_field.visible=0 AND vtiger_field.fieldname= ? and vtiger_field.presence in (0,2) GROUP BY vtiger_field.fieldid";
}
$params = array($tabid, $fieldname);
}
$result = $adb->pquery($query, $params);
$log->debug("Exiting getFieldVisibilityPermission method ...");
if($adb->num_rows($result) == 0) return '1';
- return ($adb->query_result($result,"0","visible")."");
+ return ($adb->query_result($result,0,'visible').'');
}
}
diff --git a/modules/Accounts/ListViewTop.php b/modules/Accounts/ListViewTop.php
index 7d40b39e49..9afd815dc7 100644
--- a/modules/Accounts/ListViewTop.php
+++ b/modules/Accounts/ListViewTop.php
@@ -25,7 +25,7 @@ function getTopAccounts($maxval,$calCnt)
require('user_privileges/user_privileges_'.$current_user->id.'.php');
require('user_privileges/sharing_privileges_'.$current_user->id.'.php');
- $list_query = "select vtiger_potential.potentialname,vtiger_account.accountid, vtiger_account.accountname, ".
+ $list_query = "select vtiger_account.accountid, vtiger_account.accountname, ".
"vtiger_account.tickersymbol, sum(vtiger_potential.amount) as amount from vtiger_potential ".
"inner join vtiger_crmentity on (vtiger_potential.potentialid=vtiger_crmentity.crmid) ".
"inner join vtiger_account on (vtiger_potential.related_to=vtiger_account.accountid) ";
diff --git a/modules/Calendar/Activity.php b/modules/Calendar/Activity.php
index 4dbcb40928..5eb44edac9 100644
--- a/modules/Calendar/Activity.php
+++ b/modules/Calendar/Activity.php
@@ -641,15 +641,16 @@ function get_calendarsforol($user_name)
$result1 = $adb->pquery($sql1, $params1);
for($i=0;$i < $adb->num_rows($result1);$i++)
{
- $permitted_lists[] = $adb->query_result($result1,$i,'tablename');
- $permitted_lists[] = $adb->query_result($result1,$i,'columnname');
- if($adb->query_result($result1,$i,'columnname') == "date_start")
- {
+ $tname = $adb->query_result($result1,$i,'tablename');
+ if ($tname == 'vtiger_seactivityrel' or $tname == 'vtiger_contactdetails') continue;
+ $cname = $adb->query_result($result1,$i,'columnname');
+ $permitted_lists[] = $tname;
+ $permitted_lists[] = $cname;
+ if($cname == "date_start") {
$permitted_lists[] = 'vtiger_activity';
$permitted_lists[] = 'time_start';
}
- if($adb->query_result($result1,$i,'columnname') == "due_date")
- {
+ if($cname == "due_date") {
$permitted_lists[] = 'vtiger_activity';
$permitted_lists[] = 'time_end';
}
@@ -665,18 +666,12 @@ function get_calendarsforol($user_name)
INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_activity.activityid
LEFT JOIN vtiger_salesmanactivityrel ON vtiger_salesmanactivityrel.activityid=vtiger_activity.activityid
LEFT JOIN vtiger_users ON vtiger_users.id=vtiger_salesmanactivityrel.smid
- LEFT JOIN vtiger_cntactivityrel ON vtiger_cntactivityrel.activityid=vtiger_activity.activityid
- LEFT JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid=vtiger_cntactivityrel.contactid
- LEFT JOIN vtiger_seactivityrel ON vtiger_seactivityrel.activityid = vtiger_activity.activityid
LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid
WHERE vtiger_crmentity.deleted=0 AND vtiger_activity.activitytype='Meeting' ";
if (isset($groupidlist))
$query .= " AND (vtiger_users.user_name='".$user_name."' OR vtiger_crmentity.smownerid IN (".substr($groupidlist,1)."))";
else
$query .= " AND vtiger_users.user_name='".$user_name."'";
- //crm-now added GROUP BY to prevent the same entry to appear multiple times if assigned to multiple contacts during synchronization with Outlook
- $query .= " GROUP BY clndrid";
-
$log->debug("Exiting get_calendarsforol method ...");
return $query;
}
diff --git a/modules/Calendar/ListView.php b/modules/Calendar/ListView.php
index 839aa7ba42..c3b08e7f91 100755
--- a/modules/Calendar/ListView.php
+++ b/modules/Calendar/ListView.php
@@ -195,7 +195,6 @@
elseif ($_REQUEST['from_homepage'] == 'pending_activities')
$list_query .= " AND (vtiger_activity.status is NULL OR vtiger_activity.status not in ('Completed','Deferred')) and (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus not in ('Held','Not Held')) AND (CAST((CONCAT(due_date,' ',time_end)) AS DATETIME) <= '$endDateTime' OR CAST((CONCAT(vtiger_recurringevents.recurringdate,' ',time_start)) AS DATETIME) <= '$endDateTime')";
}
-$list_query .= ' GROUP BY vtiger_activity.activityid'; // only one row per event no matter how many contacts are related
if(isset($order_by) && $order_by != '') {
if($order_by == 'smownerid') {
$list_query .= ' ORDER BY user_name '.$sorder;
diff --git a/modules/CustomView/CustomView.php b/modules/CustomView/CustomView.php
index 618175c862..c1db23a69c 100644
--- a/modules/CustomView/CustomView.php
+++ b/modules/CustomView/CustomView.php
@@ -305,8 +305,9 @@ function getColumnsListbyBlock($module, $block,$markMandatory = true) {
} else {
$tab_ids = explode(",", $tabid);
$profileList = getCurrentUserProfileList();
- $sql = "select * 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 ";
- $sql.= " where vtiger_field.tabid in (" . generateQuestionMarks($tab_ids) . ") and vtiger_field.block in (" . generateQuestionMarks($block_ids) . ") and";
+ $uniqueFieldsRestriction = 'vtiger_field.fieldid IN (select min(vtiger_field.fieldid) from vtiger_field where vtiger_field.tabid in ('. generateQuestionMarks($tab_ids) .') GROUP BY vtiger_field.columnname)';
+ $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 ";
+ $sql.= " where $uniqueFieldsRestriction and vtiger_field.block in (" . generateQuestionMarks($block_ids) . ") and";
$sql.= "$display_type and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_field.presence in (0,2)";
$params = array($tab_ids, $block_ids);
@@ -319,7 +320,7 @@ function getColumnsListbyBlock($module, $block,$markMandatory = true) {
$sql.= " and vtiger_field.fieldname not in('notime','duration_minutes','duration_hours')";
}
- $sql.= " group by columnname order by sequence";
+ $sql.= ' order by sequence';
}
if ($tabid == '9,16')
$tabid = "9";
diff --git a/modules/Home/HomeUtils.php b/modules/Home/HomeUtils.php
index f0c2262cd0..fb39bab9d8 100644
--- a/modules/Home/HomeUtils.php
+++ b/modules/Home/HomeUtils.php
@@ -47,7 +47,7 @@ function homepage_getUpcomingActivities($maxval,$calCnt){
"('Completed','Deferred')) and ( vtiger_activity.eventstatus is NULL OR ".
"vtiger_activity.eventstatus not in ('Held','Not Held') )".$upcoming_condition;
- $list_query.= " GROUP BY vtiger_activity.activityid";
+ $list_query.= ' GROUP BY vtiger_activity.activityid,vtiger_recurringevents.recurringdate';
$list_query.= " ORDER BY date_start,time_start ASC";
$list_query.= " limit $maxval";
@@ -177,7 +177,7 @@ function homepage_getPendingActivities($maxval,$calCnt){
"('Completed','Deferred')) and (vtiger_activity.eventstatus is NULL OR vtiger_activity.".
"eventstatus not in ('Held','Not Held')) ".$pending_condition;
- $list_query.= " GROUP BY vtiger_activity.activityid";
+ $list_query.= ' GROUP BY vtiger_activity.activityid,vtiger_recurringevents.recurringdate';
$list_query.= " ORDER BY date_start,time_start ASC";
$list_query.= " limit $maxval";
diff --git a/modules/Reports/ReportRun.php b/modules/Reports/ReportRun.php
index a1fd6d8509..c3b55e3299 100644
--- a/modules/Reports/ReportRun.php
+++ b/modules/Reports/ReportRun.php
@@ -1761,9 +1761,6 @@ function sGetSQLforReport($reportid,$filtersql,$type='',$chartReport=false)
if(isset($selectlist))
{
$selectedcolumns = implode(", ",$selectlist);
- if($chartReport == true){
- $selectedcolumns .= ", count(*) AS 'groupby_count'";
- }
}
//groups list
if(isset($groupslist))
@@ -1806,7 +1803,7 @@ function sGetSQLforReport($reportid,$filtersql,$type='',$chartReport=false)
$wheresql .= " and ".$advfiltersql;
}
- $reportquery = $this->getReportsQuery($this->primarymodule, $type,$where_condition);
+ $reportquery = $basereportquery = $this->getReportsQuery($this->primarymodule, $type,$where_condition);
// If we don't have access to any columns, let us select one column and limit result to show we have no results
// Fix for: http://trac.vtiger.com/cgi-bin/trac.cgi/ticket/4758 - Prasad
@@ -1859,7 +1856,9 @@ function sGetSQLforReport($reportid,$filtersql,$type='',$chartReport=false)
if(trim($groupsquery) != "" && $type !== 'COLUMNSTOTOTAL')
{
if($chartReport == true){
- $reportquery .= " group by ".$this->GetFirstSortByField($reportid);
+ reset($groupslist);
+ $first_key = key($groupslist);
+ $reportquery = 'select '.$columnlist[$first_key].", count(*) AS 'groupby_count' $basereportquery $wheresql group by ".$this->GetFirstSortByField($reportid);
}else{
$reportquery .= " order by ".$groupsquery;
}
diff --git a/modules/Reports/Reports.php b/modules/Reports/Reports.php
index 3d5fd6506e..cdd5123e07 100644
--- a/modules/Reports/Reports.php
+++ b/modules/Reports/Reports.php
@@ -572,37 +572,45 @@ function getColumnsListbyBlock($module,$block)
if ($module == 'Calendar') {
$tabid = array('9','16');
}
- $params = array($tabid, $block);
require('user_privileges/user_privileges_'.$current_user->id.'.php');
//Security Check
if($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] ==0)
{
- $sql = "select * from vtiger_field where vtiger_field.tabid in (". generateQuestionMarks($tabid) .") and vtiger_field.block in (". generateQuestionMarks($block) .") and vtiger_field.displaytype in (1,2,3) and vtiger_field.presence in (0,2) AND tablename NOT IN (".generateQuestionMarks($skipTalbes).") ";
-
- //fix for Ticket #4016
- if($module == "Calendar")
- $sql.=" group by vtiger_field.fieldlabel order by sequence";
- else
- $sql.=" order by sequence";
+ if($module == 'Calendar') {
+ // calendar is special because it is two modules and has many overlapping fields so we have to filter them
+ $sql = 'select * from vtiger_field where vtiger_field.block in ('. generateQuestionMarks($block) .') and vtiger_field.displaytype in (1,2,3) and vtiger_field.presence in (0,2) AND tablename NOT IN ('.generateQuestionMarks($skipTalbes).') ';
+ $sql.= ' and vtiger_field.fieldid in (select min(fieldid) from vtiger_field where vtiger_field.tabid in ('. generateQuestionMarks($tabid) .') group by fieldlabel) order by sequence';
+ $params = array($block, $skipTalbes, $tabid);
+ } else {
+ $sql = 'select * from vtiger_field where vtiger_field.tabid in ('. generateQuestionMarks($tabid) .') and vtiger_field.block in ('. generateQuestionMarks($block) .') and vtiger_field.displaytype in (1,2,3) and vtiger_field.presence in (0,2) AND tablename NOT IN ('.generateQuestionMarks($skipTalbes).') order by sequence';
+ $params = array($tabid, $block, $skipTalbes);
+ }
}
else
{
+ if($module == 'Calendar') {
+ // calendar is special because it is two modules and has many overlapping fields so we have to filter them
+ $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.block in ('. generateQuestionMarks($block) .') and vtiger_field.displaytype in (1,2,3) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_field.presence in (0,2)';
+ $params = array($block);
+ } else {
+ $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 in ('. generateQuestionMarks($tabid) .') and vtiger_field.block in ('. generateQuestionMarks($block) .') and vtiger_field.displaytype in (1,2,3) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_field.presence in (0,2)';
+ $params = array($tabid, $block);
+ }
$profileList = getCurrentUserProfileList();
- $sql = "select * 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 in (". generateQuestionMarks($tabid) .") and vtiger_field.block in (". generateQuestionMarks($block) .") and vtiger_field.displaytype in (1,2,3) and vtiger_profile2field.visible=0 and vtiger_def_org_field.visible=0 and vtiger_field.presence in (0,2)";
if (count($profileList) > 0) {
$sql .= " and vtiger_profile2field.profileid in (". generateQuestionMarks($profileList) .")";
array_push($params, $profileList);
}
$sql .= ' and tablename NOT IN ('.generateQuestionMarks($skipTalbes).') ';
-
- //fix for Ticket #4016
- if($module == "Calendar")
- $sql.=" group by vtiger_field.fieldlabel order by sequence";
- else
- $sql.=" group by vtiger_field.fieldid order by sequence";
+ array_push($params, $skipTalbes);
+ if($module == 'Calendar') {
+ $sql.= ' and vtiger_field.fieldid in (select min(fieldid) from vtiger_field where vtiger_field.tabid in ('. generateQuestionMarks($tabid) .') group by fieldlabel) order by sequence';
+ array_push($params, $tabid);
+ } else {
+ $sql.= ' group by vtiger_field.fieldid order by sequence';
+ }
}
- array_push($params, $skipTalbes);
$module_columnlist = array();
$result = $adb->pquery($sql, $params);
$noofrows = $adb->num_rows($result);