static function getLeavesForPeriod($contactId, $startDate = null, $endDate = null) { $data = CRM_Hrjobcontract_BAO_HRJobLeave::createAbsenceArray(); $jobContracts = civicrm_api3('HRJobContract', 'get', array('sequential' => 1, 'contact_id' => $contactId, 'deleted' => 0)); foreach ($jobContracts['values'] as $jobContract) { $jobContractDetails = civicrm_api3('HRJobDetails', 'get', array('sequential' => 1, 'jobcontract_id' => $jobContract['id'])); if (empty($jobContractDetails['values'])) { continue; } $details = CRM_Utils_Array::first($jobContractDetails['values']); $details['period_start_date'] = $details['period_start_date'] ? date('Y-m-d H:i:s', strtotime($details['period_start_date'])) : null; $details['period_end_date'] = $details['period_end_date'] ? date('Y-m-d H:i:s', strtotime($details['period_end_date'])) : null; if (CRM_Hrjobcontract_BAO_HRJobLeave::isJobDetailsInPeriod($details, $startDate, $endDate)) { $leaves = civicrm_api3('HRJobLeave', 'get', array('sequential' => 1, 'jobcontract_id' => $jobContract['id'])); foreach ($leaves['values'] as $leave) { $data[$leave['leave_type']] += $leave['leave_amount']; } } } return $data; }