? permissions_api.patch
Index: permissions_api.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/permissions_api/permissions_api.module,v
retrieving revision 1.5.2.2
diff -u -p -r1.5.2.2 permissions_api.module
--- permissions_api.module      27 Apr 2009 16:27:04 -0000      1.5.2.2
+++ permissions_api.module      20 May 2009 03:49:56 -0000
@@ -16,12 +16,12 @@ function permissions_grant_permissions($
   if (count($new_permissions) > 0) {
     // Fetch the permissions string for the given role id
     $permissions = permissions_get_permissions_for_role($role->rid);
-
+
     // Check to see if there are existing permissions
-    if(count($permissions) > 0) {
+    if (count($permissions) > 0) {
       // Add the new permissions if the role doesn't already have the permission
-      foreach($new_permissions as $permission) {
-        if(! in_array($permission, $permissions)) {
+      foreach ($new_permissions as $permission) {
+        if (!in_array($permission, $permissions)) {
           $permissions[] = trim($permission);
         }
       }
@@ -30,9 +30,9 @@ function permissions_grant_permissions($
       $updated_permissions = join(', ', $permissions);
       db_query("UPDATE {permission} SET perm = '%s' WHERE rid = %d", $updated_permissions, $role->rid);
     }
-    else{
+    else {
       // No permissions have been set for this role, so we need to insert some
-      foreach($new_permissions as $permission){
+      foreach ($new_permissions as $permission) {
         $permissions[] = trim($permission);
       }
       // rebuild the permission string
@@ -47,20 +47,18 @@ function permissions_grant_permissions($
  * Helper function to revoke permissions from a role.
  */
 function permissions_revoke_permissions($role_name, $new_permissions) {
-  $permissions = array();
   $updated_permissions = '';
   $role = permissions_get_role($role_name);
   if (is_array($new_permissions)) {
-    $permissions = $permissions = permissions_get_permissions_for_role($role->rid);
+    $permissions = permissions_get_permissions_for_role($role->name);
     if (count($permissions) > 0) {
       // Unset the permission from the array
-      foreach($new_permissions as $permission){
+      foreach ($new_permissions as $permission) {
         $index = array_search($permission, $permissions);
-        if($index){
-          unset($permissions[$index]);
+        if ($index >= 0) {
+          unset($permissions[$index]);
         }
       }
-
       // rebuild the permission string
       $updated_permissions = join(', ', $permissions);
       db_query("UPDATE {permission} SET perm = '%s' WHERE rid = %d", $updated_permissions, $role->rid);
@@ -76,31 +74,31 @@ function permissions_grant_all_permissio
   $updated_permissions = '';
   $all_permissions = array();
   $role = permissions_get_role($role_name);
-  if($role->rid > 0){
+  if ($role->rid > 0) {
     // Build a list of all the permissions defined by hook_perm
     foreach (module_list(FALSE, FALSE, TRUE) as $module) {
       if ($permissions = module_invoke($module, 'perm')) {
         asort($permissions);
         foreach ($permissions as $perm) {
-         $all_permissions[] = $perm;
-        }
+          $all_permissions[] = $perm;
+        }
       }
     }
   }
-
+
   // Build the permissions string
   $updated_permissions = join(', ', $all_permissions);
-
+
   $perm_string = db_result(db_query("SELECT perm FROM {permission} WHERE rid = %d", $role->rid));
-
+
   // Check to see if there are existing permissions
   if (strlen($perm_string) > 0) {
     db_query("UPDATE {permission} SET perm = '%s' WHERE rid = %d", $updated_permissions, $role->rid);
   }
-  else{
+  else {
     db_query("INSERT INTO {permission} (rid, perm, tid) VALUES(%d,'%s',%d)",$role->rid,$updated_permissions,0);
   }
-
+
   return;
 }

@@ -112,22 +110,22 @@ function permissions_grant_all_permissio
   $permissions = array();
   $module_permissions = array();
   $role = permissions_get_role($role_name);
-  if($role->rid > 0){
+  if ($role->rid > 0) {
     // Fetch the permissions string for the given role id
     $permissions = permissions_get_permissions_for_role($role->rid);
-
+
     // Check to see if there are existing permissions
     if (count($permissions) > 0) {
       // Build a list of all the permissions defined by hook_perm
       if ($module_permissions = module_invoke($module, 'perm')) {
         asort($module_permissions);
         foreach ($module_permissions as $perm) {
-          if(! in_array($perm, $permissions)) {
+          if (!in_array($perm, $permissions)) {
             $permissions[] = $perm;
-          }
+          }
         }
       }
-
+
       // Build the permissions string
       $updated_permissions = join(', ', $permissions);
       db_query("UPDATE {permission} SET perm = '%s' WHERE rid = %d", $updated_permissions, $role->rid);
@@ -137,16 +135,16 @@ function permissions_grant_all_permissio
       if ($module_permissions = module_invoke($module, 'perm')) {
         asort($module_permissions);
         foreach ($module_permissions as $perm) {
-          $permissions[] = $perm;
+          $permissions[] = $perm;
         }
       }
-
+
       // Build the permissions string
       $updated_permissions = join(', ', $permissions);
       db_query("INSERT INTO {permission} (rid, perm, tid) VALUES(%d,'%s',%d)",$role->rid,$updated_permissions,0);
     }
   }
-
+
   return;
 }

@@ -155,10 +153,10 @@ function permissions_revoke_all_permissi
   $permissions = array();
   $module_permissions = array();
   $role = permissions_get_role($role_name);
-  if($role->rid > 0){
+  if ($role->rid > 0) {
     // Fetch the permissions string for the given role id
     $permissions = permissions_get_permissions_for_role($role->rid);
-
+
     // Check to see if there are existing permissions
     if (count($permissions) > 0) {
       // Build a list of all the permissions defined by hook_perm
@@ -166,12 +164,12 @@ function permissions_revoke_all_permissi
         asort($module_permissions);
         foreach ($module_permissions as $perm) {
           $index = array_search($perm, $permissions);
-          if($index){
-            unset($permissions[$index]);
-          }
+          if ($index >= 0) {
+            unset($permissions[$index]);
+          }
         }
       }
-
+
       // Build the permissions string
       $updated_permissions = join(', ', $permissions);
       db_query("UPDATE {permission} SET perm = '%s' WHERE rid = %d", $updated_permissions, $role->rid);
@@ -183,19 +181,19 @@ function permissions_revoke_all_permissi
 /**
  * returns an array of permissions for a given role
  */
-function permissions_get_permissions_for_role($role_name){
+function permissions_get_permissions_for_role($role_name) {
   $role = permissions_get_role($role_name);
   $permissions = array();
-  if($role->rid > 0){
+  if ($role->rid > 0) {
     $perm_string = db_result(db_query("SELECT perm FROM {permission} WHERE rid = %d", $role->rid));
     if (strlen($perm_string) > 0) {
-      $permissions = explode(',', $perm_string);
-      foreach($permissions as $index => $perm){
-        $permissions[$index] = trim($perm);
+      $perm_array = explode(',', $perm_string);
+      foreach ($perm_array as $perm) {
+        $permissions[] = trim($perm);
       }
     }
   }
-  return $permissions;
+  return $permissions;
 }

 /**
@@ -203,8 +201,7 @@ function permissions_get_permissions_for
  */
 function permissions_get_role($name) {
   //$rid = db_result(db_query('SELECT r.rid FROM {role} r WHERE r.name = \'some custom role\''));
-  $role = db_fetch_object(db_query("SELECT * FROM {role} r WHERE r.name = '%s'", $name));
-  return $role;
+  return db_fetch_object(db_query("SELECT * FROM {role} WHERE name = '%s'", $name));
 }

 /**
@@ -213,4 +210,4 @@ function permissions_get_role($name) {
 function permissions_create_role($name) {
   db_query("INSERT INTO {role} VALUES('', '%s')", $name);
   return permissions_get_role($name);
-}
\ No newline at end of file
+}
