Added field in activity summary report
[civicrm-core.git] / CRM / Report / Form / Activity.php
index d3bbdfb13fb5f95d2de60e577dc209b9b803419b..c29c16948951470361c83a067640fe16bba4090c 100644 (file)
@@ -66,20 +66,20 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
         'fields' => array(
           'contact_source' => array(
             'name' => 'sort_name',
-            'title' => ts('Source Contact Name'),
+            'title' => ts('Source Name'),
             'alias' => 'civicrm_contact_source',
             'no_repeat' => TRUE,
           ),
           'contact_assignee' => array(
             'name' => 'sort_name',
-            'title' => ts('Assignee Contact Name'),
+            'title' => ts('Assignee Name'),
             'alias' => 'civicrm_contact_assignee',
             'dbAlias' => "civicrm_contact_assignee.sort_name",
             'default' => TRUE,
           ),
           'contact_target' => array(
             'name' => 'sort_name',
-            'title' => ts('Target Contact Name'),
+            'title' => ts('Target Name'),
             'alias' => 'civicrm_contact_target',
             'dbAlias' => "civicrm_contact_target.sort_name",
             'default' => TRUE,
@@ -113,21 +113,21 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
           'contact_source' => array(
             'name' => 'sort_name',
             'alias' => 'civicrm_contact_source',
-            'title' => ts('Source Contact Name'),
+            'title' => ts('Source Name'),
             'operator' => 'like',
             'type' => CRM_Report_Form::OP_STRING,
           ),
           'contact_assignee' => array(
             'name' => 'sort_name',
             'alias' => 'civicrm_contact_assignee',
-            'title' => ts('Assignee Contact Name'),
+            'title' => ts('Assignee Name'),
             'operator' => 'like',
             'type' => CRM_Report_Form::OP_STRING,
           ),
           'contact_target' => array(
             'name' => 'sort_name',
             'alias' => 'civicrm_contact_target',
-            'title' => ts('Target Contact Name'),
+            'title' => ts('Target Name'),
             'operator' => 'like',
             'type' => CRM_Report_Form::OP_STRING,
           ),
@@ -146,28 +146,48 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
         'fields' => array(
           'contact_source_email' => array(
             'name' => 'email',
-            'title' => ts('Source Contact Email'),
+            'title' => ts('Source Email'),
             'alias' => 'civicrm_email_source',
           ),
           'contact_assignee_email' => array(
             'name' => 'email',
-            'title' => ts('Assignee Contact Email'),
+            'title' => ts('Assignee Email'),
             'alias' => 'civicrm_email_assignee',
           ),
           'contact_target_email' => array(
             'name' => 'email',
-            'title' => ts('Target Contact Email'),
+            'title' => ts('Target Email'),
             'alias' => 'civicrm_email_target',
           ),
         ),
         'order_bys' => array(
           'source_contact_email' => array(
             'name' => 'email',
-            'title' => ts('Source Contact Email'),
+            'title' => ts('Source Email'),
             'dbAlias' => 'civicrm_email_contact_source_email',
           ),
         ),
       ),
+      'civicrm_phone' => array(
+        'dao' => 'CRM_Core_DAO_Phone',
+        'fields' => array(
+          'contact_source_phone' => array(
+            'name' => 'phone',
+            'title' => ts('Source Phone'),
+            'alias' => 'civicrm_phone_source',
+          ),
+          'contact_assignee_phone' => array(
+            'name' => 'phone',
+            'title' => ts('Assignee Phone'),
+            'alias' => 'civicrm_phone_assignee',
+          ),
+          'contact_target_phone' => array(
+            'name' => 'phone',
+            'title' => ts('Target Phone'),
+            'alias' => 'civicrm_phone_target',
+          ),
+        ),
+      ),
       'civicrm_activity' => array(
         'dao' => 'CRM_Activity_DAO_Activity',
         'fields' => array(
@@ -208,7 +228,6 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
         ),
         'filters' => array(
           'activity_date_time' => array(
-            'default' => 'this.month',
             'operatorType' => CRM_Report_Form::OP_DATE,
           ),
           'activity_subject' => array('title' => ts('Activity Subject')),
@@ -388,7 +407,9 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
         if (strstr($clause, 'civicrm_contact_assignee.') ||
           strstr($clause, 'civicrm_contact_source.') ||
           strstr($clause, 'civicrm_email_assignee.') ||
-          strstr($clause, 'civicrm_email_source.')
+          strstr($clause, 'civicrm_email_source.') ||
+          strstr($clause, 'civicrm_phone_assignee.') ||
+          strstr($clause, 'civicrm_phone_source.')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -400,7 +421,9 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
         if (strstr($clause, 'civicrm_contact_target.') ||
           strstr($clause, 'civicrm_contact_source.') ||
           strstr($clause, 'civicrm_email_target.') ||
-          strstr($clause, 'civicrm_email_source.')
+          strstr($clause, 'civicrm_email_source.') ||
+          strstr($clause, 'civicrm_phone_target.') ||
+          strstr($clause, 'civicrm_phone_source.')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -412,7 +435,9 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
         if (strstr($clause, 'civicrm_contact_target.') ||
           strstr($clause, 'civicrm_contact_assignee.') ||
           strstr($clause, 'civicrm_email_target.') ||
-          strstr($clause, 'civicrm_email_assignee.')
+          strstr($clause, 'civicrm_email_assignee.') ||
+          strstr($clause, 'civicrm_phone_target.') ||
+          strstr($clause, 'civicrm_phone_assignee.')
         ) {
           $removeKeys[] = $key;
           unset($this->_selectClauses[$key]);
@@ -424,9 +449,15 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
       foreach ($this->_selectClauses as $key => $clause) {
         if (strstr($clause, 'civicrm_contact_contact_target') ||
           strstr($clause, 'civicrm_contact_contact_assignee') ||
-          strstr($clause, 'civicrm_contact_contact_source')
+          strstr($clause, 'civicrm_contact_contact_source') ||
+          strstr($clause, 'civicrm_phone_contact_source_phone') ||
+          strstr($clause, 'civicrm_phone_contact_assignee_phone') ||
+          strstr($clause, 'civicrm_email_contact_source_email') ||
+          strstr($clause, 'civicrm_email_contact_assignee_email') ||
+          strstr($clause, 'civicrm_email_contact_target_email') ||
+          strstr($clause, 'civicrm_phone_contact_target_phone')
         ) {
-          $this->_selectClauses[$key] = "GROUP_CONCAT($clause SEPARATOR ';') as $clause";
+          $this->_selectClauses[$key] = "GROUP_CONCAT($clause SEPARATOR '; ') as $clause";
         }
       }
     }
@@ -478,6 +509,13 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
                    ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_target.contact_id AND
                       civicrm_email_target.is_primary = 1";
       }
+
+      if ($this->isTableSelected('civicrm_phone')) {
+        $this->_from .= "
+            LEFT JOIN civicrm_phone civicrm_phone_target
+                   ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_target.contact_id AND
+                      civicrm_phone_target.is_primary = 1 ";
+      }
       $this->_aliases['civicrm_contact'] = 'civicrm_contact_target';
     }
 
@@ -497,6 +535,12 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
                    ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_assignee.contact_id AND
                       civicrm_email_assignee.is_primary = 1";
       }
+      if ($this->isTableSelected('civicrm_phone')) {
+        $this->_from .= "
+            LEFT JOIN civicrm_phone civicrm_phone_assignee
+                   ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_assignee.contact_id AND
+                      civicrm_phone_assignee.is_primary = 1 ";
+      }
       $this->_aliases['civicrm_contact'] = 'civicrm_contact_assignee';
     }
 
@@ -516,9 +560,15 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
                    ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_email_source.contact_id AND
                       civicrm_email_source.is_primary = 1";
       }
