/** * Function to set variables up before form is built * * @return void * @access public */ function preProcess() { $this->_isTemplate = (bool) CRM_Utils_Request::retrieve('template', 'Integer', $this); $this->_id = CRM_Utils_Request::retrieve('id', 'Integer', $this); if ($this->_isTemplate) { CRM_Utils_System::setTitle(ts('New Vacancy Template')); } if ($this->_id) { if ($this->_isTemplate = CRM_Core_DAO::getFieldValue('CRM_HRRecruitment_DAO_HRVacancy', $this->_id, 'is_template')) { CRM_Utils_System::setTitle(ts('Edit Vacancy Template')); } else { CRM_Utils_System::setTitle(ts('Edit Vacancy')); } } $this->assign('isTemplate', $this->_isTemplate); $session = CRM_Core_Session::singleton(); if ($this->_id) { $permission = CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($this->_id, array("administer Vacancy", "administer CiviCRM")); } else { $permission = CRM_Core_Permission::checkAnyPerm(array("administer Vacancy", "administer CiviCRM")); } if (!$permission) { $session->pushUserContext(CRM_Utils_System::url('civicrm')); CRM_Core_Error::statusBounce(ts('You do not have the necessary permission to perform this action.')); } CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.hrrecruitment', 'templates/CRM/HRRecruitment/Form/HRVacancy.js'); }
function preProcess() { // process url params if ($this->_vid = CRM_Utils_Request::retrieve('vid', 'Positive')) { $this->assign('vid', $this->_vid); } else { CRM_Core_Error::fatal(ts('There is no vacancy information provided')); } $this->_statusId = CRM_Utils_Request::retrieve('status_id', 'Positive'); $administerper = CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($this->_vid, array("administer Vacancy", "administer CiviCRM", "manage Applicants")); $evaluateper = CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($this->_vid, array("administer Vacancy", "administer CiviCRM", "evaluate Applicants")); $viewper = CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($this->_vid, array("view Applicants")); $this->assign('administerper', $administerper); $this->assign('evaluateper', $evaluateper); if (!($administerper || $evaluateper || $viewper)) { CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm')); CRM_Core_Error::statusBounce(ts('You do not have the necessary permission to perform this action.')); return; } }
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; }
function browse($action = NULL, $searchParams = array()) { $template = CRM_Utils_Request::retrieve('template', 'Positive', $this, FALSE, 0); $status = CRM_Utils_Request::retrieve('status', 'Positive', $this, FALSE, 0); if (empty($searchParams['status_id']) && $status) { $searchParams['status'] = $status; } if ($template) { $searchParams['is_template'] = 1; } else { $searchParams['is_template'] = 0; } $whereClause = $this->whereClause($searchParams); $this->_force = $this->_searchResult = NULL; $this->search(); $params = array(); $this->_force = CRM_Utils_Request::retrieve('force', 'Boolean', $this, FALSE); $this->search(); $query = "SELECT *\n FROM civicrm_hrvacancy\n {$whereClause}"; $dao = CRM_Core_DAO::executeQuery($query); $rows = array(); $vacancyStatuses = CRM_Core_OptionGroup::values('vacancy_status', FALSE); $location = CRM_Core_OptionGroup::values('hrjc_location', FALSE); while ($dao->fetch()) { $rows[$dao->id]['position'] = $dao->position; $rows[$dao->id]['location'] = $dao->location; $rows[$dao->id]['salary'] = $dao->salary; $rows[$dao->id]['start_date'] = $dao->start_date; $rows[$dao->id]['end_date'] = $dao->end_date; $hasPermission = CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($dao->id, array('administer CiviCRM', 'administer Vacancy', 'Edit Vacancy')); if (empty($template)) { $rows[$dao->id]['status'] = $vacancyStatuses[$dao->status_id]; } if ($hasPermission) { $actionLink = self::links(); if ($template) { $actionLink[CRM_Core_Action::UPDATE]['title'] = ts('Edit Vacancy Template'); $actionLink[CRM_Core_Action::COPY]['title'] = ts('Copy Vacancy Template'); $actionLink[CRM_Core_Action::DELETE]['title'] = ts('Delete Vacancy Template'); $actionLink[CRM_Core_Action::DELETE]['qs'] .= '&template=1'; } $rows[$dao->id]['action'] = CRM_Core_Action::formLink($actionLink, array(), array('id' => $dao->id)); } } $this->_isTemplate = (bool) CRM_Utils_Request::retrieve('template', 'Integer', $this); if (isset($this->_isTemplate)) { $this->assign('isTemplate', $this->_isTemplate); } $this->assign('rows', $rows); }
/** * Implementation of hook_civicrm_buildForm * * @params string $formName - the name of the form * object $form - reference to the form object * @return void */ function hrrecruitment_civicrm_buildForm($formName, &$form) { $caseTypes = CRM_Case_PseudoConstant::caseType('name'); $appValue = array_search('Application', $caseTypes); //To hide application case type from add assignment form if ($formName == 'CRM_Case_Form_Case') { if ($form->_action & CRM_Core_Action::DELETE || $form->_action & CRM_Core_Action::RENEW) { return; } $form->_caseType = CRM_Case_PseudoConstant::caseType(); unset($form->_caseType[$appValue]); $form->add('select', 'case_type_id', ts('Assignment Type'), $form->_caseType, TRUE); } //report change if ($formName == 'CRM_Report_Form_Case_Summary' || $formName == 'CRM_Report_Form_Case_Detail') { $statuses = CRM_Case_PseudoConstant::caseStatus('label', FALSE, 'AND filter = 1', TRUE); $form->case_statuses = $form->case_statuses + $statuses; } if ($formName == 'CRM_Activity_Form_Search') { $actId = CRM_Utils_Request::retrieve('type', 'Positive', $form); $form->_formValues['activity_type_id'][$actId] = $defaults['activity_type_id'][$actId] = 1; $form->setDefaults($defaults); $form->set('formValues', $form->_formValues); $form->preProcess(); } if ($formName == 'CRM_Case_Form_CaseView') { $params = array('id' => $form->_caseID); CRM_Core_DAO::commonRetrieve('CRM_Case_BAO_Case', $params, $values, array('status_id')); $statuses = CRM_Case_PseudoConstant::caseStatus('label', FALSE, 'AND (filter IN (0,1) OR filter IS NULL)', TRUE); $form->_caseDetails['case_status'] = $statuses[$values['case_status_id']]; $form->assign('caseDetails', $form->_caseDetails); } if ($formName == 'CRM_Case_Form_Activity' || $formName == 'CRM_Contact_Form_Task_Email') { $caseId = CRM_Utils_Request::retrieve('caseid', 'String', $form); $vacancyID = CRM_HRRecruitment_BAO_HRVacancy::getVacancyIDByCase($caseId); $caseId = explode(',', $caseId); $aType = CRM_Utils_Request::retrieve('atype', 'Positive') ? CRM_Utils_Request::retrieve('atype', 'Positive') : CRM_Utils_Array::value('activity_type_id', $form->_defaultValues); $evalID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Evaluation'); /* Check for proper permissions */ if ($vacancyID && $aType) { $administerper = CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($vacancyID, array("administer Vacancy", "administer CiviCRM", "manage Applicants")); $evaluateper = CRM_HRRecruitment_BAO_HRVacancyPermission::checkVacancyPermission($vacancyID, array("administer Vacancy", "administer CiviCRM", "evaluate Applicants")); if ($aType != $evalID && !$administerper || $aType == $evalID && !$evaluateper) { CRM_Core_Session::singleton()->pushUserContext(CRM_Utils_System::url('civicrm')); CRM_Core_Error::statusBounce(ts('You do not have the necessary permission to perform this action.')); return; } } /* TO set vacancy stages as case status for 'Change Case Status' activity */ if ($aType == CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Change Case Status')) { $allcase = TRUE; foreach ($caseId as $key => $val) { $caseType = CRM_Case_BAO_Case::getCaseType($val, 'id'); if ($caseType != $appValue) { $allcase = FALSE; } } if ($allcase) { $form->removeElement('case_status_id'); $form->_caseStatus = CRM_Case_PseudoConstant::caseStatus('label', TRUE, 'AND filter = 1', TRUE); $form->add('select', 'case_status_id', ts('Case Status'), $form->_caseStatus, TRUE); if ($caseStatusId = CRM_Utils_Request::retrieve('case_status_id', 'Positive', $form)) { $form->freeze('case_status_id'); $form->setDefaults(array('case_status_id' => $caseStatusId)); } } } /* build the evaluation profile on the evaluation activity */ //check for evaluation activity type if ($aType == CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Evaluation')) { //rename label and status name for Activity Status $activityStatus = $form->getElement('status_id'); $activityStatus->_options = array(); $scheduleStatus = CRM_Core_OptionGroup::getValue('activity_status', 'Scheduled'); $completeStatus = CRM_Core_OptionGroup::getValue('activity_status', 'Completed'); $activityStatus->addOption('Scheduled', $scheduleStatus); $activityStatus->addOption('Complete Evaluation', $completeStatus); $activityStatus->_label = 'Evaluation Status'; //retriev Case ID, Activity ID, Contact ID $caseID = CRM_Utils_Request::retrieve('caseid', 'Positive', $form); $activityID = CRM_Utils_Request::retrieve('id', 'Positive', $form); $contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $form); //get Evaluation profile ID $dao = new CRM_Core_DAO_UFJoin(); $dao->module = 'Vacancy'; $dao->entity_id = CRM_HRRecruitment_BAO_HRVacancy::getVacancyIDByCase($caseID); $dao->module_data = 'evaluation_profile'; $dao->find(TRUE); $profileID = $dao->uf_group_id; $profileFields = CRM_Core_BAO_UFGroup::getFields($profileID); $form->assign('fields', $profileFields); CRM_Core_BAO_UFGroup::setProfileDefaults($contactID, $profileFields, $def); $form->setDefaults($def); //auto populate assignee contact name with vacancy related permission if ($form->_action & CRM_Core_Action::ADD) { $evaluateContactID = CRM_HRRecruitment_BAO_HRVacancyPermission::getPermissionContact($vacancyID, 'evaluate Applicants'); $defaults['assignee_contact_id'] = $evaluateContactID; $form->setDefaults($defaults); } //build evaluaiton profile fields foreach ($profileFields as $profileFieldKey => $profileFieldVal) { CRM_Core_BAO_UFGroup::buildProfile($form, $profileFieldVal, CRM_Profile_Form::MODE_EDIT, $contactID, TRUE, FALSE, NULL); $form->_fields[$profileFieldKey] = $profileFields[$profileFieldKey]; $params[$profileFieldKey] = $profileFieldVal; } if (!empty($activityID)) { $params['entityID'] = $activityID; $form->addElement('hidden', 'evaluationProfile', $profileID); $defVal = CRM_Core_BAO_CustomValueTable::getValues($params); $form->setDefaults($defVal); } CRM_Core_Region::instance('case-activity-form')->add(array('template' => 'CRM/UF/Form/Block.tpl')); } //HR-373 -- set Completed status for Comment activity by default if ($aType == CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Comment')) { $defaults['status_id'] = CRM_Core_OptionGroup::getValue('activity_status', 'Completed'); $form->setDefaults($defaults); } } /* HR-401 Changes to Edit Evaluation and Application popups */ if ($formName == 'CRM_Custom_Form_Field' || $formName == 'CRM_HRRecruitment_Form_HRVacancy') { $uncolapseAppl = $uncolapseEval = array(); $applicationCG = civicrm_api3('CustomGroup', 'get', array('extends' => "Case", 'extends_entity_column_value' => $appValue, 'name' => 'Application')); foreach ($applicationCG['values'] as $k => $v) { $uncolapseAppl[] = $v['id']; } $evalCG = civicrm_api3('CustomGroup', 'get', array('extends' => "Activity", 'extends_entity_column_value' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Evaluation'))); foreach ($evalCG['values'] as $k => $v) { $uncolapseEval[$k] = $v['id']; } CRM_Core_Resources::singleton()->addSetting(array('profileSelectorSet' => array('application' => $uncolapseAppl, 'evaluation' => $uncolapseEval))); $gID = CRM_Utils_Array::value('gid', $_GET); /* HR-401 set default for 'Is field searchable' */ if (!empty($gID) && (in_array($gID, $uncolapseEval) || in_array($gID, $uncolapseAppl)) && $formName == 'CRM_Custom_Form_Field') { $default['is_searchable'] = 1; $form->setDefaults($default); } } }