? 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 +}