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 */