Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vijaycs85/export_roles_permissions/#2: Add the role check & create code ... #3

Merged
merged 1 commit into from
Dec 11, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions export_roles_permissions.admin.inc
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,23 @@ function export_roles_permissions_form_submit($form, &$form_state) {
$code = array();
$roles = user_roles(TRUE);

// TODO: Include code to create missing roles from the database if any.

$code[] = '/**';
$code[] = ' * Implements hook_install().';
$code[] = ' */';
$code[] = 'function ' . $form_state['values']['module'] . '_install() {';

foreach ($form_state['values']['roles'] as $rid) {
if ($rid != 0) {
$code[] = ' // Load role "' . $roles[$rid] . '".';
$code[] = ' $role = export_roles_permissions_user_role_load_by_name(\'' . $roles[$rid] . '\');';
$code[] = '';
$code[] = ' // Create the role if necessary.';
$code[] = ' if ($role === FALSE) {';
$code[] = ' $role = new stdClass();';
$code[] = ' $role->name = \'' . $roles[$rid] . '\';';
$code[] = ' export_roles_permissions_user_role_save($role);';
$code[] = ' }';
$code[] = '';
$code[] = ' // Add the permissions to the role.';
$code[] = ' $permissions = array(';

Expand Down
29 changes: 29 additions & 0 deletions export_roles_permissions.module
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,32 @@ function export_roles_permissions_grant_permissions($rid, $permissions) {
function export_roles_permissions_user_role_load_by_name($role_name) {
return db_fetch_object(db_query('SELECT * FROM {role} WHERE name = "%s"', array($role_name)));
}

/**
* Saves a user role to the database.
*
* This is a back port of the Drupal 7 user_role_load_by_name() function.
*
* @param object $role
* A role object to modify or add. If $role->rid is not specified, a new role
* will be created.
*
* @return int|FALSE
* Failure to write a record will return FALSE. Otherwise SAVED_NEW or
* SAVED_UPDATED is returned depending on the operation performed.
*/
function export_roles_permissions_user_role_save($role) {
if ($role->name) {
// Prevent leading and trailing spaces in role names.
$role->name = trim($role->name);
}

if (!empty($role->rid) && $role->name) {
$status = drupal_write_record('role', $role, 'rid');
}
else {
$status = drupal_write_record('role', $role);
}

return $status;
}