Merge pull request #2375 from colemanw/master
[civicrm-core.git] / CRM / Report / Form / Contact / LoggingSummary.php
index 7a112fad06992fbe9cbc65df2ecfb178cefe128c..fef8530c266c700755cbfdb9df4ec67573e2be29 100644 (file)
@@ -1,9 +1,7 @@
 <?php
-// $Id$
-
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -118,6 +116,11 @@ class CRM_Report_Form_Contact_LoggingSummary extends CRM_Logging_ReportSummary {
             'title' => ts('Log Type'),
             'type' => CRM_Utils_Type::T_STRING,
           ),
+          'log_type_table' => array(
+            'name'  => 'log_type',
+            'title' => ts('Log Type Table'),
+            'type' => CRM_Utils_Type::T_STRING,
+          ),
           'log_action' => array(
             'operatorType' => CRM_Report_Form::OP_MULTISELECT,
             'options' => array('Insert' => ts('Insert'), 'Update' => ts('Update'), 'Delete' => ts('Delete')),
@@ -158,12 +161,13 @@ class CRM_Report_Form_Contact_LoggingSummary extends CRM_Logging_ReportSummary {
 
     foreach ($rows as $key => &$row) {
       if (!isset($isDeleted[$row['log_civicrm_entity_altered_contact_id']])) {
-        $isDeleted[$row['log_civicrm_entity_altered_contact_id']] = 
+        $isDeleted[$row['log_civicrm_entity_altered_contact_id']] =
           CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $row['log_civicrm_entity_altered_contact_id'], 'is_deleted') !== '0';
       }
 
-      if (!$isDeleted[$row['log_civicrm_entity_altered_contact_id']]) {
-        $row['log_civicrm_entity_altered_contact_link'] = 
+      if (CRM_Utils_Array::value('log_civicrm_entity_altered_contact', $row) &&
+        !$isDeleted[$row['log_civicrm_entity_altered_contact_id']]) {
+        $row['log_civicrm_entity_altered_contact_link'] =
           CRM_Utils_System::url('civicrm/contact/view', 'reset=1&cid=' . $row['log_civicrm_entity_altered_contact_id']);
         $row['log_civicrm_entity_altered_contact_hover'] = ts("Go to contact summary");
         $entity = $this->getEntityValue($row['log_civicrm_entity_id'], $row['log_civicrm_entity_log_type'], $row['log_civicrm_entity_log_date']);
@@ -173,42 +177,47 @@ class CRM_Report_Form_Contact_LoggingSummary extends CRM_Logging_ReportSummary {
       $row['altered_by_contact_display_name_link'] = CRM_Utils_System::url('civicrm/contact/view', 'reset=1&cid=' . $row['log_civicrm_entity_log_user_id']);
       $row['altered_by_contact_display_name_hover'] = ts("Go to contact summary");
 
-      if ($row['log_civicrm_entity_is_deleted'] and $row['log_civicrm_entity_log_action'] == 'Update') {
+      if ($row['log_civicrm_entity_is_deleted'] and 'Update' == CRM_Utils_Array::value('log_civicrm_entity_log_action', $row)) {
         $row['log_civicrm_entity_log_action'] = ts('Delete (to trash)');
       }
 
-      if ('Contact' == CRM_Utils_Array::value('log_type', $this->_logTables[$row['log_civicrm_entity_log_type']]) && 
-          $row['log_civicrm_entity_log_action'] == 'Insert' ) {
+      if ('Contact' == CRM_Utils_Array::value('log_type', $this->_logTables[$row['log_civicrm_entity_log_type']]) &&
+          CRM_Utils_Array::value('log_civicrm_entity_log_action', $row) == 'Insert' ) {
         $row['log_civicrm_entity_log_action'] = ts('Update');
       }
 
-      if ($newAction = 
-          $this->getEntityAction($row['log_civicrm_entity_id'], 
-                                 $row['log_civicrm_entity_log_conn_id'], 
-                                 $row['log_civicrm_entity_log_type'],
-                                 $row['log_civicrm_entity_log_action']))
+      if ($newAction = $this->getEntityAction($row['log_civicrm_entity_id'],
+                       $row['log_civicrm_entity_log_conn_id'],
+                       $row['log_civicrm_entity_log_type'],
+                       CRM_Utils_Array::value('log_civicrm_entity_log_action', $row)))
         $row['log_civicrm_entity_log_action'] = $newAction;
 
       $row['log_civicrm_entity_log_type'] = $this->getLogType($row['log_civicrm_entity_log_type']);
 
       $date = CRM_Utils_Date::isoToMysql($row['log_civicrm_entity_log_date']);
 
-      if ($row['log_civicrm_entity_log_action'] == 'Update') {
+      if ('Update' == CRM_Utils_Array::value('log_civicrm_entity_log_action', $row)) {
         $q = "reset=1&log_conn_id={$row['log_civicrm_entity_log_conn_id']}&log_date=". $date;
         if ($this->cid) {
           $q .= '&cid=' . $this->cid;
         }
+        $q .= (!empty($row['log_civicrm_entity_altered_contact'])) ?
+          '&alteredName='.$row['log_civicrm_entity_altered_contact'] : '';
+        $q .= (!empty($row['altered_by_contact_display_name'])) ?
+          '&alteredBy='.$row['altered_by_contact_display_name'] : '';
+        $q .= (!empty($row['log_civicrm_entity_log_user_id'])) ?
+          '&alteredById='.$row['log_civicrm_entity_log_user_id'] : '';
 
         $url1 = CRM_Report_Utils_Report::getNextUrl('logging/contact/detail', "{$q}&snippet=4&section=2&layout=overlay", FALSE, TRUE);
         $url2 = CRM_Report_Utils_Report::getNextUrl('logging/contact/detail', "{$q}&section=2", FALSE, TRUE);
         $row['log_civicrm_entity_log_action'] = "<a href='{$url1}' class='crm-summary-link'><div class='icon details-icon'></div></a>&nbsp;<a title='View details for this update' href='{$url2}'>" . ts('Update') . '</a>';
       }
 
-      $key  = $date . '_' . 
-        $row['log_civicrm_entity_log_type'] . '_' . 
-        $row['log_civicrm_entity_log_conn_id'] . '_' . 
+      $key  = $date . '_' .
+        $row['log_civicrm_entity_log_type'] . '_' .
+        $row['log_civicrm_entity_log_conn_id'] . '_' .
         $row['log_civicrm_entity_log_user_id'] . '_' .
-        $row['log_civicrm_entity_id'];
+        $row['log_civicrm_entity_altered_contact_id'];
       $newRows[$key] = $row;
 
       unset($row['log_civicrm_entity_log_user_id']);
@@ -229,9 +238,9 @@ class CRM_Report_Form_Contact_LoggingSummary extends CRM_Logging_ReportSummary {
     $tableName = CRM_Utils_Array::value('table_name', $detail, $entity);
     $clause = CRM_Utils_Array::value('entity_table', $detail);
     $clause = $clause ? "AND entity_log_civireport.entity_table = 'civicrm_contact'" : null;
-    
+
     $joinClause = "
-INNER JOIN civicrm_contact modified_contact_civireport 
+INNER JOIN civicrm_contact modified_contact_civireport
         ON (entity_log_civireport.{$detail['fk']} = modified_contact_civireport.id {$clause})";
 
     if (CRM_Utils_Array::value('joins', $detail)) {
@@ -239,14 +248,14 @@ INNER JOIN civicrm_contact modified_contact_civireport
       $clause = $clause ? "AND fk_table.entity_table = 'civicrm_contact'" : null;
       $joinClause = "
 INNER JOIN `{$this->loggingDB}`.{$detail['joins']['table']} fk_table ON {$detail['joins']['join']}
-INNER JOIN civicrm_contact modified_contact_civireport 
+INNER JOIN civicrm_contact modified_contact_civireport
         ON (fk_table.{$detail['fk']} = modified_contact_civireport.id {$clause})";
     }
 
     $this->_from = "
 FROM `{$this->loggingDB}`.$tableName entity_log_civireport
 {$joinClause}
-LEFT  JOIN civicrm_contact altered_by_contact_civireport 
+LEFT  JOIN civicrm_contact altered_by_contact_civireport
         ON (entity_log_civireport.log_user_id = altered_by_contact_civireport.id)";
   }
 }