Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 2
0
 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;
 }