/** * Browse all absence types * * * @return void * @access public * @static */ function browse() { // get all absence types sorted by name $absenceType = array(); $dao = new CRM_HRAbsence_DAO_HRAbsenceType(); $dao->orderBy('name'); $dao->find(); while ($dao->fetch()) { $absenceType[$dao->id] = array(); $absenceType[$dao->id]['id'] = $dao->id; $absenceType[$dao->id]['title'] = $dao->title; $absenceType[$dao->id]['is_active'] = $dao->is_active; $absenceType[$dao->id]['allow_credits'] = $dao->allow_credits; $absenceType[$dao->id]['allow_debits'] = $dao->allow_debits; // form all action links $action = array_sum(array_keys($this->links())); if ($dao->is_active) { $action -= CRM_Core_Action::ENABLE; } else { $action -= CRM_Core_Action::DISABLE; } //if this absence type has its related activities/leaves then don't show DELETE action $isDelete = FALSE; if ($dao->debit_activity_type_id) { $result = civicrm_api3('Activity', 'get', array('activity_type_id' => $dao->debit_activity_type_id)); if (count($result['values'])) { $isDelete = TRUE; } } if (!$isDelete && $dao->credit_activity_type_id) { $result = civicrm_api3('Activity', 'get', array('activity_type_id' => $dao->credit_activity_type_id)); if (count($result['values'])) { $isDelete = TRUE; } } if ($isDelete) { $action -= CRM_Core_Action::DELETE; } $absenceType[$dao->id]['action'] = CRM_Core_Action::formLink(self::links(), $action, array('id' => $dao->id)); } $this->assign('rows', $absenceType); }
/** * returns the list of fields that can be exported * * @access public * return array * @static */ static function &export($prefix = false) { if (!self::$_export) { self::$_export = array(); $fields = self::fields(); foreach ($fields as $name => $field) { if (CRM_Utils_Array::value('export', $field)) { if ($prefix) { self::$_export['hrabsence_type'] =& $fields[$name]; } else { self::$_export[$name] =& $fields[$name]; } } } } return self::$_export; }
public static function del($absenceTypeId) { $absenceType = new CRM_HRAbsence_DAO_HRAbsenceType(); $absenceType->id = $absenceTypeId; $absenceType->find(TRUE); $absenceActivities = CRM_Core_OptionGroup::values('activity_type', FALSE, FALSE, FALSE, " AND grouping = 'Timesheet'", 'id'); if ($absenceType->debit_activity_type_id && ($id = CRM_Utils_Array::value($absenceType->debit_activity_type_id, $absenceActivities))) { CRM_Core_BAO_OptionValue::del($id); } if ($absenceType->credit_activity_type_id && ($id = CRM_Utils_Array::value($absenceType->credit_activity_type_id, $absenceActivities))) { CRM_Core_BAO_OptionValue::del($id); } $absenceType->delete(); }