Index: publishcontent.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/publishcontent/publishcontent.module,v
retrieving revision 1.3.4.12
diff -u -p -r1.3.4.12 publishcontent.module
--- publishcontent.module	1 Jun 2010 13:42:36 -0000	1.3.4.12
+++ publishcontent.module	1 Jun 2010 14:14:46 -0000
@@ -151,12 +151,22 @@ function publishcontent_views_handlers()
  */
 function publishcontent_form_alter(&$form, $form_state, $form_id) {
   if (!user_access('administer nodes')
-      && $form['type']['#value'] .'_node_form' == $form_id
-      && (_publishcontent_unpublish_access($form['#node']) ||
-          _publishcontent_publish_access($form['#node']))) {
-    $form['options']['#access'] = TRUE;
-    unset($form['options']['promote']);
-    unset($form['options']['sticky']);
-    unset($form['options']['revision']);
+    && $form['type']['#value'] .'_node_form' == $form_id
+    && (_publishcontent_unpublish_access($form['#node'])
+      ||_publishcontent_publish_access($form['#node']))) {
+    $form['options']['status']['#access'] = TRUE;
+    if ($form['options']['#access']) {
+      return;
+    }
+    else {
+      $form['options']['#access'] = TRUE;
+    }
+    foreach (element_children($form['options']) as $key) {
+      // If another form has afforded access to a particular option, do not
+      // override that access. Otherwise, disable it.
+      $form['options'][$key]['#access'] =
+       isset($form['options'][$key]['#access'])
+       ? $form['options'][$key]['#access'] : FALSE;
+    }
   }
 }
