clean up(CRM-12274)
[civicrm-core.git] / CRM / Case / BAO / Case.php
index a2a71ff0c682a1e1acf731b6160c2a040fa232f2..ce0bc025f5f6c71b6b8989dca76792b1bc871de5 100644 (file)
@@ -974,6 +974,10 @@ 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);
+    $targetID = CRM_Utils_Array::key('Activity Targets', $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,
@@ -1004,9 +1008,9 @@ SELECT case_status.label AS case_status, status_id, case_type.label AS case_type
                   LEFT JOIN civicrm_entity_file ef on ef.entity_table = "civicrm_activity" AND ef.entity_id = ca.id
                   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_assignment caa
-                                ON caa.activity_id = ca.id
-                               LEFT JOIN civicrm_contact acc ON acc.id = caa.assignee_contact_id  ';
+                  LEFT JOIN civicrm_activity_contact caa
+                                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
                     AND ca.is_current_revision = 1';
@@ -1026,7 +1030,6 @@ SELECT case_status.label AS case_status, status_id, case_type.label AS case_type
       $where .= " AND ca.is_deleted = 0";
     }
 
-
     if (CRM_Utils_Array::value('activity_type_id', $params)) {
       $where .= " AND ca.activity_type_id = " . CRM_Utils_Type::escape($params['activity_type_id'], 'Integer');
     }
@@ -1177,8 +1180,7 @@ SELECT case_status.label AS case_status, status_id, case_type.label AS case_type
         $reporterName = '<a href="' . $contactViewUrl . $dao->reporter_id . '">' . $dao->reporter . '</a>';
       }
       $values[$dao->id]['reporter'] = $reporterName;
-
-      $targetNames = CRM_Activity_BAO_ActivityTarget::getTargetNames($dao->id);
+      $targetNames = CRM_Activity_BAO_ActivityContact::getNames($dao->id, $targetID);
       $targetContactUrls = $withContacts = array();
       foreach ($targetNames as $targetId => $targetName) {
         if (!in_array($targetId, $clientIds)) {
@@ -1287,7 +1289,7 @@ SELECT case_status.label AS case_status, status_id, case_type.label AS case_type
       }
 
       if ($allowEdit) {
-        $values[$dao->id]['status'] = '<a class="crm-activity-status crm-activity-status-' . $dao->id . ' ' . $values[$dao->id]['class'] . ' crm-activity-change-status" activity_id='. $dao->id. ' current_status=' . $dao->status . ' case_id=' . $caseID . '" href="#" title=\'' . $statusTitle . '\'>' . $values[$dao->id]['status'] . '</a>';
+        $values[$dao->id]['status'] = '<a class="crm-activity-status crm-activity-status-' . $dao->id . ' ' . $values[$dao->id]['class'] . ' crm-activity-change-status crm-editable-enabled" activity_id='. $dao->id. ' current_status=' . $dao->status . ' case_id=' . $caseID . '" href="#" title=\'' . $statusTitle . '\'>' . $values[$dao->id]['status'] . '</a>';
       }
     }
     $dao->free();
