--- override_node_options.module.original	2007-01-09 16:29:49.000000000 -0600
+++ override_node_options.module.patched	2007-09-17 17:01:08.000000000 -0500
@@ -11,7 +11,7 @@
  * Implementation of hook_perm().
  */
 function override_node_options_perm() {
-  return array('override node publishing options');
+  return array('override node publishing status','override node publishing promote','override node publishing sticky','override node publishing revision');
 }
 
 /**
@@ -21,13 +21,23 @@ function override_node_options_form_alte
   // Allow users with 'override node publishing options' to change node
   // options. Taken from node_form_array().
   // TODO: Once in core, remove adminster nodes check.
-  if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id && user_access('override node publishing options') && !user_access('administer nodes')) {
-    $node = $form['#node'];
-    $form['options'] = array('#type' => 'fieldset', '#title' => t('Publishing options'), '#collapsible' => TRUE, '#collapsed' => TRUE, '#weight' => 25);
-    $form['options']['override_publishing_status']   = array('#type' => 'checkbox', '#title' => t('Published'), '#default_value' => $node->status);
-    $form['options']['override_publishing_promote']  = array('#type' => 'checkbox', '#title' => t('Promoted to front page'), '#default_value' => $node->promote);
-    $form['options']['override_publishing_sticky']   = array('#type' => 'checkbox', '#title' => t('Sticky at top of lists'), '#default_value' => $node->sticky);
-    $form['options']['override_publishing_revision'] = array('#type' => 'checkbox', '#title' => t('Create new revision'), '#default_value' => $node->revision);
+  if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id && !user_access('administer nodes')) {
+    if (user_access('override node publishing status') or user_access('override node publishing promote') or user_access('override node publishing sticky') or user_access('override node publishing revision')) {
+      $node = $form['#node'];
+      $form['options'] = array('#type' => 'fieldset', '#title' => t('Publishing options'), '#collapsible' => TRUE, '#collapsed' => TRUE, '#weight' => 25);
+      if (user_access('override node publishing status')) {
+        $form['options']['override_publishing_status']   = array('#type' => 'checkbox', '#title' => t('Published'), '#default_value' => $node->status);
+      }
+      if (user_access('override node publishing promote')) {
+        $form['options']['override_publishing_promote']  = array('#type' => 'checkbox', '#title' => t('Promoted to front page'), '#default_value' => $node->promote);
+      }
+      if (user_access('override node publishing sticky')) {
+        $form['options']['override_publishing_sticky']   = array('#type' => 'checkbox', '#title' => t('Sticky at top of lists'), '#default_value' => $node->sticky);
+      }
+      if (user_access('override node publishing revision')) {
+        $form['options']['override_publishing_revision'] = array('#type' => 'checkbox', '#title' => t('Create new revision'), '#default_value' => $node->revision);
+      }
+    }
   }
 }
 
@@ -40,13 +50,20 @@ function override_node_options_nodeapi(&
       // Allow users with 'override node publishing options' to change node
       // options.
       // TODO: Once in core, remove adminster nodes check.
-      if (user_access('override node publishing options') && !user_access('administer nodes')) {
-        $keys = array(
-          'override_publishing_status' => 'status',
-          'override_publishing_promote' => 'promote',
-          'override_publishing_sticky' => 'sticky',
-          'override_publishing_revision' => 'revision',
-        );
+      $keys = array();
+      if (!user_access('administer nodes')) {
+        if (user_access('override node publishing status')) {
+          $keys['override_publishing_status'] = 'status';
+        }
+        if (user_access('override node publishing promote')) {
+          $keys['override_publishing_promote'] = 'promote';
+        }
+        if (user_access('override node publishing sticky')) {
+          $keys['override_publishing_sticky'] = 'sticky';
+        }
+        if (user_access('override node publishing revision')) {
+          $keys['override_publishing_revision'] = 'revision';
+        }
         foreach ($keys as $override_key => $real_key) {
           if (isset($node->$override_key)) {
             $node->$real_key = $node->$override_key;
