Пример #1
0
 /**
  * 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');
         }
     }
 }
Пример #2
0
 /**
  * @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);
 }
Пример #3
0
 /**
  * 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);
 }