示例#1
0
 public function onChange(CRM_HRCaseUtils_Analyzer $analyzer, $objectRef)
 {
     if (isset($objectRef->activity_type_id)) {
         // Get activity type name & status of the activity being completed
         $activityTypeGroup = civicrm_api3('option_group', 'get', array('name' => 'activity_type'));
         $activityType = array('value' => $objectRef->activity_type_id, 'option_group_id' => $activityTypeGroup['id']);
         $activityTypeID = civicrm_api3('option_value', 'get', $activityType);
         $activityTypeID = $activityTypeID['values'][$activityTypeID['id']]['name'];
         $activityStatusGroup = civicrm_api3('option_group', 'get', array('name' => 'activity_status'));
         $activityStatus = array('value' => $objectRef->status_id, 'option_group_id' => $activityStatusGroup['id']);
         $activityStatusID = civicrm_api3('option_value', 'get', $activityStatus);
         $activityStatusID = $activityStatusID['values'][$activityStatusID['id']]['name'];
         // Schedule Interview Prospect activity
         if ($activityTypeID == 'Open Case' && $activityStatusID == 'Completed') {
             if ($analyzer->hasActivity($activityTypeID, $activityStatusID)) {
                 $nextActivity = 'Interview Prospect';
                 // Get the activity ID for Interview Prospect
                 $activityID = array('name' => $nextActivity, 'option_group_id' => $activityTypeGroup['id']);
                 $activityTypeID = civicrm_api3('option_value', 'get', $activityID);
                 $activityTypeID = $activityTypeID['values'][$activityTypeID['id']]['value'];
                 $params = self::buildParams($activityTypeID, $nextActivity, $objectRef);
             }
         } elseif ($activityTypeID == 'Interview Prospect' && $activityStatusID == 'Completed') {
             if ($analyzer->hasActivity($activityTypeID, $activityStatusID)) {
                 $nextActivity = 'Background Check';
                 // Get the activity ID for Background Check
                 $activityID = array('name' => $nextActivity, 'option_group_id' => $activityTypeGroup['id']);
                 $activityTypeID = civicrm_api3('option_value', 'get', $activityID);
                 $activityTypeID = $activityTypeID['values'][$activityTypeID['id']]['value'];
                 $params = self::buildParams($activityTypeID, $nextActivity, $objectRef);
             }
         } elseif ($activityTypeID == 'Background Check' && $activityStatusID == 'Completed') {
             return;
         }
         if (isset($params)) {
             $followupActivity = CRM_Activity_BAO_Activity::createFollowupActivity($objectRef->original_id, $params);
             if ($followupActivity) {
                 $caseParams = array('activity_id' => $followupActivity->id, 'case_id' => $objectRef->case_id);
                 CRM_Case_BAO_Case::processCaseActivity($caseParams);
                 $analyzer->flush();
             }
         }
     }
 }