/** * Get absence policy data for one or more absence policyes. * @param array $data filter data * @return array */ function getAbsencePolicy($data = NULL, $disable_paging = FALSE) { if (!$this->getPermissionObject()->Check('absence_policy', 'enabled') or !($this->getPermissionObject()->Check('absence_policy', 'view') or $this->getPermissionObject()->Check('absence_policy', 'view_own') or $this->getPermissionObject()->Check('absence_policy', 'view_child'))) { //return $this->getPermissionObject()->PermissionDenied(); $data['filter_columns'] = $this->handlePermissionFilterColumns(isset($data['filter_columns']) ? $data['filter_columns'] : NULL, Misc::trimSortPrefix($this->getOptions('list_columns'))); } $data = $this->initializeFilterAndPager($data, $disable_paging); //Make sure we filter absence policies to just those assigned to the policy group when user_id filter is passed. if (isset($data['filter_data']['user_id'])) { $user_ids = (array) $data['filter_data']['user_id']; $pgulf = new PolicyGroupUserListFactory(); $pgulf->getByUserId($user_ids); if ($pgulf->getRecordCount() > 0) { $pguf_obj = $pgulf->getCurrent(); $policy_group_id = $pguf_obj->getPolicyGroup(); } if (isset($policy_group_id)) { $cgmlf = new CompanyGenericMapListFactory(); $cgmlf->getByObjectTypeAndObjectID(170, $policy_group_id); if ($cgmlf->getRecordCount() > 0) { foreach ($cgmlf as $cgm_obj) { $absence_policy_ids[] = $cgm_obj->getMapID(); } } } if (isset($absence_policy_ids)) { $data['filter_data']['id'] = $absence_policy_ids; } else { //Make sure that is no absence policies are assigned to the policy group, we don't display any. $data['filter_data']['id'] = array(0); } unset($data['filter_data']['user_id']); } $data['filter_data']['permission_children_ids'] = $this->getPermissionObject()->getPermissionChildren('absence_policy', 'view'); $blf = TTnew('AbsencePolicyListFactory'); $blf->getAPISearchByCompanyIdAndArrayCriteria($this->getCurrentCompanyObject()->getId(), $data['filter_data'], $data['filter_items_per_page'], $data['filter_page'], NULL, $data['filter_sort']); Debug::Text('Record Count: ' . $blf->getRecordCount(), __FILE__, __LINE__, __METHOD__, 10); if ($blf->getRecordCount() > 0) { $this->setPagerObject($blf); foreach ($blf as $b_obj) { $retarr[] = $b_obj->getObjectAsArray($data['filter_columns']); } return $this->returnHandler($retarr); } return $this->returnHandler(TRUE); //No records returned. }