function setUp() { // Enable the module. parent::setUp('merci'); $perms = user_permission_get_modules(); $this->verbose('perms: ' . var_export($perms, TRUE)); // Create admin user. $this->admin_user = $this->drupalCreateUser(array('administer nodes', 'bypass node access', 'administer content types', 'access administration pages', 'administer site configuration', 'view revisions', 'revert revisions', 'administer MERCI', 'manage reservations')); // Login the admin user. $this->drupalLogin($this->admin_user); $settings = array('merci_default_reservation_status' => '2', 'merci_max_days_advance_reservation' => '0', 'merci_saturday_is_weekend' => '1', 'merci_sunday_is_weekend' => '1', 'merci_hours_monday' => '09:00-17:00', 'merci_hours_tuesday' => '09:00-17:00', 'merci_hours_wednesday' => '09:00-17:00', 'merci_hours_thursday' => '09:00-17:00', 'merci_hours_friday' => '09:00-17:00', 'merci_hours_saturday' => '09:00-17:00', 'merci_hours_sunday' => '09:00-17:00', 'merci_hours_admin' => '07:00-22:00', 'merci_closed_dates' => '12-25', 'merci_lock' => FALSE); $this->merciCreateConfig($settings); $settings = array('date_default_timezone' => 'America/Los_Angeles'); $this->drupalPost('admin/config/regional/settings', $settings, t('Save configuration')); $this->assertText(t("The configuration options have been saved.")); $settings = array('instance[widget][settings][input_format]' => 'Y-m-d H:i:s'); $this->drupalPost('admin/structure/types/manage/merci-reservation/fields/field_merci_date', $settings, t('Save settings')); $this->assertText(t("Saved Reservation configuration")); }
/** * Grant permissions to a specific role, if it exists. * * @param string $role * Role machine name. * @param string $permission * Permission machine name. * @param string $module * Module name. * * @return bool * TRUE if operation was successful, FALSE otherwise. */ public function grantPermission($role, $permission, $module = NULL) { $permission_rebuilt =& drupal_static(__CLASS__ . ':' . __FUNCTION__); if (!$permission_rebuilt) { // Make sure the list of available node types is up to date. node_types_rebuild(); // Reset hook_permission() cached information. module_implements('permission', FALSE, TRUE); $permission_rebuilt = TRUE; } $permissions = is_array($permission) ? $permission : array($permission); $role_object = user_role_load_by_name($role); if ($role_object) { // Use code from user_role_grant_permissions() in order to be able // to force medule field in special cases. $modules = user_permission_get_modules(); // Grant new permissions for the role. foreach ($permissions as $name) { $modules[$name] = isset($modules[$name]) ? $modules[$name] : $module; db_merge('role_permission')->key(array('rid' => $role_object->rid, 'permission' => $name))->fields(array('module' => $modules[$name]))->execute(); } // Clear the user access cache. drupal_static_reset('user_access'); drupal_static_reset('user_role_permissions'); return TRUE; } else { return FALSE; } }
/** * Implements Drupal\configuration\Config\Configuration::saveToActiveStore(). */ public function saveToActiveStore(ConfigIteratorSettings &$settings) { node_types_rebuild(); $exist = FALSE; $roles = static::get_roles(); $permissions_by_role = static::get_permissions(FALSE); $map = user_permission_get_modules(); $permission = $this->getData(); $perm = $permission['permission']; foreach ($roles as $role) { if (isset($map[$perm])) { $exist = TRUE; if (in_array($role, $permission['roles'])) { $permissions_by_role[$role][$perm] = TRUE; } else { $permissions_by_role[$role][$perm] = FALSE; } } } if (!$exist) { drupal_set_message(t('Configuration Management: Permission %permission does not exist and can not be set.', array('%permission' => $perm)), 'error'); } // Write the updated permissions. foreach ($roles as $rid => $role) { if (isset($permissions_by_role[$role])) { user_role_change_permissions($rid, $permissions_by_role[$role]); } } $settings->addInfo('imported', $this->getUniqueId()); }