=== modified file 'includes/form.inc'
--- includes/form.inc	2007-09-14 10:40:55 +0000
+++ includes/form.inc	2007-09-23 19:56:10 +0000
@@ -191,6 +191,7 @@ function form_set_cache($form_build_id, 
  * $form_state['values']['name'] = 'robo-user';
  * $form_state['values']['mail'] = 'robouser@example.com';
  * $form_state['values']['pass'] = 'password';
+ * $form_state['values']['op'] = t('Create new account');
  * drupal_execute('user_register', $form_state);
  *
  * // Create a new node
@@ -199,6 +200,7 @@ function form_set_cache($form_build_id, 
  * $form_state['values']['title'] = 'My node';
  * $form_state['values']['body'] = 'This is the body text!';
  * $form_state['values']['name'] = 'robo-user';
+ * $form_state['values']['op'] = t('Save');
  * drupal_execute('story_node_form', $form_state, $node);
  */
 function drupal_execute($form_id, &$form_state) {

=== modified file 'modules/comment/comment.module'
--- modules/comment/comment.module	2007-09-11 14:50:04 +0000
+++ modules/comment/comment.module	2007-09-23 20:45:50 +0000
@@ -837,7 +837,7 @@ function comment_save($edit) {
         if ($edit['uid'] === $user->uid) { // '===' because we want to modify anonymous users too
           $edit['name'] = $user->name;
         }
-        
+
         db_query("INSERT INTO {comments} (nid, pid, uid, subject, comment, format, hostname, timestamp, status, thread, name, mail, homepage) VALUES (%d, %d, %d, '%s', '%s', %d, '%s', %d, %d, '%s', '%s', '%s', '%s')", $edit['nid'], $edit['pid'], $edit['uid'], $edit['subject'], $edit['comment'], $edit['format'], ip_address(), $edit['timestamp'], $status, $thread, $edit['name'], $edit['mail'], $edit['homepage']);
         $edit['cid'] = db_last_insert_id('comments', 'cid');
 
@@ -1721,7 +1721,7 @@ function comment_form_validate($form, &$
     foreach (array('name', 'homepage', 'mail') as $field) {
       // Set cookie for 365 days.
       if (isset($form_state['values'][$field])) {
-        setcookie('comment_info_'. $field, $form_state['values'][$field], time() + 31536000);
+        setcookie('comment_info_'. $field, $form_state['values'][$field], time() + 31536000, '/');
       }
     }
   }

=== modified file 'modules/node/node.admin.inc'
--- modules/node/node.admin.inc	2007-09-12 18:29:31 +0000
+++ modules/node/node.admin.inc	2007-09-23 16:53:10 +0000
@@ -82,27 +82,33 @@ function node_node_operations() {
   $operations = array(
     'publish' => array(
       'label' => t('Publish'),
-      'callback' => 'node_operations_publish',
+      'callback' => 'node_operations_execute',
+      'callback arguments' => array('status = 1'),
     ),
     'unpublish' => array(
       'label' => t('Unpublish'),
-      'callback' => 'node_operations_unpublish',
+      'callback' => 'node_operations_execute',
+      'callback arguments' => array('status = 0'),
     ),
     'promote' => array(
       'label' => t('Promote to front page'),
-      'callback' => 'node_operations_promote',
+      'callback' => 'node_operations_execute',
+      'callback arguments' => array('status = 1, promote = 1'),
     ),
     'demote' => array(
       'label' => t('Demote from front page'),
-      'callback' => 'node_operations_demote',
+      'callback' => 'node_operations_execute',
+      'callback arguments' => array('promote = 0'),
     ),
     'sticky' => array(
       'label' => t('Make sticky'),
-      'callback' => 'node_operations_sticky',
+      'callback' => 'node_operations_execute',
+      'callback arguments' => array('status = 1, sticky = 1'),
     ),
     'unsticky' => array(
       'label' => t('Remove stickiness'),
-      'callback' => 'node_operations_unsticky',
+      'callback' => 'node_operations_execute',
+      'callback arguments' => array('sticky = 0'),
     ),
     'delete' => array(
       'label' => t('Delete'),
@@ -113,46 +119,14 @@ function node_node_operations() {
 }
 
 /**
- * Callback function for admin mass publishing nodes.
+ * Callback function for admin mass node operations.
  */
-function node_operations_publish($nodes) {
-  db_query('UPDATE {node} SET status = 1 WHERE nid IN(%s)', implode(',', $nodes));
+function node_operations_execute($nodes, $set) {
+  $placeholders = '%d'. str_repeat(', %d', count($nodes) - 1);
+  array_unshift($nodes, time());
+  db_query("UPDATE {node} SET $set, changed = %d WHERE nid IN (". $placeholders .')', $nodes);
 }
 
-/**
- * Callback function for admin mass unpublishing nodes.
- */
-function node_operations_unpublish($nodes) {
-  db_query('UPDATE {node} SET status = 0 WHERE nid IN(%s)', implode(',', $nodes));
-}
-
-/**
- * Callback function for admin mass promoting nodes.
- */
-function node_operations_promote($nodes) {
-  db_query('UPDATE {node} SET status = 1, promote = 1 WHERE nid IN(%s)', implode(',', $nodes));
-}
-
-/**
- * Callback function for admin mass demoting nodes.
- */
-function node_operations_demote($nodes) {
-  db_query('UPDATE {node} SET promote = 0 WHERE nid IN(%s)', implode(',', $nodes));
-}
-
-/**
- * Callback function for admin mass editing nodes to be sticky.
- */
-function node_operations_sticky($nodes) {
-  db_query('UPDATE {node} SET status = 1, sticky = 1 WHERE nid IN(%s)', implode(',', $nodes));
-}
-
-/**
- * Callback function for admin mass editing nodes to remove stickiness.
- */
-function node_operations_unsticky($nodes) {
-  db_query('UPDATE {node} SET sticky = 0 WHERE nid IN(%s)', implode(',', $nodes));
-}
 
 /**
  * List node administration filters that can be applied.

=== modified file 'modules/user/user.module'
--- modules/user/user.module	2007-09-19 18:00:52 +0000
+++ modules/user/user.module	2007-09-23 19:36:57 +0000
@@ -1744,9 +1744,9 @@ function user_filters() {
   if (count($roles)) {
     $filters['role'] = array(
       'title' => t('role'),
-      'where' => "ur.rid = %d",
+      'where' => 'ur$index.rid = %d',
       'options' => $roles,
-      'join' => '',
+      'join' => 'INNER JOIN {users_roles} ur$index ON ur$index.uid = u.uid',
     );
   }
 
@@ -1784,7 +1784,7 @@ function user_build_filter_query() {
 
   // Build query
   $where = $args = $join = array();
-  foreach ($_SESSION['user_overview_filter'] as $filter) {
+  foreach ($_SESSION['user_overview_filter'] as $index => $filter) {
     list($key, $value) = $filter;
     // This checks to see if this permission filter is an enabled permission for the authenticated role.
     // If so, then all users would be listed, and we can skip adding it to the filter query.
@@ -1796,9 +1796,9 @@ function user_build_filter_query() {
         continue;
       }
     }
-    $where[] = $filters[$key]['where'];
+    $where[] = str_replace('$index', $index, $filters[$key]['where']);
     $args[] = $value;
-    $join[] = $filters[$key]['join'];
+    $join[] = str_replace('$index', $index, $filters[$key]['join']);
   }
   $where = !empty($where) ? 'AND '. implode(' AND ', $where) : '';
   $join = !empty($join) ? ' '. implode(' ', array_unique($join)) : '';

