Skip to content
Snippets Groups Projects
Commit 333866a7 authored by Tim Steiner's avatar Tim Steiner
Browse files

Merging trunk into testing.

git-svn-id: file:///tmp/wdn_thm_drupal/branches/drupal-7.x/testing@267 20a16fea-79d4-4915-8869-1ea9d5ebf173
parents 640f74bb 681383e4
No related branches found
No related tags found
No related merge requests found
......@@ -226,13 +226,8 @@ EOF;
'default' => $new_prefix,
// shared tables across all sites
'authmap' => $shared_prefix,
'filter' => $shared_prefix,
'filter_format' => $shared_prefix,
'role' => $shared_prefix,
'sessions' => $shared_prefix,
'users' => $shared_prefix,
'users_roles' => $shared_prefix,
'wysiwyg' => $shared_prefix,
);
......@@ -243,6 +238,9 @@ EOF;
foreach ($settings['databases']['value'] as &$database) {
$database['default']['prefix'] = $new_prefixes;
if (!isset($database['slave'])) {
continue;
}
foreach ($database['slave'] as &$slave_database) {
$slave_database['prefix'] = $new_prefixes;
}
......@@ -263,16 +261,12 @@ EOF;
module_enable(array('unl_cas'));
// Copy permissions from the parent site to the new site.
db_query("TRUNCATE ${new_prefix}role_permission")->execute();
db_query("TRUNCATE {$new_prefix}role_permission")->execute();
// I'm using REPLACE because I keep getting duplicate entry errors, despite inserting into what should be an empty table.
db_query("REPLACE INTO ${new_prefix}role_permission (rid, permission, module) SELECT rid, permission, module FROM ${shared_prefix}role_permission")->execute();
db_query("REPLACE INTO {$new_prefix}role_permission (rid, permission, module) SELECT rid, permission, module FROM {$shared_prefix}role_permission")->execute();
}
//$permissions = array_keys(module_invoke_all('permission'));
//print_r($permissions);
//user_role_grant_permissions(3, array($permissions));
$files_dir = $settings_dir . '/files';
chmod($files_dir, 0777);
......
......@@ -179,6 +179,69 @@ function unl_cas_import_user($username) {
return $user;
}
/**
* Implements hook_user_presave()
*
* On non-default sites, only allow users who are administrators on the default
* to be administrators. Also, automatically make users who are administrators
* on the default site an administrator on non-default sites.
*/
function unl_cas_user_presave(&$edit, $account, $category) {
if (conf_path() == 'sites/default') {
return;
}
if (isset($account->name)) {
$username = $account->name;
}
else {
$username = $edit['name'];
}
$local_admin_role_id = variable_get('user_admin_role');
if (_unl_cas_is_user_default_site_administrator($username)) {
$local_admin_role = user_role_load($local_admin_role_id);
$edit['roles'][$local_admin_role_id] = $local_admin_role->name;
}
else {
unset($edit['roles'][$local_admin_role_id]);
}
}
/**
* Implements hook_user_login()
*
* On non-default sites, if a user with the administrator role logs in, verify
* that they are still an admin in the default site. If not, remove them from
* the role.
*/
function unl_cas_user_login(&$edit, $account) {
if (conf_path() == 'sites/default') {
return;
}
if (!in_array(variable_get('user_admin_role'), array_keys($account->roles))) {
return;
}
$edit = array(
'roles' => $account->roles,
);
user_save($account, $edit);
}
function _unl_cas_is_user_default_site_administrator($username) {
require 'sites/default/settings.php';
$shared_prefix = $databases['default']['default']['prefix'];
$data = db_query("SELECT value FROM {$shared_prefix}variable WHERE name='user_admin_role'")->fetchCol();
$shared_admin_role_id = unserialize($data[0]);
$shared_admin_usernames = db_query("SELECT u.name FROM {$shared_prefix}users AS u JOIN {$shared_prefix}users_roles AS r ON u.uid = r.uid WHERE name=:name AND rid=:rid", array(':name' => $username, ':rid' => $shared_admin_role_id))->fetchCol();
return count($shared_admin_usernames) > 0;
}
function unl_cas_preprocess_user_picture(&$variables) {
//Default image: http://planetred.unl.edu/mod/profile/graphics/defaultmedium.gif
if ($variables['account']->uid == 0) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment