Index: node_privacy_byrole.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_privacy_byrole/node_privacy_byrole.module,v
retrieving revision 1.1
diff -u -r1.1 node_privacy_byrole.module
--- node_privacy_byrole.module	14 Oct 2004 22:50:25 -0000	1.1
+++ node_privacy_byrole.module	2 Feb 2005 22:47:05 -0000
@@ -243,6 +243,7 @@
 }
 
 function node_privacy_byrole_formitems(&$node) {
+  global $user;
   if (!variable_get('node_privacy_byrole_enabled', FALSE)) {
     if (!user_access('administer site configuration')) {
       return '';
@@ -259,6 +260,14 @@
   
   $roles_array = user_roles();
   $roleids_array = array_keys($roles_array);
+  
+  $suppress_form = FALSE;
+  if(variable_get('node_privacy_byrole_hide_single_roles', 0) && count($user->roles) == 1 && $user->uid != 1) {
+    $userroles = array_keys($user->roles);
+    $userrole = $userroles[0];
+    $suppress_form = TRUE;
+  }
+  
   // if the node already exists, return a form where the permissions already granted are already marked in checkboxes,
   // else, return a form where all the checkboxes are marked.
   if ($node->nid  && $op != t('Preview')) {
@@ -269,31 +278,65 @@
       $already_permitted_forview_rids[$permitted_role->gid] = $permitted_role->grant_view;
       $already_permitted_foredit_rids[$permitted_role->gid] = $permitted_role->grant_update;
     }
-
-    foreach ($roleids_array as $roleid) {
-      $formitems_view .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_forview_'. $roleid, 1, $already_permitted_forview_rids[$roleid]);
-      $formitems_edit .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_foredit_'. $roleid, 1, $already_permitted_foredit_rids[$roleid]);
+  
+    if($suppress_form) {
+      foreach (array_keys($already_permitted_forview_rids) as $roleid) {
+        $formitems_view .= form_hidden("node_privacy_byrole_forview_".$roleid, 1);
+      }
+      foreach (array_keys($already_permitted_foredit_rids) as $roleid) {
+        $formitems_view .= form_hidden("node_privacy_byrole_foredit_".$roleid, 1);
+      }
+    }
+    else {
+      foreach ($roleids_array as $roleid) {
+        if($user->uid==1 || isset($user->roles[$roleid])) {
+          $formitems_view .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_forview_'. $roleid, 1, $already_permitted_forview_rids[$roleid]);
+          $formitems_edit .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_foredit_'. $roleid, 1, $already_permitted_foredit_rids[$roleid]);
+        }
+      }
     }
   }
   else { // the following generates the form based on the assumption that the node is being created or previewed
     if ($op == t('Preview')) { // case where node is being previewed
       $edit = $_POST['edit'];
-      foreach ($roleids_array as $roleid) {
-        $formitems_view .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_forview_'. $roleid, 1, $edit['node_privacy_byrole_forview_'. $roleid]);
-        $formitems_edit .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_foredit_'. $roleid, 1, $edit['node_privacy_byrole_foredit_'. $roleid]);
+      if($suppress_form) {
+        $userrole = array_keys($user->roles);
+        $formitems_view .= form_hidden("node_privacy_byrole_forview_".$userrole, 1);
+        $formitems_edit .= form_hidden("node_privacy_byrole_foredit_".$userrole, 1);
+      }
+      else {
+        foreach ($roleids_array as $roleid) {
+          if($user->uid==1 || isset($user->roles[$roleid])) {
+            $formitems_view .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_forview_'. $roleid, 1, $edit['node_privacy_byrole_forview_'. $roleid]);
+            $formitems_edit .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_foredit_'. $roleid, 1, $edit['node_privacy_byrole_foredit_'. $roleid]);
+          }
+        }
       }
     }
     else { // case where node is being created
-      foreach ($roleids_array as $roleid) {
-        $formitems_view .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_forview_'. $roleid, 1, TRUE);
-        $formitems_edit .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_foredit_'. $roleid, 1, FALSE);
+      if($suppress_form) {
+        $formitems_view .= form_hidden("node_privacy_byrole_forview_".$userrole, 1);
+        $formitems_edit .= form_hidden("node_privacy_byrole_foredit_".$userrole, 1);
+      }
+      else {
+        foreach ($roleids_array as $roleid) {
+          if($user->uid==1 || isset($user->roles[$roleid])) {
+            $formitems_view .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_forview_'. $roleid, 1, TRUE);
+            $formitems_edit .= form_checkbox(t($roles_array[$roleid]), 'node_privacy_byrole_foredit_'. $roleid, 1, FALSE);
+          }
+        }
       }
     }
   }
 
-  $formgroup_view = form_group('View Permissions', $formitems_view, 'Select which users can view your post based on their role.');
-  $formgroup_edit = form_group('Edit Permissions', $formitems_edit, 'Select which users can edit your post based on their role.');
-  return ($formgroup_view . $formgroup_edit);
+  if($suppress_form) {
+    return ($formitems_view . $formitems_edit);
+  }
+  else {
+    $formgroup_view = form_group('View Permissions', $formitems_view, 'Select which users can view your post based on their role.');
+    $formgroup_edit = form_group('Edit Permissions', $formitems_edit, 'Select which users can edit your post based on their role.');
+    return ($formgroup_view . $formgroup_edit);
+  }
 }
 
 function node_privacy_byrole_settings() {
@@ -306,6 +349,7 @@
   $formitems .= form_hidden('node_privacy_byrole_settings_changed', 1);
   $formitems .= form_radio(t('Enable the node_privacy_byrole module.'), 'node_privacy_byrole_enabled', 1,variable_get('node_privacy_byrole_enabled', FALSE) );
   $formitems .= form_radio(t('Disable the node_privacy_byrole module.'), 'node_privacy_byrole_enabled', 0, !variable_get('node_privacy_byrole_enabled', FALSE) );
+  $formitems .= form_checkbox(t('Suppress checkboxes for users with only one role'), 'node_privacy_byrole_hide_single_roles', 1, variable_get('node_privacy_byrole_hide_single_roles', 0));
   
   return $formitems; 
 }
@@ -364,4 +408,4 @@
   }
 }
 
-?>
\ No newline at end of file
+?>
