Index: premium.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/premium/premium.module,v
retrieving revision 1.7
diff -u -p -r1.7 premium.module
--- premium.module	21 Aug 2007 19:02:02 -0000	1.7
+++ premium.module	13 Jul 2008 01:30:22 -0000
@@ -42,18 +42,8 @@ function premium_nodeapi(&$node, $op, $t
     case 'insert':
     case 'delete':
     case 'update':
-      if ($node->nid) {
-        db_query('DELETE FROM {premium} WHERE nid = %d', $node->nid);
-        if ($op == 'delete') return;
-      }
-      if ($node->premium) {
-       $start_ts = $end_ts = 0 ;
-        _premium_offset($node, $start_ts, $end_ts);
-        db_query('INSERT INTO {premium} (nid, start_ts, end_ts) 
-          VALUES ( %d, %d, %d )', $node->nid, $start_ts, $end_ts);
-      }
+      _premium_set_premium($node, $node->premium);
       return;
-      
     case 'load':
       $ts = time();
       return array('premium' => (int) db_result(db_query(
@@ -84,6 +74,25 @@ function premium_nodeapi(&$node, $op, $t
 } 
 
 /**
+ * implementation of hook_node_operations().
+ */
+function premium_node_operations() {
+  $operations = array(
+    'premium' => array(
+      'label' => t('Make Premium'),
+      'callback' => '_premium_node_operations_premium',
+      'callback arguments' => array(TRUE),
+    ),
+    'unpremium' => array(
+      'label' => t('Remove Premium'),
+      'callback' => '_premium_node_operations_premium',
+      'callback arguments' => array(FALSE),
+    ),
+  ); 
+  return $operations;
+}
+
+/**
  * Implementation of hook_form_alter()
  * 
  * Add the Premium checkbox to the node editing options and default settings
@@ -201,6 +210,23 @@ function _premium_node($node) {
   return in_array('premium', variable_get("node_options_{$node->type}",array()));
 }
 
+function _premium_node_operations_premium($nids, $premium = 0) {
+  foreach($nids as $nid) {
+    $node = node_load($nid);
+    _premium_set_premium($node, $premium);
+  }
+}
+
+function _premium_set_premium($node, $premium = FALSE) {
+  db_query('DELETE FROM {premium} WHERE nid = %d', $node->nid);
+  if ($premium) {
+    $start_ts = $end_ts = 0 ;
+    _premium_offset($node, $start_ts, $end_ts);
+    db_query('INSERT INTO {premium} (nid, start_ts, end_ts) 
+              VALUES ( %d, %d, %d )', $node->nid, $start_ts, $end_ts);
+  }
+}
+
 /**
  * Reformat the message body with a premium content message
  */
