Пример #1
0
 /**
  * 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.
 }