/** * Function to get the case subject for Activity * * @param int $activityId activity id * * @return case subject or null * @access public * @static */ static function getCaseSubject($activityId) { $caseActivity = new CRM_Case_DAO_CaseActivity(); $caseActivity->activity_id = $activityId; if ($caseActivity->find(TRUE)) { return CRM_Core_DAO::getFieldValue('CRM_Case_BAO_Case', $caseActivity->case_id, 'subject'); } return NULL; }
/** * Test activity api create for case activities */ function testCaseActivityCreate() { // Create a case first $params = $this->_params; $result = $this->callAPISuccess('case', 'create', $params); $params = array('case_id' => 1, 'activity_type_id' => $this->followup_activity_type_value, 'subject' => 'Test followup', 'source_contact_id' => $this->_loggedInUser, 'target_contact_id' => $this->_params['contact_id']); $result = $this->callAPISuccess('activity', 'create', $params); $this->assertEquals($result['values'][$result['id']]['activity_type_id'], $params['activity_type_id'], 'in line ' . __LINE__); // might need this for other tests that piggyback on this one $this->_caseActivityId = $result['values'][$result['id']]['id']; // Check other DB tables populated properly - is there a better way to do this? assertDBState() requires that we know the id already. $dao = new CRM_Case_DAO_CaseActivity(); $dao->case_id = 1; $dao->activity_id = $this->_caseActivityId; $this->assertEquals($dao->find(), 1, 'case_activity table not populated correctly in line ' . __LINE__); $dao->free(); $dao = new CRM_Activity_DAO_ActivityContact(); $dao->activity_id = $this->_caseActivityId; $dao->contact_id = $this->_params['contact_id']; $dao->record_type_id = 3; $this->assertEquals($dao->find(), 1, 'activity_contact table not populated correctly in line ' . __LINE__); $dao->free(); // TODO: There's more things we could check }
/** * @param array $params * * @return array */ public static function _convertToCaseActivity($params) { if (!$params['activityID'] || !$params['caseID']) { return array('error_msg' => 'required params missing.'); } $otherActivity = new CRM_Activity_DAO_Activity(); $otherActivity->id = $params['activityID']; if (!$otherActivity->find(TRUE)) { return array('error_msg' => 'activity record is missing.'); } $actDateTime = CRM_Utils_Date::isoToMysql($otherActivity->activity_date_time); // Create new activity record. $mainActivity = new CRM_Activity_DAO_Activity(); $mainActVals = array(); CRM_Core_DAO::storeValues($otherActivity, $mainActVals); // Get new activity subject. if (!empty($params['newSubject'])) { $mainActVals['subject'] = $params['newSubject']; } $mainActivity->copyValues($mainActVals); $mainActivity->id = NULL; $mainActivity->activity_date_time = $actDateTime; // Make sure this is current revision. $mainActivity->is_current_revision = TRUE; // Drop all relations. $mainActivity->parent_id = $mainActivity->original_id = NULL; $mainActivity->save(); $mainActivityId = $mainActivity->id; CRM_Activity_BAO_Activity::logActivityAction($mainActivity); $mainActivity->free(); // Mark previous activity as deleted. If it was a non-case activity // then just change the subject. if (in_array($params['mode'], array('move', 'file'))) { $caseActivity = new CRM_Case_DAO_CaseActivity(); $caseActivity->case_id = $params['caseID']; $caseActivity->activity_id = $otherActivity->id; if ($params['mode'] == 'move' || $caseActivity->find(TRUE)) { $otherActivity->is_deleted = 1; } else { $otherActivity->subject = ts('(Filed on case %1)', array(1 => $params['caseID'])) . ' ' . $otherActivity->subject; } $otherActivity->activity_date_time = $actDateTime; $otherActivity->save(); $caseActivity->free(); } $otherActivity->free(); $targetContacts = array(); if (!empty($params['targetContactIds'])) { $targetContacts = array_unique(explode(',', $params['targetContactIds'])); } $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, '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); $sourceContactID = CRM_Activity_BAO_Activity::getSourceContactID($params['activityID']); $src_params = array('activity_id' => $mainActivityId, 'contact_id' => $sourceContactID, 'record_type_id' => $sourceID); CRM_Activity_BAO_ActivityContact::create($src_params); foreach ($targetContacts as $key => $value) { $targ_params = array('activity_id' => $mainActivityId, 'contact_id' => $value, 'record_type_id' => $targetID); CRM_Activity_BAO_ActivityContact::create($targ_params); } // typically this will be empty, since assignees on another case may be completely different $assigneeContacts = array(); if (!empty($params['assigneeContactIds'])) { $assigneeContacts = array_unique(explode(',', $params['assigneeContactIds'])); } foreach ($assigneeContacts as $key => $value) { $assigneeParams = array('activity_id' => $mainActivityId, 'contact_id' => $value, 'record_type_id' => $assigneeID); CRM_Activity_BAO_ActivityContact::create($assigneeParams); } // Attach newly created activity to case. $caseActivity = new CRM_Case_DAO_CaseActivity(); $caseActivity->case_id = $params['caseID']; $caseActivity->activity_id = $mainActivityId; $caseActivity->save(); $error_msg = $caseActivity->_lastError; $caseActivity->free(); $params['mainActivityId'] = $mainActivityId; CRM_Activity_BAO_Activity::copyExtendedActivityData($params); return array('error_msg' => $error_msg, 'newId' => $mainActivity->id); }
/** * Function to get the case subject for Activity * * @param int $activityId activity id * @return case subject or null * @access public * @static */ static function getCaseSubject($activityId) { require_once 'CRM/Case/DAO/CaseActivity.php'; $caseActivity = new CRM_Case_DAO_CaseActivity(); $caseActivity->activity_id = $activityId; if ($caseActivity->find(true)) { return CRM_Core_DAO::getFieldValue('CRM_Case_BAO_Case', $caseActivity->case_id, 'subject'); } return null; }