=== 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:47:30 +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, stick = 1'),
     ),
     'unsticky' => array(
       'label' => t('Remove stickiness'),
-      'callback' => 'node_operations_unsticky',
+      'callback' => 'node_operations_execute',
+      'callback arguments' => array('stick = 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.

