Index: role_weights.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/role_weights/role_weights.module,v
retrieving revision 1.20
diff -u -r1.20 role_weights.module
--- role_weights.module	28 Jan 2009 17:03:23 -0000	1.20
+++ role_weights.module	31 Mar 2009 20:33:08 -0000
@@ -6,6 +6,14 @@
  * Allows users to specify weights for user roles.
  */
 
+function role_weights_theme($existing, $type, $theme, $path) {
+  return array(
+    'role_weights_admin_new_role' => array(
+      'arguments' => array('form' => NULL),
+    ),
+  );
+}
+ 
 /**
  * Implementation of hook_form_alter().
  *
@@ -17,10 +25,11 @@
  * role forms, and also act on role deletion (deleting
  * role_weights).
  */
-function role_weights_form_alter($form_id, &$form) {
+function role_weights_form_alter(&$form, &$form_state, $form_id) {
+
   // Alter the 'user_admin_new_role' form to retheme.
   if ($form_id == 'user_admin_new_role') {
-    $form['#pre_render'][] = 'role_weights_admin_new_role_set_theme';
+    $form['#theme'] = 'role_weights_admin_new_role';
   }
   else if ($form_id == 'user_admin_role') {
     $rid = arg(4);
@@ -67,7 +76,7 @@
     // appear below the buttons.
     $form['submit']['#weight'] = 9;
     $form['delete']['#weight'] = 10;
-    $form['#submit']['role_weights_admin_role_submit'] = array();
+    $form['#submit'][] = 'role_weights_admin_role_submit';
   }
   else if ($form_id == 'user_admin_perm' && variable_get('role_weights_reorder_forms', FALSE)) {
     // For each role, fetch the weight, and add as a #weight on the row names and checkboxes
@@ -79,22 +88,12 @@
       }	
     }
     // Resort according to the adjusted weights
-    uasort($form['checkboxes'], "_element_sort");
-    uasort($form['role_names'], "_element_sort");
+    uasort($form['checkboxes'], 'element_sort');
+    uasort($form['role_names'], 'element_sort');
   }
 }
 
 /**
- * Set the theme function before rendering. Called by a #pre_render item.
- *
- * This needs to be done in pre_render because drupal_get_form uses a
- * $form_id .'_theme' function if present for the #theme value.
- */
-function role_weights_admin_new_role_set_theme($form_id, &$form) {
-  $form['#theme'] = 'role_weights_admin_new_role';
-}
-
-/**
  * Theme the 'user_admin_new_role' form.
  *
  * Based on theme_user_admin_new_role(), this version
@@ -113,7 +112,7 @@
   }
 
   foreach ($user_roles as $rid => $name) {
-    $edit_permissions = l(t('edit permissions'), 'admin/user/access/'. $rid);
+    $edit_permissions = l(t('edit permissions'), 'admin/user/permissions/'. $rid);
     
     // Drupal core redirects if the rid is DRUPAL_ANONYMOUS_RID or DRUPAL_AUTHENTICATED_RID.
     // We prevent this by shifting the rid.
@@ -128,17 +127,17 @@
 /**
  * Submission from role_weights_admin form.
  */
-function role_weights_admin_role_submit($form_id, $form_values) {
+function role_weights_admin_role_submit($form_id, &$form_state) {
   $id = arg(4);
   _role_weights_shift_rid($id, FALSE);
-  
-  switch ($form_values['op']) {
+
+  switch ($form_state['values']['op']) {
     case t('Save'):
       // Handle the role name update previously done in user_admin_role().
-      db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $form_values['name'], $id);
+      db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $form_state['values']['name'], $id);
 
       // Now set weights.
-      _role_weights_set_weight($id, $form_values['weight']);
+      _role_weights_set_weight($id, $form_state['values']['weight']);
       drupal_set_message(t('The changes have been saved.'));
       break;
     case t('Delete'):
@@ -164,7 +163,9 @@
       drupal_set_message(t('The role has been deleted.'));
       break;
   }
-  return 'admin/user/roles';
+  
+  $form_state['redirect'] = 'admin/user/roles';
+  $form_state['rid'] = $id;
 }
 
 /**
@@ -240,7 +241,7 @@
  * Sets role weight for a role based on form input.
  */
 function _role_weights_set_weight($rid, $weight) {
-  $exists = db_num_rows(db_query('SELECT * FROM {role_weights} WHERE rid = %d', $rid));
+  $exists = db_result(db_query('SELECT COUNT(*) FROM {role_weights} WHERE rid = %d', $rid));
   if ($exists) {
     db_query('UPDATE {role_weights} SET weight=%d WHERE rid=%d', $weight, $rid);
   }
@@ -290,54 +291,6 @@
 }
 
 /**
- * Implementation of hook_views_tables()
- */
-function role_weights_views_tables() {
-  $tables['users_roles_by_role'] = array(
-    'name' => 'users_roles',
-    'join' => array(
-      'left' => array(
-        'table' => 'node',
-        'field' => 'uid',
-      ),
-      'right' => array(
-        'field' => 'uid',
-      ),
-    ),
-  );
-
-  $tables['role_weights'] = array(
-    'name' => 'role_weights',
-    'join' => array(
-      'left' => array(
-        'table' => 'users_roles_by_role',
-        'field' => 'rid',
-      ),
-      'right' => array(
-        'field' => 'rid',
-      ),
-    ),
-    'fields' => array(
-      'weight' => array(
-        'name' => 'Role Weights: role weight',
-        'sortable' => TRUE,
-        'weight' => 'weight',
-        'addlfields' => array('weight'),
-      ),
-    ),
-    'sorts' => array(
-      'weight' => array(
-        'name' => 'Role Weights: role weight',
-        'field' => array('weight'),
-        'help' => t("Order nodes by author's role weight"),
-      ),
-    ),
-  );
-
-  return $tables;
-}
-
-/**
  * Token support
  */
 function role_weights_token_values($type, $object = NULL, $options = array()) {
