diff --git a/profiles/unl_profile/unl_profile.install b/profiles/unl_profile/unl_profile.install index 10ad169a2a7a6f9537f7bc42ea025eb1b8054acf..4d67bfa13405d6603397026c23c11f05b49d9506 100644 --- a/profiles/unl_profile/unl_profile.install +++ b/profiles/unl_profile/unl_profile.install @@ -195,6 +195,12 @@ EOF; // Update the settings file to use shared database tables (unless this is the default site) if (conf_path() != 'sites/default') { + + // Only enable CAS on subsites until we get some sort of bootstrap setup. + module_enable(array('unl_cas')); + + + // Update the db config to include shared tables. $parent_site_database_settings = unl_profile_get_default_site_db_settings(); $new_prefix = $GLOBALS['databases']['default']['default']['prefix']; @@ -235,9 +241,11 @@ EOF; $writable = drupal_verify_install_file($settings_file, FILE_READABLE|FILE_WRITABLE); drupal_rewrite_settings($settings); - - // Only enable CAS on subsites until we get some sort of bootstrap setup. - module_enable(array('unl_cas')); + + // Make drupal realize that we've changed some db settings. + Database::addConnectionInfo('new_site', 'default', $settings['databases']['value']['default']['default']); + db_set_active('new_site'); + drupal_static_reset(); // Copy the anonymous/authenticated user roles' permissions for text formats from the default site. db_query( @@ -263,6 +271,7 @@ EOF; // Assign most permissions to the Site Admin role. $all_permissions = module_invoke_all('permission'); + $all_filter_permissions = array_keys(module_invoke('filter', 'permission')); unset($all_permissions['unl site creation']); unset($all_permissions['unl grant all permissions']); unset($all_permissions['unl administer administrator permissions']); @@ -271,10 +280,25 @@ EOF; unset($all_permissions['administer software updates']); unset($all_permissions['administer imce']); unset($all_permissions['administer filters']); - foreach (array_keys(module_invoke('filter', 'permission')) as $permission) { + foreach ($all_filter_permissions as $permission) { unset($all_permissions[$permission]); } user_role_grant_permissions($site_admin_role->rid, array_keys($all_permissions)); + + // Text Format/WYSIWYG specific permissions. + db_query("DELETE FROM {$new_prefix}role_permission WHERE permission LIKE :permission", array('permission' => 'use text format%')); + + $wysiwyg_permissions = array(); + $data = db_query("SELECT DISTINCT permission FROM {$shared_prefix}role_permission WHERE permission LIKE :permission", array('permission' => 'use text format%')); + foreach ($data as $row) { + if (!in_array($row->permission, $all_filter_permissions)) { + continue; + } + $wysiwyg_permissions[] = $row->permission; + } + user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, $wysiwyg_permissions); + user_role_grant_permissions(variable_get('user_admin_role'), $wysiwyg_permissions); + user_role_grant_permissions($site_admin_role->rid, $wysiwyg_permissions); // If a site admin has been specified, add that user and add them to the Site Admin role. $data = db_query(