/** * Do general cleanup of module permissions. */ public function cleanupPermissions() { $module_files = CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles(); if ($this->userPermissionClass->isModulePermissionSupported()) { // Can store permissions -- so do it! $this->userPermissionClass->upgradePermissions(CRM_Core_Permission::basicPermissions()); } else { // Cannot store permissions -- warn if any modules require them $modules_with_perms = array(); foreach ($module_files as $module_file) { $perms = $this->userPermissionClass->getModulePermissions($module_file['prefix']); if (!empty($perms)) { $modules_with_perms[] = $module_file['prefix']; } } if (!empty($modules_with_perms)) { CRM_Core_Session::setStatus(ts('Some modules define permissions, but the CMS cannot store them: %1', array(1 => implode(', ', $modules_with_perms))), ts('Permission Error'), 'error'); } } }
/** * @dataProvider translateData * @param string $input the name of a permission which should be translated * @param string $expected the name of an actual permission (based on translation matrix for "runtime") */ public function testTranslate($input, $expected) { $perm = new CRM_Core_Permission_Base(); $actual = $perm->translatePermission($input, "myruntime", array('universal name' => 'local name', 'universal name2' => 'local name2', 'gunk' => 'gunky')); $this->assertEquals($expected, $actual); }
/** * Function to build the form * * @return void * @access public */ function buildQuickForm() { $attributes = CRM_Core_DAO::getAttribute('CRM_HRRecruitment_DAO_HRVacancy'); $this->add('text', 'position', ts('Job Position'), $attributes['position'], TRUE); $this->addSelect('location', array('label' => ts('Location'), 'entity' => 'HRJobDetails', 'field' => 'location')); $this->add('text', 'salary', ts('Salary'), $attributes['salary']); $this->addWysiwyg('description', ts('Description'), array('rows' => 2, 'cols' => 40)); $this->addWysiwyg('benefits', ts('Benefits'), array('rows' => 2, 'cols' => 40)); $this->addWysiwyg('requirements', ts('Requirements'), array('rows' => 2, 'cols' => 40)); $this->addDateTime('start_date', ts('Start Date'), FALSE, array('formatType' => 'activityDateTime')); $this->addDateTime('end_date', ts('End Date'), FALSE, array('formatType' => 'activityDateTime')); $include =& $this->addElement('advmultiselect', 'stages', '', CRM_Core_OptionGroup::values('case_status', FALSE, FALSE, FALSE, " AND grouping = 'Vacancy'"), array('size' => 5, 'style' => 'width:150px', 'class' => 'advmultiselect')); $include->setButtonAttributes('add', array('value' => ts('Enable >>'))); $include->setButtonAttributes('remove', array('value' => ts('<< Disable'))); $templates = $vacancyPermissions = array(); if (!$this->_isTemplate) { $this->addSelect('status_id', array(), TRUE); $result = civicrm_api3('HRVacancy', 'get', array('is_template' => 1, 'return' => 'position')); foreach ($result['values'] as $id => $vacancy) { $templates[$id] = $vacancy['position']; } //hide 'From Template' on edit screen if (empty($this->_id)) { $this->add('select', 'template_id', ts('From Template'), array('' => ts('- select -')) + $templates, FALSE, array('class' => 'crm-select2 huge')); } } $caseTypes = CRM_Case_PseudoConstant::caseType('name'); $application = array_search('Application', $caseTypes); $evalID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Evaluation'); $evalEntity[] = array('entity_name' => 'activity_1', 'entity_type' => 'ActivityModel', 'entity_sub_type' => "{$evalID}"); $appEntities = array(); $appEntities[] = array('entity_name' => 'contact_1', 'entity_type' => 'IndividualModel'); $appEntities[] = array('entity_name' => 'case_1', 'entity_type' => 'CaseModel', 'entity_sub_type' => "{$application}"); $this->addProfileSelector('application_profile', '', array('Individual', 'Contact', 'Case'), array('CaseType' => array($application)), $appEntities); $this->addProfileSelector('evaluation_profile', '', array('Activity'), array('ActivityType' => array($evalID)), $evalEntity); $permissionClass = new CRM_Core_Permission_Base(); $permissions = $permissionClass->getAllModulePermissions(); foreach (array('view Applicants', 'manage Applicants', 'evaluate Applicants', 'administer Vacancy') as $permission) { $explodedPerms = explode(':', $permissions[$permission]); $vacancyPermissions[$permission] = array_pop($explodedPerms); } $rowCount = 5; for ($rowNumber = 1; $rowNumber <= $rowCount; $rowNumber++) { $this->add('select', "permission[{$rowNumber}]", '', array('' => ts('- select -')) + $vacancyPermissions, FALSE, array('class' => 'crm-select2 huge')); $this->addEntityRef("permission_contact_id[{$rowNumber}]", NULL, array('api' => array('params' => array('contact_type' => 'Individual')))); } $this->assign('rowCount', $rowCount); $this->assign('showPermissionRow', 1); $this->addButtons(array(array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE), array('type' => 'cancel', 'name' => ts('Cancel')))); $session = CRM_Core_Session::singleton(); if ($this->_isTemplate) { $this->_cancelURL = CRM_Utils_System::url('civicrm/vacancy/find', 'reset=1&template=1'); } else { $this->_cancelURL = CRM_Utils_System::url('civicrm/vacancy/find', 'reset=1'); } $this->addFormRule(array('CRM_HRRecruitment_Form_HRVacancy', 'formRule')); $session->replaceUserContext($this->_cancelURL); }