/** * View a particular stage in a tab */ function viewStage() { // Data needed for contact list $contacts = CRM_HRRecruitment_BAO_HRVacancyStage::getCasesAtStage($this->_vid, $this->_statusId); $this->assign('contacts', $contacts); $this->ajaxResponse['tabCount'] = count($contacts); // Data needed for activity buttons/menu $xmlProcessor = new CRM_Case_XMLProcessor_Process(); $activities = $xmlProcessor->get('Application', 'ActivityTypes', TRUE); // Special activities we don't want in the action menu foreach (array('Open Case', 'Comment', 'Email', 'Evaluation', 'Change Case Status', 'Link Cases', 'Assign Case Role') as $remove) { $type = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', $remove); if ($type) { // Assign to the tpl as camelCase $this->assign(str_replace(' ', '', lcfirst($remove . 'Activity')), $type); // And remove from the list unset($activities[$type]); } } $this->assign('activities', $activities); // Data needed for status menu $this->assign('statusId', $this->_statusId); $caseStatus = array(); foreach (CRM_HRRecruitment_BAO_HRVacancyStage::caseStage($this->_vid) as $id => $stage) { $caseStatus[$stage['weight']] = $stage + array('id' => $id); } ksort($caseStatus); $this->assign('caseStatus', $caseStatus); }
static function getVacanciesByStatus() { $statuses = CRM_Core_OptionGroup::values('vacancy_status'); $vacancies = $statusesCount = array(); //initialize $statusesCount which hold the number of vacancies of status 'Draft' and 'Open' foreach (array('Open', 'Draft') as $statusName) { $value = array_search($statusName, $statuses); $statusesCount[$value] = 0; //Retrieve top four recently modified vacancies of either status 'Draft' or 'Open' $result = civicrm_api3('HRVacancy', 'get', array('is_template' => 0, 'status_id' => $value, 'sort' => 'created_date DESC', 'option.limit' => 4)); foreach ($result['values'] as $id => $vacancy) { $isDraft = FALSE; if (isset($statusesCount[$vacancy['status_id']])) { $statusesCount[$vacancy['status_id']] += 1; if ($vacancy['status_id'] == array_search('Draft', $statuses)) { $isDraft = TRUE; } $position = "<a class='hr-vacancy-title' href='" . CRM_Utils_System::url('civicrm/case/pipeline', "reset=1&vid={$id}") . "'>{$vacancy['position']}</a>"; //show the pencil icon to edit vacancy only if the user has appropriate permission if (CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($id, array('administer CiviCRM', 'administer Vacancy'))) { $position .= "<a class='crm-hover-button action-item' title='" . ts('Edit this vacancy') . "' href='" . CRM_Utils_System::url('civicrm/vacancy/add', "reset=1&id={$id}") . "'><span class='icon edit-icon'></span></a>"; } $vacancy['start_date'] = !empty($vacancy['start_date']) ? CRM_Utils_Date::customFormat($vacancy['start_date'], '%b %E, %Y') : NULL; $vacancy['end_date'] = !empty($vacancy['end_date']) ? CRM_Utils_Date::customFormat($vacancy['end_date'], '%b %E, %Y') : NULL; $vacancyEntry[$vacancy['status_id']]['vacancies'][$id] = array('date' => CRM_Utils_Date::customFormat($vacancy['start_date'], '%b %E, %Y') . ' - ' . CRM_Utils_Date::customFormat($vacancy['end_date'], '%b %E, %Y'), 'position' => $position, 'location' => CRM_Utils_Array::value('location', $vacancy), 'date' => "{$vacancy['start_date']} - {$vacancy['end_date']}"); //assign stages by weight $stages = CRM_HRRecruitment_BAO_HRVacancyStage::caseStage($id); foreach ($stages as $stage) { $vacancyEntry[$vacancy['status_id']]['vacancies'][$id]['stages'][$stage['weight']] = array('stage_id' => $stage['id'], 'title' => $stage['title'], 'count' => $stage['count']); } ksort($vacancyEntry[$vacancy['status_id']]['vacancies'][$id]['stages']); $vacancies[$vacancy['status_id']] = array('title' => $statuses[$vacancy['status_id']]) + $vacancyEntry; } } } //append $statusCount result to vacancy's position as title foreach ($statusesCount as $status => $count) { if ($count) { $vacancies[$status]['title'] .= " ({$count})"; } else { $vacancies += array($status => array('title' => "{$statuses[$status]} ({$count})")); } } return $vacancies; }