/** * Install default Appraisals Criteria entries */ public function upgrade_0004() { $criteria = array(1 => 'Below Expectations', 2 => 'Meets Expectations', 3 => 'Exceeds Expectations', 4 => 'Excellent', 5 => 'Lorem Ipsum'); foreach ($criteria as $value => $label) { $instance = new CRM_Appraisals_BAO_AppraisalCriteria(); $instance->value = $value; $criteriaFound = $instance->find(true); if ($criteriaFound) { continue; } $params = array('value' => $value, 'label' => $label, 'is_active' => 1); CRM_Appraisals_BAO_AppraisalCriteria::create($params); } return TRUE; }
/** * Function to process the form * * @access public * @return void */ public function postProcess() { if ($this->_action & CRM_Core_Action::DELETE) { // Check if selected item has highest value of all Appraisal Criteria: $result = civicrm_api3('AppraisalCriteria', 'getsingle', array('sequential' => 1, 'options' => array('sort' => "value DESC", 'limit' => 1))); if (empty($result['id']) || (int) $result['id'] !== (int) $this->_id) { CRM_Core_Session::setStatus(ts('You can delete only Appraisal Criteria which has highest Value.'), 'Error', 'error'); return false; } CRM_Appraisals_BAO_AppraisalCriteria::del($this->_id); CRM_Core_Session::setStatus(ts('Selected Appraisal Criteria has been deleted.'), 'Success', 'success'); } else { $params = $ids = array(); // store the submitted values in an array $params = $this->exportValues(); foreach (array('value', 'label') as $key => $index) { if (!array_key_exists($index, $params)) { $params[$index] = 0; } } if ($this->_action & CRM_Core_Action::UPDATE) { $params['id'] = $this->_id; } // Check for duplicates: $singleParams = array('sequential' => 1, 'value' => (int) $params['value'], 'options' => array('limit' => 1)); if (!empty($params['id'])) { $singleParams['id'] = array('!=' => (int) $params['id']); } $appraisalCriteriaSingle = civicrm_api3('AppraisalCriteria', 'get', $singleParams); if (!empty($appraisalCriteriaSingle['values'])) { CRM_Core_Session::setStatus(ts('The Appraisal Criteria with Grade value \'%1\' already exists.', array(1 => (int) $params['value'])), 'Error', 'error'); return false; } // Check if Grade is consecutive number: $singleParams = array('sequential' => 1, 'value' => (int) $params['value'] - 1, 'options' => array('limit' => 1)); if (!empty($params['id'])) { $singleParams['id'] = array('!=' => (int) $params['id']); } $appraisalCriteriaSingle = civicrm_api3('AppraisalCriteria', 'get', $singleParams); if (!isset($appraisalCriteriaSingle['id']) && (int) $params['value'] > 1) { CRM_Core_Session::setStatus(ts('The Appraisal Criteria should have consecutive Grade value.'), 'Error', 'error'); return false; } $appraisalCriteria = CRM_Appraisals_BAO_AppraisalCriteria::create($params); if ($this->_action & CRM_Core_Action::UPDATE) { CRM_Core_Session::setStatus(ts('The Appraisal Criteria with Grade value \'%1\' has been updated.', array(1 => $appraisalCriteria->value)), 'Success', 'success'); } else { CRM_Core_Session::setStatus(ts('The Appraisal Criteria with Grade value \'%1\' has been added.', array(1 => $appraisalCriteria->value)), 'Success', 'success'); } $url = CRM_Utils_System::url('civicrm/appraisal_criteria', 'reset=1&action=browse'); $session = CRM_Core_Session::singleton(); $session->replaceUserContext($url); } }