? og_node_access.patch
Index: og.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/og/og.module,v
retrieving revision 1.298.2.129
diff -u -r1.298.2.129 og.module
--- og.module	1 Feb 2008 04:12:55 -0000	1.298.2.129
+++ og.module	6 Feb 2008 22:15:58 -0000
@@ -152,6 +152,9 @@
     og_theme();
     og_set_locale();
   }
+  if (variable_get('og_enabled', FALSE)) {
+    require dirname(__FILE__) .'/og_node_access.inc';
+  }
 }
 
 /**
@@ -2234,27 +2237,6 @@
   }
 }
 
-function og_node_grants($account, $op) {
-  if (variable_get('og_enabled', FALSE)) {
-    if ($op == 'view') {
-      $grants['og_public'][] = 0; // everyone can see a public node
-    }
-
-    // get subscriptions
-    if ($subscriptions = og_get_subscriptions($account->uid)) {
-      foreach ($subscriptions as $key => $val) {
-        if ($op == 'view') {
-          $grants['og_subscriber'][] = $key;
-        }
-        if (($op == 'update' || $op == 'delete') && $val['is_admin']) {
-          $grants['og_subscriber'][] = $key;
-        }
-      }
-    }
-    return $grants ? $grants : array();
-  }
-}
-
 function og_save_ancestry($node) {
   if (!og_is_omitted_type($node->type)) {
     $sql = "DELETE FROM {og_ancestry} WHERE nid = %d";
@@ -2269,40 +2251,6 @@
   }
 }
 
-function og_node_access_records($node) {
-  // don't write records if og access control is disabled or the node type is omitted or node is a group
-  if (og_is_omitted_type($node->type) || !variable_get('og_enabled', FALSE)) {
-    return;
-  }
-  
-  if (og_is_group_type($node->type)) {
-    // this grant allows group admins to manage stuff
-    $grants[] = array('realm' => 'og_subscriber', 'gid' => $node->nid, 'grant_view' => 1, 'grant_update' => 1, 'grant_delete' => 1);
-    // If the group is not marked private let everyone view the group homepage.
-    if (!$node->og_private) {
-        $grants[] = array (
-          'realm' => 'og_public',
-          'gid' => 0,
-          'grant_view' => 1,
-          'grant_update' => 0,
-          'grant_delete' => 0 );
-    }
-  }
-  elseif (is_array($node->og_groups)) {
-    // applies to non group nodes
-    if ($node->og_public) {
-      $grants[] = array('realm' => 'og_public', 'gid' => 0, 'grant_view' => 1, 'grant_update' => 0, 'grant_delete' => 0);
-    }
-    
-    foreach ($node->og_groups as $gid) {
-      // we write a broad grant here but og_node_grants() only issues it selectively.
-      $grants[] = array('realm' => 'og_subscriber', 'gid' => $gid, 'grant_view' => 1, 'grant_update' => 1, 'grant_delete' => 1);
-    }
-  }
-
-  return $grants;
-}
-
 function og_is_omitted_type($type) {
   return in_array($type, variable_get('og_omitted', array()));
 }
@@ -2614,6 +2562,7 @@
 } 
 
 function og_settings_submit($form_id, $form_values) {
+  require_once dirname(__FILE__) .'/og_node_access.inc';
   if ($form_values['op'] == t('Enable')) {
     variable_set('og_enabled', 1);
     node_access_rebuild();
@@ -2983,16 +2932,3 @@
   }
   return FALSE;
 }
-
-/**
-* Implementation of hook_node_access_explain
-*/
-function og_node_access_explain($row) {
-  if ($row->realm == 'og_public') {
-    return t('All users may view this node.', array('@op' => $op));
-  }
-  elseif ($row->realm == 'og_subscriber') {
-    $node = node_load((int)$row->gid);
-    return t('Subscribers of !group_n may view this node.', array('@op' => $op, '!group_n' => l($node->title, "node/$row->gid")));
-  }
-}
Index: og_node_access.inc
===================================================================
RCS file: og_node_access.inc
diff -N og_node_access.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ og_node_access.inc	6 Feb 2008 22:15:58 -0000
@@ -0,0 +1,73 @@
+<?php
+// $Id: $
+
+function og_node_grants($account, $op) { 
+  if (variable_get('og_enabled', FALSE)) {
+    if ($op == 'view') {
+      $grants['og_public'][] = 0; // everyone can see a public node
+    }
+
+    // get subscriptions
+    if ($subscriptions = og_get_subscriptions($account->uid)) {
+      foreach ($subscriptions as $key => $val) {
+        if ($op == 'view') {
+          $grants['og_subscriber'][] = $key;
+        }
+        if (($op == 'update' || $op == 'delete') && $val['is_admin']) {
+          $grants['og_subscriber'][] = $key;
+        }
+      }
+    }
+    return $grants ? $grants : array();
+  }
+}
+
+/**
+ * Implementation of hook_node_acess_records.
+ */
+function og_node_access_records($node) {
+  // don't write records if og access control is disabled or the node type is omitted or node is a group
+  if (og_is_omitted_type($node->type) || !variable_get('og_enabled', FALSE)) {
+    return;
+  }
+  
+  if (og_is_group_type($node->type)) {
+    // this grant allows group admins to manage stuff
+    $grants[] = array('realm' => 'og_subscriber', 'gid' => $node->nid, 'grant_view' => 1, 'grant_update' => 1, 'grant_delete' => 1);
+    // If the group is not marked private let everyone view the group homepage.
+    if (!$node->og_private) {
+        $grants[] = array (
+          'realm' => 'og_public',
+          'gid' => 0,
+          'grant_view' => 1,
+          'grant_update' => 0,
+          'grant_delete' => 0 );
+    }
+  }
+  elseif (is_array($node->og_groups)) {
+    // applies to non group nodes
+    if ($node->og_public) {
+      $grants[] = array('realm' => 'og_public', 'gid' => 0, 'grant_view' => 1, 'grant_update' => 0, 'grant_delete' => 0);
+    }
+    
+    foreach ($node->og_groups as $gid) {
+      // we write a broad grant here but og_node_grants() only issues it selectively.
+      $grants[] = array('realm' => 'og_subscriber', 'gid' => $gid, 'grant_view' => 1, 'grant_update' => 1, 'grant_delete' => 1);
+    }
+  }
+
+  return $grants;
+}
+
+/**
+ * Implementation of hook_node_access_explain.
+ */
+function og_node_access_explain($row) {
+  if ($row->realm == 'og_public') {
+    return t('All users may view this node.', array('@op' => $op));
+  }
+  elseif ($row->realm == 'og_subscriber') {
+    $node = node_load((int)$row->gid);
+    return t('Subscribers of !group_n may view this node.', array('@op' => $op, '!group_n' => l($node->title, "node/$row->gid")));
+  }
+}
\ No newline at end of file
