? og_user_groups.patch
? og_user_groups2.patch
? og_user_groups_retry.patch
Index: og.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/og/og.module,v
retrieving revision 1.110.2.159
diff -u -p -r1.110.2.159 og.module
--- og.module	2 Jan 2007 04:01:42 -0000	1.110.2.159
+++ og.module	28 Feb 2007 10:08:52 -0000
@@ -868,9 +868,9 @@ function og_list_users_page($gid) {
 function og_list_groups_page($uid = NULL, $format = 'html') {
   global $user;
   
-  // workaround for the fact that anon users are served the 'og' manu item when they request a page like og/manage/x or og/user/x
-  if ($uid != NULL && arg(2) != 'opml' && !is_int($uid)) {
-    drupal_access_denied();
+  // workaround for the fact that anon users are served the 'og' menu item when they request a og/manage/x page
+  if ($uid != NULL && arg(2) != 'opml' && arg(1) == 'manage' && !is_int($uid)) {
+    return drupal_access_denied();
   }
 
   if (!$uid) {
@@ -878,8 +878,10 @@ function og_list_groups_page($uid = NULL
     $result = pager_query(db_rewrite_sql("SELECT og.nid, n.title, r.body, n.uid, u.name, og.description FROM {og} og INNER JOIN {node} n ON og.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON n.uid = u.uid WHERE og.directory=1 AND n.status=1 ORDER BY og.nid DESC", 'og', 'nid'), 50);
   }
   else {
-    // Retrieve only current user's group
-    $result = pager_query(db_rewrite_sql("SELECT og.nid, n.title, r.body, n.uid, u.name, og.description FROM {og} og INNER JOIN {node} n ON og.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON n.uid = u.uid INNER JOIN {og_uid} ou ON ou.uid = u.uid WHERE og.nid IN (". implode(',', array_keys($user->og_groups)) .") ORDER BY og.nid DESC", 'og', 'nid'), 50);
+    // Retrieve only current user's groups, if they have any
+    if (!empty($user->og_groups)) {
+      $result = pager_query(db_rewrite_sql("SELECT og.nid, n.title, r.body, n.uid, u.name, og.description FROM {og} og INNER JOIN {node} n ON og.nid = n.nid INNER JOIN {node_revisions} r ON r.vid = n.vid INNER JOIN {users} u ON n.uid = u.uid WHERE og.nid IN (". implode(',', array_keys($user->og_groups)) .") ORDER BY og.nid DESC", 'og', 'nid'), 50);
+    }
   }
   if ($format == 'opml') {
     og_list_groups_page_opml($result); 
