Merge pull request #1865 from deepak-srivastava/act-report
[civicrm-core.git] / CRM / Case / Form / Activity.php
index b9a856492c880a9ec211add0e1f6996ec57c385d..a73c0e36b61aef889e4ee62920400f49eabd2707 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -187,7 +187,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
             );
             $activities = array_keys($activities);
             $activities = $activities[0];
-            $editUrl    = CRM_Utils_System::url('civicrm/case/activity',
+            $editUrl = CRM_Utils_System::url('civicrm/case/activity',
               "reset=1&cid={$this->_currentlyViewedContactId}&caseid={$this->_caseId}&action=update&id={$activities}"
             );
           }
@@ -273,7 +273,8 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
       unset($aTypes[$openCaseID]);
       asort($aTypes);
       $this->_fields['followup_activity_type_id']['attributes'] = array(
-        '' => '- select activity type -') + $aTypes;
+          '' => '- select activity type -'
+        ) + $aTypes;
     }
 
     $result = parent::buildQuickForm();
@@ -388,8 +389,8 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
     }
 
     if ($this->_action & CRM_Core_Action::RENEW) {
-      $statusMsg       = NULL;
-      $params          = array('id' => $this->_activityId);
+      $statusMsg = NULL;
+      $params = array('id' => $this->_activityId);
       $activityRestore = CRM_Activity_BAO_Activity::restoreActivity($params);
       if ($activityRestore) {
         $statusMsg = ts('The selected activity has been restored.<br />');
@@ -458,7 +459,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
       );
     }
 
-    // assigning formated value
+    // assigning formatted value
     if (CRM_Utils_Array::value('assignee_contact_id', $params)) {
       $params['assignee_contact_id'] = explode(',', $params['assignee_contact_id']);
     }
@@ -581,7 +582,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
 
     // unset params intended for activities only
     unset($caseParams['subject'], $caseParams['details'],
-      $caseParams['status_id'], $caseParams['custom']
+    $caseParams['status_id'], $caseParams['custom']
     );
     $case = CRM_Case_BAO_Case::create($caseParams);
 
@@ -592,34 +593,10 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
     );
     CRM_Case_BAO_Case::processCaseActivity($caseParams);
 
-
-    // create activity assignee records
-    $assigneeParams = array(
-      'activity_id' => $activity->id,
-      'record_type' => 'Assignee'
-    );
-
-    if (!CRM_Utils_Array::crmIsEmptyArray($params['assignee_contact_id'])) {
-      //skip those assignee contacts which are already assigned
-      //while sending a copy.CRM-4509.
-      $activityAssigned = array_flip($params['assignee_contact_id']);
-      $activityId       = isset($this->_activityId) ? $this->_activityId : $activity->id;
-      $assigneeContacts = CRM_Activity_BAO_ActivityAssignment::getAssigneeNames($activityId);
-      $activityAssigned = array_diff_key($activityAssigned, $assigneeContacts);
-
-      foreach ($params['assignee_contact_id'] as $key => $id) {
-        $assigneeParams['contact_id'] = $id;
-        CRM_Activity_BAO_ActivityContact::create($assigneeParams);
-      }
-      //modify assigne_contact as per newly assigned contact before sending copy. CRM-4509.
-      $params['assignee_contact_id'] = $activityAssigned;
-    }
-
     // Insert civicrm_log record for the activity (e.g. store the
     // created / edited by contact id and date for the activity)
     // Note - civicrm_log is already created by CRM_Activity_BAO_Activity::create()
 
-
     // send copy to selected contacts.
     $mailStatus = '';
     $mailToContacts = array();
@@ -627,10 +604,12 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
     //CRM-5695
     //check for notification settings for assignee contacts
     $selectedContacts = array('contact_check');
-
+    $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name');
+    $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts);
     if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
-        'activity_assignee_notification'
-      )) {
+      'activity_assignee_notification'
+    )
+    ) {
       $selectedContacts[] = 'assignee_contact_id';
     }
 
@@ -643,8 +622,16 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
           $this->_relatedContacts = CRM_Activity_BAO_ActivityAssignment::getAssigneeNames($activity->id, TRUE, FALSE);
           $mailStatus .= ' ' . ts("A copy of the activity has also been sent to assignee contacts(s).");
         }
+
         //build an associative array with unique email addresses.
-        foreach ($params[$val] as $id => $dnc) {
+        foreach ($params[$val] as $key => $value) {
+          if ($val == 'contact_check') {
+            $id = $key;
+          }
+          else {
+            $id = $value;
+          }
+
           if (isset($id) && array_key_exists($id, $this->_relatedContacts)) {
             //if email already exists in array then append with ', ' another role only otherwise add it to array.
             if ($contactDetails = CRM_Utils_Array::value($this->_relatedContacts[$id]['email'], $mailToContacts)) {
@@ -660,13 +647,13 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
     }
 
     if (!CRM_Utils_array::crmIsEmptyArray($mailToContacts)) {
-      //include attachments while sendig a copy of activity.
+      //include attachments while sending a copy of activity.
       $attachments = CRM_Core_BAO_File::getEntityFile('civicrm_activity',
         $activity->id
       );
 
-      $ics = new CRM_Activity_BAO_ICalendar( $activity );
-      $ics->addAttachment( $attachments, $mailToContacts );
+      $ics = new CRM_Activity_BAO_ICalendar($activity);
+      $ics->addAttachment($attachments, $mailToContacts);
 
       $result = CRM_Case_BAO_Case::sendActivityCopy($this->_currentlyViewedContactId,
         $activity->id, $mailToContacts, $attachments, $this->_caseId
@@ -698,13 +685,13 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity {
     }
 
     CRM_Core_Session::setStatus('', ts("'%1' activity has been %2. %3 %4",
-        array(
-          1 => $this->_activityTypeName,
-          2 => $recordStatus,
-          3 => $followupStatus,
-          4 => $mailStatus
-        )
-      ), 'info');
+      array(
+        1 => $this->_activityTypeName,
+        2 => $recordStatus,
+        3 => $followupStatus,
+        4 => $mailStatus
+      )
+    ), 'info');
   }
 }