Index: workflow_fields.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/workflow_fields/workflow_fields.module,v
retrieving revision 1.5.2.13.2.10
diff -u -r1.5.2.13.2.10 workflow_fields.module
--- workflow_fields.module	10 Dec 2008 21:52:31 -0000	1.5.2.13.2.10
+++ workflow_fields.module	10 Feb 2009 21:22:20 -0000
@@ -83,7 +83,7 @@
           $userrefs[$userref['field_name']] = $userref['widget']['label'];
         }
       }
-                                                
+
       // For each field, add checkboxes for visible and editable for all roles.
       $fields = module_invoke_all('workflow_fields', $type) + $content['fields'];
       foreach ($fields as $field) {
@@ -228,7 +228,7 @@
 function workflow_fields_state_form_submit($form, &$form_state) {
   if (isset($form_state['values']['fields'])) {
     if (!isset($form_state['values']['sid'])) {
-      $form_state['values']['sid'] = db_result(db_query("SELECT sid FROM {workflow_states} WHERE wid=%d AND state='%s'", 
+      $form_state['values']['sid'] = db_result(db_query("SELECT sid FROM {workflow_states} WHERE wid=%d AND state='%s'",
         $form_state['values']['wid'], $form_state['values']['state']));
     }
     db_query("DELETE FROM {workflow_fields} WHERE sid=%d", intval($form_state['values']['sid']));
@@ -296,7 +296,7 @@
             $form[$key .'_view']['#required'] = FALSE;
           }
         }
-          
+
         // Now hide the field.
         $element['#access'] = FALSE;
         $element['#type'] = 'value';
@@ -445,18 +445,25 @@
 
 function _workflow_fields_get_fields($sid, $type, $node) {
   global $user;
+  $visibles = array();
+  $editables = array();
+
   $result = db_query("SELECT * FROM {workflow_fields} WHERE sid = %d AND type = '%s' AND rid IN (%d, %s)",
     $sid, $type, FIELD_ROLE_USERREFERENCE, implode(_workflow_fields_compute_groups($node), ',')
   );
   // Compute the OR of permissions among all groups that this user belongs to.
   while ($row = db_fetch_array($result)) {
     if ($row['rid'] != FIELD_ROLE_USERREFERENCE) {
-      $visibles[$row['name']] |= $row['visible'];
-      $editables[$row['name']] |= $row['editable'];
+      $visibles[$row['name']] = 0;
+      $editables[$row['name']] = 0;
+      $visibles[$row['name']] |= !empty($row['visible']);
+      $editables[$row['name']] |= !empty($row['editable']);
     }
     else {
-      $visibles[$row['name']] |= ($row['visible'] && isset($node->{$row['visible_userref']}) && $node->{$row['visible_userref']}[0]['uid'] == $user->uid);
-      $editables[$row['name']] |= ($row['editable'] && isset($node->{$row['editable_userref']}) && $node->{$row['editable_userref']}[0]['uid'] == $user->uid);
+      $visibles[$row['name']] = 0;
+      $editables[$row['name']] = 0;
+      $visibles[$row['name']] |= (!empty($row['visible']) && isset($node->{$row['visible_userref']}) && $node->{$row['visible_userref']}[0]['uid'] == $user->uid);
+      $editables[$row['name']] |= (!empty($row['editable']) && isset($node->{$row['editable_userref']}) && $node->{$row['editable_userref']}[0]['uid'] == $user->uid);
     }
   }
   return array($visibles, $editables);
