Merge pull request #2988 from totten/4.4-rmorgtools
[civicrm-core.git] / CRM / Report / Form / ActivitySummary.php
index 573c62c623a247e12745c3c3e32e4151edbf9934..8f89c0552164dd2a2c8387b09cd8602fc3ff9bdf 100644 (file)
@@ -1,9 +1,8 @@
 <?php
-// $Id$
 
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -152,7 +151,7 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form {
           'priority_id' =>
           array('title' => ts('Priority'),
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
-            'options' => CRM_Core_PseudoConstant::priority(),
+            'options' => CRM_Core_PseudoConstant::get('CRM_Activity_DAO_Activity', 'priority_id'),
           ),
         ),
         'group_bys' =>
@@ -290,28 +289,39 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form {
   }
 
   function from() {
+    $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
+    $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
+    $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
+    $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);
 
     $this->_from = "
         FROM civicrm_activity {$this->_aliases['civicrm_activity']}
-        
-             LEFT JOIN civicrm_activity_target target_activity 
-                    ON {$this->_aliases['civicrm_activity']}.id = target_activity.activity_id 
-             LEFT JOIN civicrm_activity_assignment assignment_activity
-                    ON {$this->_aliases['civicrm_activity']}.id = assignment_activity.activity_id 
-             LEFT JOIN civicrm_contact {$this->_aliases['civicrm_contact']}
-                    ON ({$this->_aliases['civicrm_activity']}.source_contact_id = {$this->_aliases['civicrm_contact']}.id OR
-                         target_activity.target_contact_id = {$this->_aliases['civicrm_contact']}.id                      OR
-                         assignment_activity.assignee_contact_id = {$this->_aliases['civicrm_contact']}.id )
+
+             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 
+             LEFT JOIN civicrm_option_value
                     ON ( {$this->_aliases['civicrm_activity']}.activity_type_id = civicrm_option_value.value )
-             LEFT JOIN civicrm_option_group 
+             LEFT JOIN civicrm_option_group
                     ON civicrm_option_group.id = civicrm_option_value.option_group_id
-             LEFT JOIN civicrm_case_activity 
+             LEFT JOIN civicrm_case_activity
                     ON civicrm_case_activity.activity_id = {$this->_aliases['civicrm_activity']}.id
-             LEFT JOIN civicrm_case 
+             LEFT JOIN civicrm_case
                     ON civicrm_case_activity.case_id = civicrm_case.id
-             LEFT JOIN civicrm_case_contact 
+             LEFT JOIN civicrm_case_contact
                     ON civicrm_case_contact.case_id = civicrm_case.id ";
 
     if ($this->_emailField) {
@@ -330,7 +340,7 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form {
   }
 
   function where() {
-    $this->_where = " WHERE civicrm_option_group.name = 'activity_type' AND 
+    $this->_where = " WHERE civicrm_option_group.name = 'activity_type' AND
                                 {$this->_aliases['civicrm_activity']}.is_test = 0 AND
                                 {$this->_aliases['civicrm_activity']}.is_deleted = 0 AND
                                 {$this->_aliases['civicrm_activity']}.is_current_revision = 1";