From bcbde1906db71977101cdb1d5524d24479ad5f05 Mon Sep 17 00:00:00 2001
From: Dale Smith <smithdalec@gmail.com>
Date: Wed, 7 Dec 2011 16:23:18 -0500
Subject: [PATCH] changes made to fix permission problem

---
 webform_report.module |   86 +++++++++++++++++++++++++++---------------------
 1 files changed, 48 insertions(+), 38 deletions(-)

diff --git a/webform_report.module b/webform_report.module
index 8a0bf38..72d0ef7 100644
--- a/webform_report.module
+++ b/webform_report.module
@@ -52,50 +52,60 @@ function webform_report_permission() {
 }
 
 /**
- * Implementation of hook_access
+ * Implementation of hook_node_access
  */
 function webform_report_node_access($node, $op, $account) {
 
   global $user;
   
-  switch ($op) {
-    case 'view':
-      // if node is published, return view access
-      if ($node->status) {
-        if (user_access('access webform reports')) {
-          return NODE_ACCESS_ALLOW;
-        }
-        else {
-          return NODE_ACCESS_DENY;
-        }
+  // if a node is reauested
+  if (arg(0) == 'node' && is_numeric(arg(1))) {
+    $nid = arg(1);
+    $current_node = node_load($nid);
+    // machine-readable content type
+    $node_type = $current_node->type; 
+    // if a webform_report content type is requested
+    if ($node_type == 'webform_report'){
+      switch ($op) {
+        case 'view':
+          // if node is published, return view access
+          if ($node->status) {
+            if (user_access('access webform reports')) {
+              return NODE_ACCESS_ALLOW;
+            }
+            else {
+              return NODE_ACCESS_DENY;
+            }
+          }
+          // if unpublished, return update access - users who can update the node should be able to view it
+          else  {
+            if (node_access('update', $node)) {
+              return NODE_ACCESS_ALLOW;
+            }
+            else {
+              return NODE_ACCESS_DENY;
+            }
+          }
+          break;
+        case 'create':
+          if (user_access('create webform reports')) {
+              return NODE_ACCESS_ALLOW;
+            }
+            else {
+              return NODE_ACCESS_DENY;
+            }
+          break;
+        case 'update':
+        case 'delete':
+          if (user_access("edit webform reports") || (user_access("edit own webform reports") && ($user->uid == $node->uid))) {
+            return NODE_ACCESS_ALLOW;
+          }
+          else {
+            return NODE_ACCESS_DENY;
+          }
+          break;
       }
-      // if unpublished, return update access - users who can update the node should be able to view it
-      else  {
-        if (node_access('update', $node)) {
-          return NODE_ACCESS_ALLOW;
-        }
-        else {
-          return NODE_ACCESS_DENY;
-        }
-      }
-      break;
-    case 'create':
-      if (user_access('create webform reports')) {
-          return NODE_ACCESS_ALLOW;
-        }
-        else {
-          return NODE_ACCESS_DENY;
-        }
-      break;
-    case 'update':
-    case 'delete':
-      if (user_access("edit webform reports") || (user_access("edit own webform reports") && ($user->uid == $node->uid))) {
-        return NODE_ACCESS_ALLOW;
-      }
-      else {
-        return NODE_ACCESS_DENY;
-      }
-      break;
+    }
   }
 }
 
-- 
1.7.7