@@ -2253,7 +2255,11 @@ 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);
     $processCaseIds = array($otherCaseId);
     if ($duplicateContacts && !$duplicateCases) {
       if ($changeClient) {
@@ -2399,15 +2405,17 @@ SELECT  id
         $mainCaseActivity->free();
 
         //migrate target activities.
-        $otherTargetActivity = new CRM_Activity_DAO_ActivityTarget();
+        $otherTargetActivity = new CRM_Activity_DAO_ActivityContact();
         $otherTargetActivity->activity_id = $otherActivityId;
+        $otherTargetActivity->record_type_id = $targetID;
         $otherTargetActivity->find();
         while ($otherTargetActivity->fetch()) {
-          $mainActivityTarget = new CRM_Activity_DAO_ActivityTarget();
+          $mainActivityTarget = new CRM_Activity_DAO_ActivityContact();
+          $mainActivityTarget->record_type_id = $targetID;
           $mainActivityTarget->activity_id = $mainActivityId;
-          $mainActivityTarget->target_contact_id = $otherTargetActivity->target_contact_id;
-          if ($mainActivityTarget->target_contact_id == $otherContactId) {
-            $mainActivityTarget->target_contact_id = $mainContactId;
+          $mainActivityTarget->contact_id = $otherTargetActivity->contact_id;
+          if ($mainActivityTarget->contact_id == $otherContactId) {
+            $mainActivityTarget->contact_id = $mainContactId;
           }
           //avoid duplicate object.
           if (!$mainActivityTarget->find(TRUE)) {
@@ -2418,15 +2426,17 @@ SELECT  id
         $otherTargetActivity->free();
 
         //migrate assignee activities.
-        $otherAssigneeActivity = new CRM_Activity_DAO_ActivityAssignment();
+        $otherAssigneeActivity = new CRM_Activity_DAO_ActivityContact();
         $otherAssigneeActivity->activity_id = $otherActivityId;
+        $otherAssigneeActivity->record_type_id = $assigneeID;
         $otherAssigneeActivity->find();
         while ($otherAssigneeActivity->fetch()) {
-          $mainAssigneeActivity = new CRM_Activity_DAO_ActivityAssignment();
+          $mainAssigneeActivity = new CRM_Activity_DAO_ActivityContact();
           $mainAssigneeActivity->activity_id = $mainActivityId;
-          $mainAssigneeActivity->assignee_contact_id = $otherAssigneeActivity->assignee_contact_id;
-          if ($mainAssigneeActivity->assignee_contact_id == $otherContactId) {
-            $mainAssigneeActivity->assignee_contact_id = $mainContactId;
+          $mainAssigneeActivity->record_type_id = $assigneeID;
+          $mainAssigneeActivity->contact_id = $otherAssigneeActivity->contact_id;
+          if ($mainAssigneeActivity->contact_id == $otherContactId) {
+            $mainAssigneeActivity->contact_id = $mainContactId;
           }
           //avoid duplicate object.
           if (!$mainAssigneeActivity->find(TRUE)) {
@@ -2506,7 +2516,7 @@ SELECT  id
         $mergeActSubject = ts("Case %1 reassigned client from %2 to %3. New Case ID is %4.",
           array(
             1 => $otherCaseId, 2 => $otherContactDisplayName,
-            3 => $mainContactDisplayName, 4 => $mainCaseId,
+            3 => $mainContactDisplayName, 4 => $mainCaseId
           )
         );
       }
@@ -2515,7 +2525,7 @@ SELECT  id
         $mergeActSubject = ts("Case %1 copied from contact id %2 to contact id %3 via merge. New Case ID is %4.",
           array(
             1 => $otherCaseId, 2 => $otherContactId,
-            3 => $mainContactId, 4 => $mainCaseId,
+            3 => $mainContactId, 4 => $mainCaseId
           )
         );
       }
@@ -2720,16 +2730,18 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
               //view - contact must be source/assignee/target
               $isTarget = $isAssignee = $isSource = FALSE;
 
-              $target = new CRM_Activity_DAO_ActivityTarget();
+              $target = new CRM_Activity_DAO_ActivityContact();
+              $target->record_type_id = $targetID;
               $target->activity_id = $activityId;
-              $target->target_contact_id = $contactId;
+              $target->contact_id = $contactId;
               if ($target->find(TRUE)) {
                 $isTarget = TRUE;
               }
 
-              $assignee = new CRM_Activity_DAO_ActivityAssignment();
+              $assignee = new CRM_Activity_DAO_ActivityContact();
               $assignee->activity_id = $activityId;
-              $assignee->assignee_contact_id = $contactId;
+              $assignee->record_type_id = $assigneeID;
+              $assignee->contact_id = $contactId;
               if ($assignee->find(TRUE)) {
                 $isAssignee = TRUE;
               }