+      if ($this->isTableSelected('civicrm_phone')) {
+        $this->_from .= "
+            LEFT JOIN civicrm_phone civicrm_phone_source
+                   ON {$this->_aliases['civicrm_activity_contact']}.contact_id = civicrm_phone_source.contact_id AND
+                      civicrm_phone_source.is_primary = 1 ";
+      }
       $this->_aliases['civicrm_contact'] = 'civicrm_contact_source';
     }
-    $this->_from .= "INNER JOIN civicrm_option_value {$this->_aliases['civicrm_option_value']}
+    $this->_from .= " INNER JOIN civicrm_option_value {$this->_aliases['civicrm_option_value']}
             ON {$this->_aliases['civicrm_option_value']}.option_group_id = {$activityTypeId}
             AND {$this->_aliases['civicrm_option_value']}.value = {$this->_aliases['civicrm_activity']}.activity_type_id";
     $this->addAddressFromClause();
@@ -597,6 +647,14 @@ class CRM_Report_Form_Activity extends CRM_Report_Form {
       }
     }
 
+    // CRM-12675
+    $components = CRM_Core_Component::getNames();
+    foreach ($components as $componentID => $componentName) {
+      if (!CRM_Core_Permission::check("access $componentName")) {
+        $clauses[] = " ({$this->_aliases['civicrm_option_value']}.component_id IS NULL OR {$this->_aliases['civicrm_option_value']}.component_id <> {$componentID}) ";
+      }
+    }
+
     if (empty($clauses)) {
       $this->_where .= " ";
     }
@@ -720,6 +778,8 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}";
   ADD COLUMN civicrm_contact_contact_source VARCHAR(128),
   ADD COLUMN civicrm_contact_contact_assignee_id VARCHAR(128),
   ADD COLUMN civicrm_contact_contact_source_id VARCHAR(128),
+  ADD COLUMN civicrm_phone_contact_assignee_phone VARCHAR(128),
+  ADD COLUMN civicrm_phone_contact_source_phone VARCHAR(128),
   ADD COLUMN civicrm_email_contact_assignee_email VARCHAR(128),
   ADD COLUMN civicrm_email_contact_source_email VARCHAR(128)";
     CRM_Core_DAO::executeQuery($tempQuery);
@@ -794,7 +854,6 @@ GROUP BY civicrm_activity_id {$this->_having} {$this->_orderBy} {$this->_limit}"
       $onHover = ts('View Contact Summary for this Contact');
       $onHoverAct = ts('View Activity Record');
     }
-
     foreach ($rows as $rowNum => $row) {
       // if we have an activity type, format the View Activity link for use in various columns
       if ($viewLinks &&