? all_og_types_patch.txt
? require_num_groups_1.diff
? require_num_groups_2.diff
Index: og_mandatory_group.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/og_mandatory_group/og_mandatory_group.module,v
retrieving revision 1.4.2.1
diff -u -p -r1.4.2.1 og_mandatory_group.module
--- og_mandatory_group.module	22 Jul 2006 12:40:59 -0000	1.4.2.1
+++ og_mandatory_group.module	23 Sep 2006 22:58:24 -0000
@@ -18,7 +18,23 @@ function og_mandatory_group_help($sectio
  * 
  */
 function og_mandatory_group_user($op, &$edit, &$account, $category = NULL) {
+  
+  if (!module_exist('og')) {
+    return;
+  }
   switch ($op) {
+    case 'validate':
+      if (isset($edit['og_register'])) { //only present during registration
+        unset($edit['og_register'][0]);
+        if (count(array_filter($edit['og_register'])) < 1) {
+          form_set_error('og_register',"You must join at least one group");
+        }
+      }
+      break;    
+    case 'register':
+      $form['og_register']['minimum'] = array ('#value' => t('You must join at least one group.'),);
+      return $form;
+      break;
     case 'insert':
       if (($group = variable_get('og_mandatory_group', 0)) != 0) {
         og_save_subscription($group, $account->uid, array('is_active' => 1));
@@ -29,28 +45,28 @@ function og_mandatory_group_user($op, &$
         $headers = "From: $from\nX-Mailer: Drupal\nReturn-path: $from\nErrors-to: $from";
 
         $groups = '';
-	if ($edit['og_register']) {
-	  $result = db_query(db_rewrite_sql('SELECT n.nid, n.title, o.* FROM {node} n INNER JOIN {og} o ON n.nid = o.nid WHERE n.type IN ('. str_pad('', count(variable_get('og_node_types', array('og'))) * 5 - 1, "'%s',") .') AND n.status = 1 AND o.register = 1'), variable_get('og_node_types', array('og')));
-	  while ($row = db_fetch_object($result)) {
-	    if ($edit['og_register'][$row->nid]) {
-	      switch ($row->selective) {
-		case OG_OPEN:
-		  $groups .= check_plain($row->title) .' '. t('(open group)');
-		  break;
-		case OG_MODERATED:
-		  $groups .= check_plain($row->title) .' '. t('(moderated group)');
-		  break;
-		case OG_INVITE_ONLY:
-		  $groups .= check_plain($row->title) .' '. t('(invite only group)');
-		  break;
-		case OG_CLOSED:
-		  $groups .= check_plain($row->title) .' '. t('(closed group)');
-		  break;
-	      }
-	      $groups .= "\n\t". url("node/$row->nid", NULL, NULL, TRUE) ."\n\n";
-	    }
-	  }
-	}
+        if ($edit['og_register']) {
+          $result = db_query(db_rewrite_sql('SELECT n.nid, n.title, o.* FROM {node} n INNER JOIN {og} o ON n.nid = o.nid WHERE n.type IN ('. str_pad('', count(variable_get('og_node_types', array('og'))) * 5 - 1, "'%s',") .') AND n.status = 1 AND o.register = 1'), variable_get('og_node_types', array('og')));
+          while ($row = db_fetch_object($result)) {
+            if ($edit['og_register'][$row->nid]) {
+              switch ($row->selective) {
+          case OG_OPEN:
+            $groups .= check_plain($row->title) .' '. t('(open group)');
+            break;
+          case OG_MODERATED:
+            $groups .= check_plain($row->title) .' '. t('(moderated group)');
+            break;
+          case OG_INVITE_ONLY:
+            $groups .= check_plain($row->title) .' '. t('(invite only group)');
+            break;
+          case OG_CLOSED:
+            $groups .= check_plain($row->title) .' '. t('(closed group)');
+            break;
+              }
+              $groups .= "\n\t". url("node/$row->nid", NULL, NULL, TRUE) ."\n\n";
+            }
+          }
+        }
         $sql = og_list_users_sql(1, 1);
         $result = db_query($sql, $group);
         while ($row = db_fetch_object($result)) {
