From 9e74e3ce168677b40218b2aebb39f8eaf76733ec Mon Sep 17 00:00:00 2001 From: yashodha Date: Sun, 21 Apr 2013 01:40:15 +0530 Subject: [PATCH] CRM-12274 --- CRM/Campaign/BAO/Query.php | 9 +++++-- CRM/Campaign/BAO/Survey.php | 21 +++++++++++----- CRM/Case/BAO/Case.php | 24 ++++++++++++------- CRM/Case/Form/Activity.php | 5 ++-- CRM/Case/XMLProcessor/Process.php | 5 +++- CRM/Case/XMLProcessor/Report.php | 8 +++++-- CRM/Contact/BAO/Query.php | 10 ++++++-- .../Form/Search/Custom/ActivitySearch.php | 4 +++- CRM/Contact/Form/Task/PDFLetterCommon.php | 5 +++- CRM/Core/BAO/ActionSchedule.php | 11 ++++++--- CRM/Friend/BAO/Friend.php | 6 +++-- CRM/Logging/Differ.php | 11 ++++++--- CRM/Report/Form/Activity.php | 8 +++++-- CRM/Report/Form/Campaign/SurveyDetails.php | 21 +++++++++++----- CRM/Report/Form/Contact/Detail.php | 8 +++++-- CRM/Utils/Migrate/ExportJSON.php | 9 ++++--- 16 files changed, 119 insertions(+), 46 deletions(-) diff --git a/CRM/Campaign/BAO/Query.php b/CRM/Campaign/BAO/Query.php index 3d1359febf..8e05881dc8 100755 --- a/CRM/Campaign/BAO/Query.php +++ b/CRM/Campaign/BAO/Query.php @@ -204,10 +204,15 @@ class CRM_Campaign_BAO_Query { return $from; } + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + switch ($name) { case self::CIVICRM_ACTIVITY_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') "; + ON ( civicrm_activity_target.contact_id = contact_a.id AND civicrm_activity_target.record_type_id = $targetID) "; break; case self::CIVICRM_ACTIVITY: @@ -220,7 +225,7 @@ class CRM_Campaign_BAO_Query { case self::CIVICRM_ACTIVITY_ASSIGNMENT: $from = " INNER JOIN civicrm_activity_contact civicrm_activity_assignment ON ( civicrm_activity.id = civicrm_activity_assignment.activity_id AND -civicrm_activity_assignment.record_type = 'Assignee' ) "; +civicrm_activity_assignment.record_type_id = $assigneeID ) "; break; case 'civicrm_survey': diff --git a/CRM/Campaign/BAO/Survey.php b/CRM/Campaign/BAO/Survey.php index 7e9911d9fd..19adda5437 100644 --- a/CRM/Campaign/BAO/Survey.php +++ b/CRM/Campaign/BAO/Survey.php @@ -517,16 +517,19 @@ Group By contact.id"; } $targetContactIds = ' ( ' . implode(',', $voterIds) . ' ) '; - + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $query = " SELECT activity.id, activity.status_id, activityTarget.contact_id as voter_id, activityAssignment.contact_id as interviewer_id FROM civicrm_activity activity INNER JOIN civicrm_activity_contact activityTarget - ON ( activityTarget.activity_id = activity.id AND activityTarget.record_type = 'Target') + ON ( activityTarget.activity_id = activity.id AND activityTarget.record_type_id = $targetID ) INNER JOIN civicrm_activity_contact activityAssignment - ON ( activityAssignment.activity_id = activity.id AND activityAssignment.record_type = 'Assignee') + ON ( activityAssignment.activity_id = activity.id AND activityAssignment.record_type_id = $assigneeID ) WHERE activity.source_record_id = %1 AND ( activity.is_deleted IS NULL OR activity.is_deleted = 0 ) AND activityAssignment.contact_id = %2 @@ -604,13 +607,17 @@ INNER JOIN civicrm_activity_contact activityAssignment contact_a.display_name as voter_name"; } + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $query = " $select FROM civicrm_activity activity INNER JOIN civicrm_activity_contact activityTarget - ON ( activityTarget.activity_id = activity.id AND activityTarget.record_type = 'Target') + ON ( activityTarget.activity_id = activity.id AND activityTarget.record_type_id = $targetID ) INNER JOIN civicrm_activity_contact activityAssignment - ON ( activityAssignment.activity_id = activity.id AND activityAssignment.record_type = 'Assignee') + ON ( activityAssignment.activity_id = activity.id AND activityAssignment.record_type_id = $assigneeID ) INNER JOIN civicrm_contact contact_a ON ( activityTarget.contact_id = contact_a.id ) WHERE activity.source_record_id = %1 AND activity.activity_type_id = %2 @@ -1000,12 +1007,14 @@ INNER JOIN civicrm_contact contact_a ON ( activityTarget.contact_id = contact_a } $interviewers = array(); + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); $query = " SELECT contact.id as id, contact.sort_name as sort_name FROM civicrm_contact contact -INNER JOIN civicrm_activity_contact assignment ON ( assignment.contact_id = contact.id AND record_type = 'Assignee' ) +INNER JOIN civicrm_activity_contact assignment ON ( assignment.contact_id = contact.id AND record_type_id = $assigneeID ) INNER JOIN civicrm_activity activity ON ( activity.id = assignment.activity_id ) INNER JOIN civicrm_survey survey ON ( activity.source_record_id = survey.id ) {$whereClause}"; diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 8b6e31247c..a7892ea03f 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -974,6 +974,9 @@ SELECT case_status.label AS case_status, status_id, case_type.label AS case_type static function getCaseActivity($caseID, &$params, $contactID, $context = NULL, $userID = NULL, $type = NULL) { $values = array(); + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + // CRM-5081 - formatting the dates to omit seconds. // Note the 00 in the date format string is needed otherwise later on it thinks scheduled ones are overdue. $select = "SELECT count(ca.id) as ismultiple, ca.id as id, @@ -1005,7 +1008,7 @@ SELECT case_status.label AS case_status, status_id, case_type.label AS case_type LEFT OUTER JOIN civicrm_option_group og ON og.name="activity_status" LEFT OUTER JOIN civicrm_option_value ov ON ov.option_group_id=og.id AND ov.name="Scheduled" LEFT JOIN civicrm_activity_contact caa - ON caa.activity_id = ca.id AND caa.record_type = "Assignee" + ON caa.activity_id = ca.id AND caa.record_type_id = $assigneeID LEFT JOIN civicrm_contact acc ON acc.id = caa.contact_id '; $where = 'WHERE cca.case_id= %1 @@ -2253,7 +2256,12 @@ INNER JOIN civicrm_case_contact ON ( civicrm_case.id = civicrm_case_contact.cas $activityTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name'); $activityStatuses = CRM_Core_PseudoConstant::activityStatus('name'); - + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + + if (isset($params $processCaseIds = array($otherCaseId); if ($duplicateContacts && !$duplicateCases) { if ($changeClient) { @@ -2401,11 +2409,11 @@ SELECT id //migrate target activities. $otherTargetActivity = new CRM_Activity_DAO_ActivityContact(); $otherTargetActivity->activity_id = $otherActivityId; - $otherTargetActivity->record_type = 'Target'; + $otherTargetActivity->record_type_id = $targetID; $otherTargetActivity->find(); while ($otherTargetActivity->fetch()) { $mainActivityTarget = new CRM_Activity_DAO_ActivityContact(); - $mainActivityTarget->record_type = 'Target'; + $mainActivityTarget->record_type_id = $targetID; $mainActivityTarget->activity_id = $mainActivityId; $mainActivityTarget->contact_id = $otherTargetActivity->contact_id; if ($mainActivityTarget->contact_id == $otherContactId) { @@ -2422,12 +2430,12 @@ SELECT id //migrate assignee activities. $otherAssigneeActivity = new CRM_Activity_DAO_ActivityContact(); $otherAssigneeActivity->activity_id = $otherActivityId; - $otherAssigneeActivity->record_type = 'Assignee'; + $otherAssigneeActivity->record_type_id = $assigneeID; $otherAssigneeActivity->find(); while ($otherAssigneeActivity->fetch()) { $mainAssigneeActivity = new CRM_Activity_DAO_ActivityContact(); $mainAssigneeActivity->activity_id = $mainActivityId; - $mainAssigneeActivity->record_type = 'Assignee'; + $mainAssigneeActivity->record_type_id = $assigneeID; $mainAssigneeActivity->contact_id = $otherAssigneeActivity->contact_id; if ($mainAssigneeActivity->contact_id == $otherContactId) { $mainAssigneeActivity->contact_id = $mainContactId; @@ -2725,7 +2733,7 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')'; $isTarget = $isAssignee = $isSource = FALSE; $target = new CRM_Activity_DAO_ActivityContact(); - $target->record_type = 'Target'; + $target->record_type_id = $targetID; $target->activity_id = $activityId; $target->contact_id = $contactId; if ($target->find(TRUE)) { @@ -2734,7 +2742,7 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')'; $assignee = new CRM_Activity_DAO_ActivityContact(); $assignee->activity_id = $activityId; - $assignee->record_type = 'Assignee'; + $assignee->record_type_id = $assigneeID; $assignee->contact_id = $contactId; if ($assignee->find(TRUE)) { $isAssignee = TRUE; diff --git a/CRM/Case/Form/Activity.php b/CRM/Case/Form/Activity.php index b9a856492c..393e3acd79 100644 --- a/CRM/Case/Form/Activity.php +++ b/CRM/Case/Form/Activity.php @@ -592,11 +592,12 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { ); CRM_Case_BAO_Case::processCaseActivity($caseParams); - + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); // create activity assignee records $assigneeParams = array( 'activity_id' => $activity->id, - 'record_type' => 'Assignee' + 'record_type_id' => $assigneeID ); if (!CRM_Utils_Array::crmIsEmptyArray($params['assignee_contact_id'])) { diff --git a/CRM/Case/XMLProcessor/Process.php b/CRM/Case/XMLProcessor/Process.php index 8a4c8b673a..9e61115fc2 100644 --- a/CRM/Case/XMLProcessor/Process.php +++ b/CRM/Case/XMLProcessor/Process.php @@ -253,12 +253,15 @@ class CRM_Case_XMLProcessor_Process extends CRM_Case_XMLProcessor { } function deleteEmptyActivity(&$params) { + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $query = " DELETE a FROM civicrm_activity a INNER JOIN civicrm_activity_contact t ON t.activity_id = a.id WHERE t.contact_id = %1 -AND t.record_type = 'Target' +AND t.record_type_id = $targetID AND a.is_auto = 1 AND a.is_current_revision = 1 "; diff --git a/CRM/Case/XMLProcessor/Report.php b/CRM/Case/XMLProcessor/Report.php index 69bc3b69b6..cfa5697e33 100644 --- a/CRM/Case/XMLProcessor/Report.php +++ b/CRM/Case/XMLProcessor/Report.php @@ -233,13 +233,17 @@ AND ac.case_id = %1 $joinCaseActivity = " INNER JOIN civicrm_case_activity ca ON a.id = ca.activity_id "; } + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $query = " SELECT a.*, aa.contact_id as assigneeID, at.contact_id as targetID {$selectCaseActivity} FROM civicrm_activity a {$joinCaseActivity} -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' +LEFT JOIN civicrm_activity_contact at ON a.id = at.activity_id AND at.record_type_id = $targetID +LEFT JOIN civicrm_activity_contact aa ON a.id = aa.activity_id AND aa.record_type_id = $assigneeID WHERE a.id = %1 "; $params = array(1 => array($activityID, 'Integer')); diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index e544a45b26..5ec9a35241 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -2698,10 +2698,13 @@ WHERE id IN ( $groupIDs ) // search tag in activities $etActTable = "`civicrm_entity_act_tag-" . $value . "`"; $tActTable = "`civicrm_act_tag-" . $value . "`"; + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $this->_tables[$etActTable] = $this->_whereTables[$etActTable] = " LEFT JOIN civicrm_activity_contact - ON ( civicrm_activity_contact.contact_id = contact_a.id AND civicrm_activity_contact.record_type = 'Target' ) + ON ( civicrm_activity_contact.contact_id = contact_a.id AND civicrm_activity_contact.record_type_id = {$targetID} ) LEFT JOIN civicrm_activity ON ( civicrm_activity.id = civicrm_activity_contact.activity_id AND civicrm_activity.is_deleted = 0 AND civicrm_activity.is_current_revision = 1 ) @@ -2759,6 +2762,9 @@ WHERE id IN ( $groupIDs ) // search tag in cases $etCaseTable = "`civicrm_entity_case_tag-" . $value . "`"; + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $this->_tables[$etCaseTable] = $this->_whereTables[$etCaseTable] = " LEFT JOIN civicrm_case_contact ON civicrm_case_contact.contact_id = contact_a.id @@ -2771,7 +2777,7 @@ WHERE id IN ( $groupIDs ) $this->_tables[$etActTable] = $this->_whereTables[$etActTable] = " LEFT JOIN civicrm_activity_contact - ON ( civicrm_activity_contact.contact_id = contact_a.id AND civicrm_activity_contact.record_type = 'Target' ) + ON ( civicrm_activity_contact.contact_id = contact_a.id AND civicrm_activity_contact.record_type_id = {$targetID} ) LEFT JOIN civicrm_activity ON ( civicrm_activity.id = civicrm_activity_contact.activity_id AND civicrm_activity.is_deleted = 0 AND civicrm_activity.is_current_revision = 1 ) diff --git a/CRM/Contact/Form/Search/Custom/ActivitySearch.php b/CRM/Contact/Form/Search/Custom/ActivitySearch.php index f652a93e62..118adb0932 100644 --- a/CRM/Contact/Form/Search/Custom/ActivitySearch.php +++ b/CRM/Contact/Form/Search/Custom/ActivitySearch.php @@ -224,6 +224,8 @@ class CRM_Contact_Form_Search_Custom_ActivitySearch implements CRM_Contact_Form_ // Regular JOIN statements here to limit results to contacts who have activities. function from() { + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); return " civicrm_contact contact_a JOIN civicrm_activity activity @@ -237,7 +239,7 @@ class CRM_Contact_Form_Search_Custom_ActivitySearch implements CRM_Contact_Form_ LEFT JOIN civicrm_case_activity cca ON activity.id = cca.activity_id LEFT JOIN civicrm_activity_contact assignment - ON activity.id = assignment.activity_id AND assignment.record_type = 'Assignee' + ON activity.id = assignment.activity_id AND assignment.record_type_id = {$assigneeID} LEFT JOIN civicrm_contact contact_c ON assignment.contact_id = contact_c.id "; } diff --git a/CRM/Contact/Form/Task/PDFLetterCommon.php b/CRM/Contact/Form/Task/PDFLetterCommon.php index 74269f0c7d..e46361cc23 100644 --- a/CRM/Contact/Form/Task/PDFLetterCommon.php +++ b/CRM/Contact/Form/Task/PDFLetterCommon.php @@ -383,11 +383,14 @@ class CRM_Contact_Form_Task_PDFLetterCommon { } } + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + foreach ($form->_contactIds as $contactId) { $activityTargetParams = array( 'activity_id' => empty($activity->id) ? $activityIds[$contactId] : $activity->id, 'contact_id' => $contactId, - 'record_type' => 'Target' + 'record_type_id' => $targetID ); CRM_Activity_BAO_ActivityContact::create($activityTargetParams); } diff --git a/CRM/Core/BAO/ActionSchedule.php b/CRM/Core/BAO/ActionSchedule.php index 63b06ae9e3..78062b0ed4 100755 --- a/CRM/Core/BAO/ActionSchedule.php +++ b/CRM/Core/BAO/ActionSchedule.php @@ -751,18 +751,23 @@ WHERE reminder.action_schedule_id = %1 AND reminder.action_date_time IS NULL if ($mapping->entity == 'civicrm_activity') { $contactField = 'r.contact_id'; + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + switch (CRM_Utils_Array::value($actionSchedule->recipient, $recipientOptions)) { case 'Activity Assignees': - $join[] = "INNER JOIN civicrm_activity_contact r ON r.activity_id = e.id AND record_type = 'Assignee'"; + $join[] = "INNER JOIN civicrm_activity_contact r ON r.activity_id = e.id AND record_type_id = {$assigneeID}"; break; case 'Activity Source': - $join[] = "INNER JOIN civicrm_activity_contact r ON r.activity_id = e.id AND record_type = 'Source'"; + $join[] = "INNER JOIN civicrm_activity_contact r ON r.activity_id = e.id AND record_type_id = {$sourceID}"; break; default: case 'Activity Targets': - $join[] = "INNER JOIN civicrm_activity_contact r ON r.activity_id = e.id AND record_type = 'Target'"; + $join[] = "INNER JOIN civicrm_activity_contact r ON r.activity_id = e.id AND record_type_id = {$targetID}"; break; } diff --git a/CRM/Friend/BAO/Friend.php b/CRM/Friend/BAO/Friend.php index c33085f20f..5aba88fe1c 100644 --- a/CRM/Friend/BAO/Friend.php +++ b/CRM/Friend/BAO/Friend.php @@ -135,7 +135,9 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend { //activity creation $activity = CRM_Activity_BAO_Activity::create($activityParams); - + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + //friend contacts creation foreach ($contactParams as $key => $value) { @@ -152,7 +154,7 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend { $targetParams = array( 'activity_id' => $activity->id, 'contact_id' => $contact, - 'record_type' => 'Target' + 'record_type_id' => $targetID ); // See if it already exists diff --git a/CRM/Logging/Differ.php b/CRM/Logging/Differ.php index 56e941f6ae..49a5452f3d 100644 --- a/CRM/Logging/Differ.php +++ b/CRM/Logging/Differ.php @@ -82,10 +82,15 @@ class CRM_Logging_Differ { $contactIdClause = "AND (contact_id_a = %3 OR contact_id_b = %3)"; break; case 'civicrm_activity': + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $join = " -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' "; +LEFT JOIN civicrm_activity_contact at ON at.activity_id = lt.id AND at.contact_id = %3 AND at.record_type_id = {$targetID} +LEFT JOIN civicrm_activity_contact aa ON aa.activity_id = lt.id AND aa.contact_id = %3 AND aa.record_type_id = {$assigneeID} +LEFT JOIN civicrm_activity_contact source ON source.activity_id = lt.id AND source.contact_id = %3 AND source.record_type_id = {$sourceID} "; $contactIdClause = "AND (at.id IS NOT NULL OR aa.id IS NOT NULL OR source.id IS NOT NULL)"; break; case 'civicrm_case': diff --git a/CRM/Report/Form/Activity.php b/CRM/Report/Form/Activity.php index 3c2c1b1cbd..ca85513fdb 100644 --- a/CRM/Report/Form/Activity.php +++ b/CRM/Report/Form/Activity.php @@ -348,15 +348,19 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { } function from() { + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $this->_from = " FROM civicrm_activity {$this->_aliases['civicrm_activity']} LEFT JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_target']} ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_target']}.activity_id AND - {$this->_aliases['civicrm_activity_target']}.record_type = 'Target' + {$this->_aliases['civicrm_activity_target']}.record_type_id = {$targetID} LEFT JOIN civicrm_activity_contact {$this->_aliases['civicrm_activity_assignment']} ON {$this->_aliases['civicrm_activity']}.id = {$this->_aliases['civicrm_activity_assignment']}.activity_id AND - {$this->_aliases['civicrm_activity_assignment']}.record_type = 'Assignee' + {$this->_aliases['civicrm_activity_assignment']}.record_type_id = {$assigneeID} LEFT JOIN civicrm_contact civicrm_contact_source ON {$this->_aliases['civicrm_activity']}.source_contact_id = civicrm_contact_source.id LEFT JOIN civicrm_contact contact_civireport diff --git a/CRM/Report/Form/Campaign/SurveyDetails.php b/CRM/Report/Form/Campaign/SurveyDetails.php index 5d414a46b9..14197ffe77 100644 --- a/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/CRM/Report/Form/Campaign/SurveyDetails.php @@ -313,21 +313,30 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { function from() { $this->_from = " FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom} "; + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); //get the activity table joins. - $this->_from .= " INNER JOIN civicrm_activity_contact civicrm_activity_target ON ( {$this->_aliases['civicrm_contact']}.id = civicrm_activity_target.contact_id AND civicrm_activity_target.record_type = 'Target') \n"; - $this->_from .= " INNER JOIN civicrm_activity {$this->_aliases['civicrm_activity']} ON ( {$this->_aliases['civicrm_activity']}.id = civicrm_activity_target.activity_id )\n"; - $this->_from .= " INNER JOIN civicrm_activity_contact civicrm_activity_assignment ON ( {$this->_aliases['civicrm_activity']}.id = civicrm_activity_assignment.activity_id AND civicrm_activity_assignment.record_type = 'Assignee' )\n"; + $this->_from .= " INNER JOIN civicrm_activity_contact civicrm_activity_target ON + ( {$this->_aliases['civicrm_contact']}.id = civicrm_activity_target.contact_id AND civicrm_activity_target.record_type_id = {$targetID}) \n"; + $this->_from .= " INNER JOIN civicrm_activity {$this->_aliases['civicrm_activity']} ON + ( {$this->_aliases['civicrm_activity']}.id = civicrm_activity_target.activity_id )\n"; + $this->_from .= " INNER JOIN civicrm_activity_contact civicrm_activity_assignment ON + ( {$this->_aliases['civicrm_activity']}.id = civicrm_activity_assignment.activity_id AND civicrm_activity_assignment.record_type_id = {$assigneeID} )\n"; //get the address table. - $this->_from .= " LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND {$this->_aliases['civicrm_address']}.is_primary = 1\n"; + $this->_from .= " LEFT JOIN civicrm_address {$this->_aliases['civicrm_address']} ON + {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_address']}.contact_id AND {$this->_aliases['civicrm_address']}.is_primary = 1\n"; if ($this->_emailField) { - $this->_from .= "LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND {$this->_aliases['civicrm_email']}.is_primary = 1\n"; + $this->_from .= "LEFT JOIN civicrm_email {$this->_aliases['civicrm_email']} ON + {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_email']}.contact_id AND {$this->_aliases['civicrm_email']}.is_primary = 1\n"; } if ($this->_phoneField) { - $this->_from .= "LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND {$this->_aliases['civicrm_phone']}.is_primary = 1\n"; + $this->_from .= "LEFT JOIN civicrm_phone {$this->_aliases['civicrm_phone']} ON + {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_phone']}.contact_id AND {$this->_aliases['civicrm_phone']}.is_primary = 1\n"; } if($this->_locationBasedPhoneField){ diff --git a/CRM/Report/Form/Contact/Detail.php b/CRM/Report/Form/Contact/Detail.php index 427a6f925d..36fa06bc0d 100644 --- a/CRM/Report/Form/Contact/Detail.php +++ b/CRM/Report/Form/Contact/Detail.php @@ -471,13 +471,17 @@ class CRM_Report_Form_Contact_Detail extends CRM_Report_Form { } if (CRM_Utils_Array::value('activity_civireport', $this->_selectComponent)) { + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $this->_formComponent['activity_civireport'] = "FROM civicrm_activity {$this->_aliases['civicrm_activity']} LEFT JOIN civicrm_activity_contact civicrm_activity_target ON {$this->_aliases['civicrm_activity']}.id = civicrm_activity_target.activity_id AND - civicrm_activity_target.record_type = 'Target' + civicrm_activity_target.record_type_id = {$targetID} LEFT JOIN civicrm_activity_contact civicrm_activity_assignment ON - {$this->_aliases['civicrm_activity']}.id = civicrm_activity_assignment.activity_id AND civicrm_activity_assignment.record_type = 'Assignee' + {$this->_aliases['civicrm_activity']}.id = civicrm_activity_assignment.activity_id AND civicrm_activity_assignment.record_type_id = {$assigneeID} LEFT JOIN civicrm_contact sourceContact ON {$this->_aliases['civicrm_activity']}.source_contact_id = sourceContact.id LEFT JOIN civicrm_contact {$this->_aliases['civicrm_activity_target']} ON diff --git a/CRM/Utils/Migrate/ExportJSON.php b/CRM/Utils/Migrate/ExportJSON.php index 72f2cd0e2d..e188e461ca 100644 --- a/CRM/Utils/Migrate/ExportJSON.php +++ b/CRM/Utils/Migrate/ExportJSON.php @@ -373,19 +373,22 @@ AND entity_table = 'civicrm_contact' function activity(&$contactIDs, &$additionalContacts) { static $_activitiesHandled = array(); - + $activityContacts = CRM_Core_PseudoConstant::activityContacts('name'); + $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); + $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); + $ids = implode(',', $contactIDs); $sql = "( SELECT a.* FROM civicrm_activity a - INNER JOIN civicrm_activity_contact aa ON aa.activity_id = a.id AND aa.record_type = 'Assignee' + INNER JOIN civicrm_activity_contact aa ON aa.activity_id = a.id AND aa.record_type_id = $assigneeID WHERE aa.contact_id IN ( $ids ) AND ( a.activity_type_id != 3 AND a.activity_type_id != 20 ) ) UNION ( SELECT a.* FROM civicrm_activity a - INNER JOIN civicrm_activity_contact at ON at.activity_id = a.id AND at.record_type = 'Target' + INNER JOIN civicrm_activity_contact at ON at.activity_id = a.id AND at.record_type_id = $targetID WHERE at.contact_id IN ( $ids ) AND ( a.activity_type_id != 3 AND a.activity_type_id != 20 ) ) -- 2.25.1