### Eclipse Workspace Patch 1.0
#P CCK 6.x
Index: includes/content.node_form.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/Attic/content.node_form.inc,v
retrieving revision 1.7.2.14
diff -u -r1.7.2.14 content.node_form.inc
--- includes/content.node_form.inc	4 Oct 2008 13:14:21 -0000	1.7.2.14
+++ includes/content.node_form.inc	26 Dec 2008 16:20:04 -0000
@@ -44,13 +44,7 @@
 
   // See if access to this form element is restricted,
   // if so, skip widget processing and just set the value.
-  $access = TRUE;
-  $field_access = module_invoke_all('field_access', 'edit', $field);
-  foreach ($field_access as $value) {
-    if (empty($value)) {
-      $access = FALSE;
-    }
-  }
+  $access = content_access('edit', $field);
   if (!$access) {
     $addition[$field_name] = array(
       '#access' => $access,
Index: modules/content_permissions/content_permissions.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/modules/content_permissions/Attic/content_permissions.module,v
retrieving revision 1.5.2.4
diff -u -r1.5.2.4 content_permissions.module
--- modules/content_permissions/content_permissions.module	10 Nov 2008 15:56:35 -0000	1.5.2.4
+++ modules/content_permissions/content_permissions.module	26 Dec 2008 16:20:04 -0000
@@ -1,5 +1,6 @@
 <?php
 // $Id: content_permissions.module,v 1.5.2.4 2008/11/10 15:56:35 yched Exp $
+
 /**
  *  Implementation of hook_perm().
  */
@@ -13,41 +14,17 @@
 }
 
 /**
- *  Implementation of hook_nodeapi(). Remove inaccessible fields from node display.
- */
-function content_permissions_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
-  if ($op == 'view') {
-    // Prevent against invalid 'nodes' built by broken 3rd party code.
-    if (isset($node->type)) {
-      $type = content_types($node->type);
-      foreach ($type['fields'] as $field_name => $field) {
-        if (isset($node->content[$field_name])) {
-          $node->content[$field_name]['#access'] = user_access('view '. $field_name);
-        }
-      }
-    }
-  }
-}
-
-/**
- *  Remove inaccessible fields from nodes.
+ * Implementation of hook_field_access().
  *
- * @see content_field_form().
+ * Remove inaccessible fields from nodes.
+ *
+ * @see content_access().
  */
-function content_permissions_field_access($op, $field) {
+function content_permissions_field_access($op, $field, $account) {
   switch ($op) {
     case 'view':
     case 'edit':
-      return user_access($op .' '. $field['field_name']);
+      return user_access($op .' '. $field['field_name'], $account);
   }
   return TRUE;
 }
-
-/**
- *  The default field access callback. Remove inaccessible fields from Views.
- *
- * @see content_views_field_views_data().
- */
-function content_views_access_callback($field) {
-  return user_access('view '. $field['field_name']);
-}
Index: includes/views/content.views.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/includes/views/Attic/content.views.inc,v
retrieving revision 1.1.2.19
diff -u -r1.1.2.19 content.views.inc
--- includes/views/content.views.inc	4 Dec 2008 00:40:40 -0000	1.1.2.19
+++ includes/views/content.views.inc	26 Dec 2008 16:20:04 -0000
@@ -230,9 +230,8 @@
         'click sortable' => $sorts[0],
         'additional fields' => $additional_fields,
         'content_field_name' => $field['field_name'],
-        // Access control modules should implement content_views_access_callback().
-        'access callback' => 'content_views_access_callback',
-        'access arguments' => array($field),
+        'access callback' => 'content_access',
+        'access arguments' => array('view', $field),
       ),
       'argument' => array(
         'field' => $columns[0],
Index: content.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/Attic/content.module,v
retrieving revision 1.301.2.85
diff -u -r1.301.2.85 content.module
--- content.module	10 Nov 2008 15:56:35 -0000	1.301.2.85
+++ content.module	26 Dec 2008 16:20:03 -0000
@@ -751,7 +751,7 @@
           '#type' => 'content_field',
           '#title' => check_plain(t($field['widget']['label'])),
           '#field_name' => $field['field_name'],
-          '#access' => $formatter_name != 'hidden',
+          '#access' => $formatter_name != 'hidden' && content_access('view', $field),
           '#label_display' => $label_display,
           '#node' => $node,
           '#teaser' => $teaser,
@@ -2092,6 +2092,37 @@
   return (array) $default_value;
 }
 
+/**
+ * Determine whether the user has access to a given field.
+ *
+ * @param $op
+ *   The operation to be performed. Possible values:
+ *   - "edit"
+ *   - "view"
+ * @param $field
+ *   The field on which the operation is to be performed.
+ * @param $account
+ *   (optional) The account to check, if not given use currently logged in user.
+ * @return
+ *   TRUE if the operation is allowed;
+ *   FALSE if the operation is denied.
+ */
+function content_access($op, $field, $account = NULL) {
+  global $user;
+
+  if (is_null($account)) {
+    $account = $user;
+  }
+
+  $field_access = module_invoke_all('field_access', $field, $account);
+  foreach ($field_access as $value) {
+    if ($value === FALSE) {
+      return FALSE;
+    }
+  }
+  return TRUE;
+}
+
  /**
  * Hide specified fields from the $content variable in node templates.
  */
