X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrush%2Fdrush%2Fcommands%2Fcore%2Frole.drush.inc;fp=vendor%2Fdrush%2Fdrush%2Fcommands%2Fcore%2Frole.drush.inc;h=fb4f9e9d166994b8b92fdc54330db6a3351c81ff;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/vendor/drush/drush/commands/core/role.drush.inc b/vendor/drush/drush/commands/core/role.drush.inc new file mode 100644 index 000000000..fb4f9e9d1 --- /dev/null +++ b/vendor/drush/drush/commands/core/role.drush.inc @@ -0,0 +1,314 @@ += 8) { + foreach ($command['examples'] as $key => $val) { + $newkey = str_replace(array('anonymous user', 'authenticated user'), array('anonymous', 'authenticated'), $key); + $command['examples'][$newkey] = $val; + unset($command['examples'][$key]); + } + } +} + +/** + * Implementation of hook_drush_command(). + */ +function role_drush_command() { + $items['role-create'] = array( + 'description' => 'Create a new role.', + 'examples' => array( + "drush role-create 'test role'" => "Create a new role 'test role' on D6 or D7; auto-assign the rid. On D8, 'test role' is the rid, and the human-readable name is set to 'Test role'.", + "drush role-create 'test role' 'Test role'" => "Create a new role with a machine name of 'test role', and a human-readable name of 'Test role'. On D6 and D7, behaves as the previous example." + ), + 'arguments' => array( + 'machine name' => 'The symbolic machine name for the role. Required.', + 'human-readable name' => 'A descriptive name for the role. Optional; Drupal 8 only. Ignored in D6 and D7.', + ), + 'aliases' => array('rcrt'), + ); + $items['role-delete'] = array( + 'description' => 'Delete a role.', + 'examples' => array( + "drush role-delete 'test role'" => "Delete the role 'test role'.", + ), + 'arguments' => array( + 'machine name' => 'The symbolic machine name for the role. Required. In D6 and D7, this may also be a numeric role ID.', + ), + 'aliases' => array('rdel'), + ); + $items['role-add-perm'] = array( + 'description' => 'Grant specified permission(s) to a role.', + 'examples' => array( + "drush role-add-perm 'anonymous user' 'post comments'" => 'Allow anon users to post comments.', + "drush role-add-perm 'anonymous user' \"'post comments','access content'\"" => 'Allow anon users to post comments and access content.', + "drush role-add-perm 'authenticated user' --module=node" => 'Select a permission from "node" permissions to add to logged in users.' + ), + 'arguments' => array( + 'role' => 'The role to modify. Required.', + 'permissions' => 'The list of permission to grant, delimited by commas. Required, unless the --module option is used.', + ), + 'required-arguments' => 1, + 'options' => array( + 'module' => 'Select the permission to modify from an interactive list of all permissions available in the specified module.', + ), + 'global-options' => array( + 'cache-clear', + ), + 'aliases' => array('rap'), + ); + + $items['role-remove-perm'] = array( + 'description' => 'Remove specified permission(s) from a role.', + 'examples' => array( + "drush role-remove-perm 'anonymous user' 'access content'" => 'Hide content from anon users.', + ), + 'arguments' => array( + 'role' => 'The role to modify.', + 'permissions' => 'The list of permission to grant, delimited by commas. Required, unless the --module option is used.', + ), + 'required-arguments' => 1, + 'options' => array( + 'module' => 'Select the permission to modify from an interactive list of all permissions available in the specified module.', + ), + 'global-options' => array( + 'cache-clear', + ), + 'aliases' => array('rmp'), + ); + + $items['role-list'] = array( + 'description' => 'Display a list of all roles defined on the system. If a role name is provided as an argument, then all of the permissions of that role will be listed. If a permission name is provided as an option, then all of the roles that have been granted that permission will be listed.', + 'examples' => array( + "drush role-list --filter='administer nodes'" => 'Display a list of roles that have the administer nodes permission assigned.', + "drush role-list 'anonymous user'" => 'Display all of the permissions assigned to the anon user role.' + ), + 'arguments' => array( + 'role' => 'The role to list. Optional; if specified, lists all permissions assigned to that role. If no role is specified, lists all of the roles available on the system.', + ), + 'options' => array( + 'filter' => 'Limits the list of roles to only those that have been assigned the specified permission. Optional; may not be specified if a role argument is provided.', + ), + 'outputformat' => array( + 'default' => 'table', + 'pipe-format' => 'list', + 'field-labels' => array('rid' => 'ID', 'label' => 'Role Label', 'perm' => "Permission"), + 'output-data-type' => 'format-table', + ), + 'aliases' => array('rls'), + ); + + return $items; +} + +/** + * Create the specified role + */ +function drush_role_create($rid, $role_name = '') { + $role = drush_role_get_class(); + $result = $role->role_create($rid, $role_name); + if ($result !== FALSE) { + drush_log(dt('Created "!role"', array('!role' => $rid)), LogLevel::SUCCESS); + } + return $result; +} + +/** + * Create the specified role + */ +function drush_role_delete($rid) { + $role = drush_role_get_class($rid); + if ($role === FALSE) { + return FALSE; + } + $result = $role->delete(); + if ($result !== FALSE) { + drush_log(dt('Deleted "!role"', array('!role' => $rid)), LogLevel::SUCCESS); + } + return $result; +} + +/** + * Add one or more permission(s) to the specified role. + * + * @param string $rid machine name for a role + * @param null|string $permissions machine names, delimited by commas. + * + * @return bool + */ +function drush_role_add_perm($rid, $permissions = NULL) { + if (is_null($permissions)) { + // Assume --module is used thus inject a FALSE + $perms = array(FALSE); + } + else { + $perms = _convert_csv_to_array($permissions); + } + + $added_perm = FALSE; + + foreach($perms as $perm) { + $result = drush_role_perm('add', $rid, $perm); + if ($result !== FALSE) { + $added_perm = TRUE; + drush_log(dt('Added "!perm" to "!role"', array('!perm' => $perm, '!role' => $result->name)), LogLevel::SUCCESS); + } + } + + if ($added_perm) { + drush_drupal_cache_clear_all(); + } + + return $result; +} + +/** + * Remove permission(s) from the specified role. + * + * @param string $rid machine name for a role + * @param null|string $permissions machine names, delimited by commas. + * + * @return bool + */ +function drush_role_remove_perm($rid, $permissions = NULL) { + if (is_null($permissions)) { + // Assume --module is used thus inject a FALSE + $perms = array(FALSE); + } + else { + $perms = _convert_csv_to_array($permissions); + } + + $removed_perm = FALSE; + + foreach($perms as $perm) { + $result = drush_role_perm('remove', $rid, $perm); + if ($result !== FALSE) { + $removed_perm = TRUE; + drush_log(dt('Removed "!perm" from "!role"', array('!perm' => $perm, '!role' => $result->name)), LogLevel::OK); + } + } + + if ($removed_perm) { + drush_drupal_cache_clear_all(); + } + + return $result; +} + +/** + * Implement permission add / remove operations. + * + * @param string $action 'add' | 'remove' + * @param string $rid + * @param string|null $permission + * + * @return bool|RoleBase + * + * @see drush_set_error() + */ +function drush_role_perm($action, $rid, $permission = NULL) { + $role = drush_role_get_class($rid); + if (!$role) { + return FALSE; + } + + // If a permission wasn't provided, but the module option is specified, + // provide a list of permissions provided by that module. + if (!$permission && $module = drush_get_option('module', FALSE)) { + drush_include_engine('drupal', 'environment'); + if (!drush_module_exists($module)) { + return drush_set_error('DRUSH_ROLE_ERROR', dt('!module not enabled!', array('!module' => $module))); + } + $module_perms = $role->getModulePerms($module); + if (empty($module_perms)) { + return drush_set_error('DRUSH_ROLE_NO_PERMISSIONS', dt('No permissions found for module !module', array('!module' => $module))); + } + $choice = drush_choice($module_perms, "Enter a number to choose which permission to $action."); + if ($choice === FALSE) { + return drush_user_abort(); + } + $permission = $module_perms[$choice]; + } + else { + $permissions = $role->getAllModulePerms(); + if (!in_array($permission, $permissions)) { + return drush_set_error(dt('Could not find the permission: !perm', array('!perm' => $permission))); + } + } + + $result = $role->{$action}($permission); + if ($result === FALSE) { + return FALSE; + } + return $role; +} + +/** + * Get core version specific Role handler class. + * + * @param string $role_name + * @return RoleBase + * + * @see drush_get_class(). + */ +function drush_role_get_class($role_name = DRUPAL_ANONYMOUS_RID) { + return drush_get_class('Drush\Role\Role', func_get_args()); +} + +/** + * Displays a list of roles + */ +function drush_role_list($rid = '') { + $result = array(); + if (empty($rid)) { + drush_hide_output_fields(array('perm')); + // Get options passed. + $perm = drush_get_option('filter'); + $roles = array(); + + // Get all roles - if $perm is empty user_roles retrieves all roles. + $roles = user_roles(FALSE, $perm); + if (empty($roles)) { + return drush_set_error('DRUSH_NO_ROLES', dt("No roles found.")); + } + foreach ($roles as $rid => $value) { + $role = drush_role_get_class($rid); + $result[$role->name] = array( + 'rid' => $rid, + 'label' => $role->name, + ); + } + } + else { + drush_hide_output_fields(array('rid', 'label')); + $role = drush_role_get_class($rid); + if (!$role) { + return FALSE; + } + $perms = $role->getPerms(); + foreach ($perms as $permission) { + $result[$permission] = array( + 'perm' => $permission); + } + } + return $result; +}