Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REF] Activity Summary report - stop overloading from function on activity summary report #14364

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 44 additions & 42 deletions CRM/Report/Form/ActivitySummary.php
Original file line number Diff line number Diff line change
Expand Up @@ -297,60 +297,62 @@ public function select() {

/**
* Generate from clause.
*
* @param bool|FALSE $durationMode
*/
public function from($durationMode = FALSE) {
public function from() {
$activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
$assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
$targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
$sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);

if (!$durationMode) {
$this->_from = "
FROM civicrm_activity {$this->_aliases['civicrm_activity']}

LEFT JOIN civicrm_activity_contact target_activity
ON {$this->_aliases['civicrm_activity']}.id = target_activity.activity_id AND
target_activity.record_type_id = {$targetID}
LEFT JOIN civicrm_activity_contact assignment_activity
ON {$this->_aliases['civicrm_activity']}.id = assignment_activity.activity_id AND
assignment_activity.record_type_id = {$assigneeID}
LEFT JOIN civicrm_activity_contact source_activity
ON {$this->_aliases['civicrm_activity']}.id = source_activity.activity_id AND
source_activity.record_type_id = {$sourceID}
LEFT JOIN civicrm_contact contact_civireport
ON target_activity.contact_id = contact_civireport.id
LEFT JOIN civicrm_contact civicrm_contact_assignee
ON assignment_activity.contact_id = civicrm_contact_assignee.id
LEFT JOIN civicrm_contact civicrm_contact_source
ON source_activity.contact_id = civicrm_contact_source.id
{$this->_aclFrom}
LEFT JOIN civicrm_option_value
ON ( {$this->_aliases['civicrm_activity']}.activity_type_id = civicrm_option_value.value )
LEFT JOIN civicrm_option_group
ON civicrm_option_group.id = civicrm_option_value.option_group_id
LEFT JOIN civicrm_case_activity
ON civicrm_case_activity.activity_id = {$this->_aliases['civicrm_activity']}.id
LEFT JOIN civicrm_case
ON civicrm_case_activity.case_id = civicrm_case.id
LEFT JOIN civicrm_case_contact
ON civicrm_case_contact.case_id = civicrm_case.id ";

$this->joinPhoneFromContact();
}
else {
$this->_from = "
$this->_from = "
FROM civicrm_activity {$this->_aliases['civicrm_activity']}

LEFT JOIN civicrm_activity_contact target_activity
ON {$this->_aliases['civicrm_activity']}.id = target_activity.activity_id AND
target_activity.record_type_id = {$targetID}
LEFT JOIN civicrm_activity_contact assignment_activity
ON {$this->_aliases['civicrm_activity']}.id = assignment_activity.activity_id AND
assignment_activity.record_type_id = {$assigneeID}
LEFT JOIN civicrm_activity_contact source_activity
ON {$this->_aliases['civicrm_activity']}.id = source_activity.activity_id AND
source_activity.record_type_id = {$sourceID}
LEFT JOIN civicrm_contact contact_civireport
ON target_activity.contact_id = contact_civireport.id
LEFT JOIN civicrm_contact civicrm_contact_assignee
ON assignment_activity.contact_id = civicrm_contact_assignee.id
LEFT JOIN civicrm_contact civicrm_contact_source
ON source_activity.contact_id = civicrm_contact_source.id
{$this->_aclFrom}
LEFT JOIN civicrm_option_value
ON ( {$this->_aliases['civicrm_activity']}.activity_type_id = civicrm_option_value.value )
LEFT JOIN civicrm_option_group
ON civicrm_option_group.id = civicrm_option_value.option_group_id
LEFT JOIN civicrm_case_activity
ON civicrm_case_activity.activity_id = {$this->_aliases['civicrm_activity']}.id
LEFT JOIN civicrm_case
ON civicrm_case_activity.case_id = civicrm_case.id
LEFT JOIN civicrm_case_contact
ON civicrm_case_contact.case_id = civicrm_case.id ";

$this->joinPhoneFromContact();

$this->joinEmailFromContact();
}

/**
* Generate from clause for when calculating activity durations.
*/
public function activityDurationFrom() {
$activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
$targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
$this->_from = "
FROM civicrm_activity {$this->_aliases['civicrm_activity']}
LEFT JOIN civicrm_activity_contact target_activity
ON {$this->_aliases['civicrm_activity']}.id = target_activity.activity_id AND
target_activity.record_type_id = {$targetID}
LEFT JOIN civicrm_contact contact_civireport
ON target_activity.contact_id = contact_civireport.id
{$this->_aclFrom}";
}

$this->joinEmailFromContact();
}

/**
Expand Down Expand Up @@ -553,7 +555,7 @@ public function postProcess() {
CRM_Core_DAO::executeQuery($insertQuery);

// now build the query for duration sum
$this->from(TRUE);
$this->activityDurationFrom();
$this->where(TRUE);
$this->groupBy(FALSE);

Expand Down