diff --git a/CRM/Campaign/BAO/Query.php b/CRM/Campaign/BAO/Query.php index 7cfb65353f043600ce4f3afd6b0df4ada7e92971..3d1359febfcc3978e2d91c01f3544d6909564e24 100755 --- a/CRM/Campaign/BAO/Query.php +++ b/CRM/Campaign/BAO/Query.php @@ -95,7 +95,7 @@ class CRM_Campaign_BAO_Query { //all below tables are require to fetch result. //1. get survey activity target table in. - $query->_select['survey_activity_target_contact_id'] = 'civicrm_activity_contact.contact_id as survey_activity_target_contact_id'; + $query->_select['survey_activity_target_contact_id'] = 'civicrm_activity_target.contact_id as survey_activity_target_contact_id'; $query->_select['survey_activity_target_id'] = 'civicrm_activity_target.id as survey_activity_target_id'; $query->_element['survey_activity_target_id'] = 1; $query->_element['survey_activity_target_contact_id'] = 1; @@ -158,10 +158,10 @@ class CRM_Campaign_BAO_Query { $query->_qill[$grouping][] = ts('Survey - %1', array(1 => CRM_Core_DAO::getFieldValue('CRM_Campaign_DAO_Survey', $value, 'title'))); $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_activity.source_record_id', - $op, $value, "Integer" + $op, $value, 'Integer' ); $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_survey.id', - $op, $value, "Integer" + $op, $value, 'Integer' ); return; @@ -170,7 +170,7 @@ class CRM_Campaign_BAO_Query { $query->_qill[$grouping][] = ts('Survey Status - %1', array(1 => $activityStatus[$value])); $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_activity.status_id', - $op, $value, "Integer" + $op, $value, 'Integer' ); return; @@ -189,8 +189,8 @@ class CRM_Campaign_BAO_Query { } } $query->_qill[$grouping][] = ts('Survey Interviewer - %1', array(1 => $surveyInterviewerName)); - $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_activity_assignment.assignee_contact_id', - $op, $value, "Integer" + $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_activity_assignment.contact_id', + $op, $value, 'Integer' ); return; } @@ -206,8 +206,8 @@ class CRM_Campaign_BAO_Query { switch ($name) { case self::CIVICRM_ACTIVITY_TARGET: - $from = " INNER JOIN civicrm_activity_contact - ON ( civicrm_activity_contact.contact_id = contact_a.id AND civicrm_activity_contact.record_type = 'Target') "; + $from = " INNER JOIN civicrm_activity_contact civicrm_activity_target + ON ( civicrm_activity_target.contact_id = contact_a.id AND civicrm_activity_target.record_type = 'Target') "; break; case self::CIVICRM_ACTIVITY: @@ -219,7 +219,8 @@ class CRM_Campaign_BAO_Query { case self::CIVICRM_ACTIVITY_ASSIGNMENT: $from = " -INNER JOIN civicrm_activity_assignment ON ( civicrm_activity.id = civicrm_activity_assignment.activity_id ) "; +INNER JOIN civicrm_activity_contact civicrm_activity_assignment ON ( civicrm_activity.id = civicrm_activity_assignment.activity_id AND +civicrm_activity_assignment.record_type = 'Assignee' ) "; break; case 'civicrm_survey': diff --git a/CRM/Case/XMLProcessor/Report.php b/CRM/Case/XMLProcessor/Report.php index cb6a7f8109d8e6d61f3200620c922c162b99d6ba..69bc3b69b6b5ade15d0ffdd0ae90766112dbb202 100644 --- a/CRM/Case/XMLProcessor/Report.php +++ b/CRM/Case/XMLProcessor/Report.php @@ -234,12 +234,12 @@ AND ac.case_id = %1 } $query = " -SELECT a.*, aa.assignee_contact_id as assigneeID, at.target_contact_id as targetID +SELECT a.*, aa.contact_id as assigneeID, at.contact_id as targetID {$selectCaseActivity} FROM civicrm_activity a {$joinCaseActivity} -LEFT JOIN civicrm_activity_target at ON a.id = at.activity_id -LEFT JOIN civicrm_activity_assignment aa ON a.id = aa.activity_id +LEFT JOIN civicrm_activity_contact at ON a.id = at.activity_id AND at.record_type = 'Target' +LEFT JOIN civicrm_activity_contact aa ON a.id = aa.activity_id AND aa.record_type = 'Assignee' WHERE a.id = %1 "; $params = array(1 => array($activityID, 'Integer')); diff --git a/CRM/Logging/Differ.php b/CRM/Logging/Differ.php index e93c4133d51ff996a13a85031fe3202e07c622c6..56e941f6aec5e023a0fa4e563abbbb0bb68001b8 100644 --- a/CRM/Logging/Differ.php +++ b/CRM/Logging/Differ.php @@ -83,9 +83,9 @@ class CRM_Logging_Differ { break; case 'civicrm_activity': $join = " -LEFT JOIN civicrm_activity_target at ON at.activity_id = lt.id AND at.target_contact_id = %3 -LEFT JOIN civicrm_activity_assignment aa ON aa.activity_id = lt.id AND aa.assignee_contact_id = %3 -LEFT JOIN civicrm_activity source ON source.id = lt.id AND source.source_contact_id = %3"; +LEFT JOIN civicrm_activity_contact at ON at.activity_id = lt.id AND at.contact_id = %3 AND at.record_type = 'Target' +LEFT JOIN civicrm_activity_contact aa ON aa.activity_id = lt.id AND aa.contact_id = %3 AND aa.record_type = 'Assignee' +LEFT JOIN civicrm_activity_contact source ON source.activity_id = lt.id AND source.contact_id = %3 AND source.record_type = 'Source' "; $contactIdClause = "AND (at.id IS NOT NULL OR aa.id IS NOT NULL OR source.id IS NOT NULL)"; break; case 'civicrm_case': @@ -106,6 +106,7 @@ SELECT DISTINCT lt.id FROM `{$this->db}`.`log_$table` lt WHERE log_conn_id = %1 AND log_date BETWEEN DATE_SUB(%2, INTERVAL {$this->interval}) AND DATE_ADD(%2, INTERVAL {$this->interval}) {$contactIdClause}"; + $dao = CRM_Core_DAO::executeQuery($sql, $params); while ($dao->fetch()) { $diffs = array_merge($diffs, $this->diffsInTableForId($table, $dao->id)); diff --git a/xml/schema/Activity/Activity.xml b/xml/schema/Activity/Activity.xml index 1605b5ff9c569a0644f5eba861b9bfc222b3abf4..f18c4d324ea0db2b681d3bbd1201f284198d7a8a 100644 --- a/xml/schema/Activity/Activity.xml +++ b/xml/schema/Activity/Activity.xml @@ -28,12 +28,14 @@ <headerPattern>/(activity.)?source(.contact(.id)?)?/i</headerPattern> <comment>Contact ID of the person scheduling or logging this Activity. Usually the authenticated user.</comment> <add>1.1</add> + <drop>4.4</drop> </field> <foreignKey> <name>source_contact_id</name> <table>civicrm_contact</table> <key>id</key> <add>1.1</add> + <drop>4.4</drop> <onDelete>SET NULL</onDelete> </foreignKey> <index>