### Eclipse Workspace Patch 1.0
#P cck_field_perms
Index: cck_field_perms.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck_field_perms/cck_field_perms.module,v
retrieving revision 1.3.2.27
diff -u -r1.3.2.27 cck_field_perms.module
--- cck_field_perms.module	27 Aug 2007 21:25:36 -0000	1.3.2.27
+++ cck_field_perms.module	7 Nov 2007 18:51:24 -0000
@@ -81,8 +81,9 @@
           if ($disallowed_fields) {
             foreach ($disallowed_fields[$type] as $disallowed_field => $value ) {
               if ($value == 0) {continue; }
-              if (!(user_access(_cfp_content_to_readable($type, $disallowed_field, "view")))) {     
-                $node->$disallowed_field['#access'] = false;
+              if (!(user_access(_cfp_content_to_readable($type, $disallowed_field, "view")))) { 
+                $field_array = &$node->$disallowed_field;       
+                $field_array['#access'] = false;
                 $node->content[$disallowed_field]['#access'] = false;                   
               }   
             }
@@ -112,6 +113,20 @@
 }
 
 
+/**
+ * Implemenation of hook views_pre_view
+ */
+function cck_field_perms_views_pre_view(&$view, $items){
+  foreach($view->field as $idx => $field){
+    $field_name = substr($field['field'], 0, ( strlen($field['field']) - strlen('_value')) );
+    if(!cck_field_perms_access(null, $field_name, 'view')){
+      unset($view->field[$idx]);
+      unset($view->table_header[$idx]);
+    }
+  }
+}
+
+
 /* ********************************************* */
 /* CFP functions */
 /* ********************************************* */
@@ -237,6 +252,36 @@
 }
 
 
+function cck_field_perms_access($type, $field_name, $verb){
+  
+  global $disallowed;
+  if(!isset($disallowed)){
+    $disallowed = unserialize(variable_get('cfp_values', null));
+    if(!$disallowed) {
+      $disallowed = array();
+    }
+  }
+  if(!$type){
+    // -------------- hack for missing admin option to set permissions on fields per view
+    foreach($disallowed as $fields){
+      if( isset($fields[$field_name]) && $fields[$field_name] != 0) {
+        // return false if access to this field is denied for at least one content type
+        if(!user_access(_cfp_content_to_readable($type, $field_name, $verb))){
+          return false;
+        }
+      }
+    }
+    // -----------------------------------------------------------------------------------
+  } else {
+    if( isset($disallowed[$type][$field_name]) &&  $disallowed[$type][$field_name] != 0 ) {
+      return user_access(_cfp_content_to_readable($type, $field_name, $verb));
+    }
+  }
+  return true;
+}
+
+
+
 /* ************************ */
 /* ADMIN Functions */
 /* ************************ */
