Version 1
[yaffs-website] / vendor / drush / drush / lib / Drush / Role / Role6.php
1 <?php
2
3 namespace Drush\Role;
4
5 class Role6 extends RoleBase {
6   public $perms = array();
7
8   public function getPerms() {
9     if (empty($this->perms)) {
10       $perms = db_result(db_query("SELECT perm FROM {permission} pm LEFT JOIN {role} r ON r.rid = pm.rid WHERE r.rid = '%d'", $this->rid));
11       $role_perms = explode(", ", $perms);
12       $this->perms = array_filter($role_perms);
13     }
14     return $this->perms;
15   }
16
17   public function getModulePerms($module) {
18     return module_invoke($module, 'perm');
19   }
20
21   public function role_create($role_machine_name, $role_human_readable_name = '') {
22     $this->_admin_user_role_op($role_machine_name, t('Add role'));
23     return TRUE;
24   }
25
26   public function delete() {
27     $this->_admin_user_role_op($this->rid, t('Delete role'));
28   }
29
30   function _admin_user_role_op($role_machine_name, $op) {
31     // c.f. http://drupal.org/node/283261
32     require_once(drupal_get_path('module', 'user') . "/user.admin.inc");
33
34     $form_id = "user_admin_new_role";
35     $form_values = array();
36     $form_values["name"] = $role_machine_name;
37     $form_values["op"] = $op;
38     $form_state = array();
39     $form_state["values"] = $form_values;
40
41     drupal_execute($form_id, $form_state);
42   }
43
44   public function grant_permissions($perms_to_add) {
45     $perms = $this->getPerms();
46     $this->perms = array_unique(array_merge($this->perms, $perms_to_add));
47     $this->updatePerms();
48   }
49
50   public function revoke_permissions($perms_to_remove) {
51     $perms = $this->getPerms();
52     $this->perms = array_diff($this->perms, $perms_to_remove);
53     $this->updatePerms();
54   }
55
56   function updatePerms() {
57     $new_perms = implode(", ", $this->perms);
58     drush_op('db_query', "UPDATE {permission} SET perm = '%s' WHERE rid= %d", $new_perms, $this->rid);
59   }
60 }