Only in og_subgroups-DRUPAL-5--4/: CHANGELOG.txt
Only in og_subgroups-DRUPAL-5--4/: CVS
Only in og_subgroups/: LICENSE.txt
diff -up -r -w og_subgroups-DRUPAL-5--4/og_subgroups.info og_subgroups/og_subgroups.info
--- og_subgroups-DRUPAL-5--4/og_subgroups.info	2008-06-14 17:55:34.000000000 -0400
+++ og_subgroups/og_subgroups.info	2010-06-30 19:34:34.000000000 -0400
@@ -1,8 +1,9 @@
-; $Id: og_subgroups.info,v 1.4.2.2 2008/06/14 21:55:34 amitaibu Exp $
+; $Id:
 
 name = OG subgroups
 description = "Enable defining hierarchy of groups for organic groups."
 package = "Organic groups"
-dependencies = og
+core = "6.x"
+dependencies[] = og
 
 
diff -up -r -w og_subgroups-DRUPAL-5--4/og_subgroups.install og_subgroups/og_subgroups.install
--- og_subgroups-DRUPAL-5--4/og_subgroups.install	2008-06-19 13:04:29.000000000 -0400
+++ og_subgroups/og_subgroups.install	2010-06-30 19:24:14.000000000 -0400
@@ -1,34 +1,38 @@
 <?php
-// $Id: og_subgroups.install,v 1.1.2.6 2008/06/19 17:04:29 amitaibu Exp $
+// $Id$
 
-function og_subgroups_install() {
-  switch ($GLOBALS['db_type']) {
-    case 'mysql':
-    case 'mysqli':
-      db_query("CREATE TABLE {og_subgroups} (
-        gid int(11) NOT NULL,
-        parent int(11) NOT NULL,
-        PRIMARY KEY (gid, parent)
-      ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
-    break;
-    case 'pgsql':
-      db_query("CREATE TABLE {og_subgroups} (
-       gid int NOT NULL,
-       parent int NOT NULL,
-       PRIMARY KEY (gid, parent));");
-      db_query("CREATE INDEX {og_subgroups}_gid_idx ON {og_subgroups} (gid);");
-      db_query("CREATE INDEX {og_subgroups}_parent_idx ON {og_subgroups} (parent);");
-      break;
-  }
-  // Make sure no records are kept in {og_ancestry}.
-  $ret = og_subgroups_migrate();
-  drupal_set_message($ret['query']);
+/**
+ * @file
+ * Installs and updates the necessary tables required by the OG Subgroups module.
+ */
+
+
+function og_subgroups_schema() {
+  $schema['og_subgroups'] = array(
+     'description' => t('Handles the hierarchy of og'),
+      'fields' => array(
+        'gid' => array(
+          'description' => t('The ID for a group.'),
+          'type' => 'int',
+          'not null' => TRUE),
+        'parent' => array(
+          'description' => t('The gid of the parent group.'),
+          'type' => 'int',
+          'not null' => TRUE,
+          'default' => 0),
+        ),
+      'primary key' => array('gid', 'parent'),
+  );
+
+  return $schema;
 }
 
+function og_subgroups_install() {
+  drupal_install_schema('og_subgroups');
+}
 
 function og_subgroups_uninstall() {
-  // Drop database table
-  db_query('DROP TABLE {og_subgroups}');
+  drupal_uninstall_schema('og_subgroups');
 
   // Delete variables
   $variables = array(
@@ -40,78 +44,3 @@ function og_subgroups_uninstall() {
     variable_del($variable);
   }
 }
-
-/**
- * Helper function migrate users with og_subgroups 5.x-3 to 5.x-4.
- * 
- * @param $clean_only
- *  When enabled new records will not be written, only deleted from {og_ancestry}.
- */
-function og_subgroups_migrate($clean_only = FALSE) {
-  // Get all nodes from og_ancestry that nid and group_nid are both group nodes. 
-  $all_groups = db_query("SELECT oga.nid AS gid, oga.group_nid AS parent FROM {og_ancestry} oga INNER JOIN {og} og ON og.nid = oga.nid");
-  $migrate = FALSE;
-  while ($group = db_fetch_object($all_groups)) {
-    $migrate = TRUE;
-    // Don't insert new records, only clean older records.
-    if (!$clean_only) {
-      db_query('INSERT INTO {og_subgroups} (gid, parent) VALUES (%d, %d)', $group->gid, $group->parent);
-    }
-    db_query('DELETE FROM {og_ancestry} WHERE nid = %d AND group_nid = %d', $group->gid, $group->parent);
-  }
-  if ($migrate) {
-    $ret = array(
-      'query' => t('Groups from versions prior to 5.x-4 were migrated, and old records from the {og_ancestry} were removed.'),
-      'success' => TRUE,
-    );  
-    
-  }
-  else {
-    $ret = array(
-     'query' => t('OG Subgroups didn\'t migrate older records from {og_ancestry} since there were none.'),
-     'success' => TRUE,
-    ); 
-  }
-  return $ret;
-}
-
-/**
- * Update path for versions prior to 5.x-4.
- */
-function og_subgroups_update_1() {
-  $ret = array();
-  switch ($GLOBALS['db_type']) {
-    case 'mysql':
-    case 'mysqli':
-      db_query("CREATE TABLE {og_subgroups} (
-        gid int(11) NOT NULL,
-        parent int(11) NOT NULL,
-        PRIMARY KEY (gid, parent)
-      ) /*!40100 DEFAULT CHARACTER SET utf8 */;");
-    break;
-    case 'pgsql':
-      db_query("CREATE TABLE {og_subgroups} (
-       gid int NOT NULL,
-       parent int NOT NULL,
-       PRIMARY KEY (gid, parent));");
-      db_query("CREATE INDEX {og_subgroups}_gid_idx ON {og_subgroups} (gid);");
-      db_query("CREATE INDEX {og_subgroups}_parent_idx ON {og_subgroups} (parent);");
-      break;
-  }  
-  $ret[] = array(
-    'query' => t('{og_subgroups} table was installed.'),
-    'success' => TRUE,
-  );  
-  $ret[] = og_subgroups_migrate();
-  return $ret;  
-}
-
-
-/**
- * Remove old records from {og_ancestry}.
- */
-function og_subgroups_update_2() {
-  $ret = array();
-  $ret[] = og_subgroups_migrate(TRUE);
-  return $ret;
-}
\ No newline at end of file
diff -up -r -w og_subgroups-DRUPAL-5--4/og_subgroups.module og_subgroups/og_subgroups.module
--- og_subgroups-DRUPAL-5--4/og_subgroups.module	2008-06-22 12:21:29.000000000 -0400
+++ og_subgroups/og_subgroups.module	2010-06-30 19:33:51.000000000 -0400
@@ -1,24 +1,10 @@
 <?php
-// $Id: og_subgroups.module,v 1.26.2.8 2008/06/22 16:21:29 amitaibu Exp $
+// $Id$
 
 /**
  * @file 
- * Maintains subgroups hierarchy created by the orgainc groups module.
- * 
- */
-
-/**
- * Implementation of hook_init().
- *
+ * Maintains a hierarchy of groups created by the orgainc groups module.
  */
-function og_subgroups_init() {
-  if (module_exists('views')) {
-    include_once drupal_get_path('module', 'og_subgroups') .'/og_subgroups.views.inc';
-  }
-  if (module_exists('workflow_ng')) {
-    include_once drupal_get_path('module', 'og_subgroups') .'/og_subgroups.workflow_ng.inc';
-  }
-}
 
 /**
  * Implementation of hook_perm().
@@ -30,96 +16,30 @@ function og_subgroups_perm() {
 /**
  * Implementation of hook_menu().
  */
-function og_subgroups_menu($may_cache) {
-  $items = array();
-  if (!$may_cache) {
-    $items[] = array(
-      'path' => 'admin/og/subgroups',
-      'title' => t('Subgroups for organic groups configuration'),
-      'callback' => 'drupal_get_form', 
-      'callback arguments' => array('og_subgroups_settings'),
-      'access' => user_access('administer groups hierachy'),
+function og_subgroups_menu() {
+    $items['admin/og/subgroups'] = array(
+      'title' => 'Organic groups subgroups configuration',
+      'page callback' => 'drupal_get_form', 
+      'page arguments' => array('og_subgroups_settings'),
+      'access arguments' => array('administer groups hierachy'),
       'weight' => 1,
      );
     
-    $arg0 = arg(0);
-    $arg1 = arg(1);
-    if ($arg0 == 'node' && is_numeric($arg1)) {
-      $node = node_load($arg1);
-      if (og_is_group_type($node->type)) {
-        $items[] = array(
-          'path' => 'node/'. arg(1) .'/og/subgroups',
-          'title' => t('Subgroups'),
-          'callback' => 'drupal_get_form',
-          'callback arguments' => array('og_subgroups_outline', $arg1),
-          'access' => user_access('edit groups hierachy'),
+    $items['node/%node/og/subgroups'] = array(
+      'title' => 'Subgroups',
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('og_subgroups_outline', 1),
+      'access arguments' => array(1),
+      'access callback' => 'og_subgroups_access',
           'type' => MENU_LOCAL_TASK,
-          'weight' => 2);
-      }
-    }
-  }
+      'weight' => 2,
+    );
   return $items;
 }
 
-/** 
- * API function to set/ update groups hierarchy.
- * 
- * @param $op
- *  Define the operation 'insert' or 'update'.
- * @param $node
- *  The node object.
- * @param $parent_nid
- *  The node id of the group that will be the parrent
- * @param $validate
- *  Set to TRUE when a validation on the node and parent node is required.
- * @param $log
- *  The log message.
- * @return 
- *  boolean indicating if operation preformed in case $validate is enabled.
- */
-function og_subgroups_set_hierarchy($op, $node, $parent_nid, $validate = FALSE, $log = NULL) {
-  $valid = FALSE;
-  if ($validate) {
-    // Check node is a group type.
-    if (og_is_group_type($node->type)) {
-      // Get all accessible/ inaccesiable groups for the user.
-      $options = og_subgroups_get_eligable_groups('accessibale');
-      $inaccessibale = og_subgroups_get_eligable_groups('inaccessibale');
-      // Check parent_nid is a valid parent.
-      if (array_key_exists($parent_nid, og_subgroups_tree($options, $node, $inaccessibale))) {
-        $valid = TRUE;
+function og_subgroups_access($node) {
+  return og_is_group_admin($node) && og_is_group_type($node->type);
       }
-      // Check if $op should be insert or update.
-      $parent = og_subgroups_get_family($node->nid, 'up') ? $op = 'update' : $op = 'insert'; 
-    }
-  }
-  else {
-    $valid = TRUE;
-  }
-  if ($valid) {
-    if ($op == 'insert') {
-      db_query('INSERT INTO {og_subgroups} (gid, parent) VALUES (%d, %d)', $node->nid, $parent_nid);  
-    }
-    elseif ($op == 'update') {
-      db_query('UPDATE {og_subgroups} SET parent = %d WHERE gid = %d', $parent_nid, $node->nid);
-    }    
-    if ($log) {
-      db_query("UPDATE {node_revisions} SET log = '%s' WHERE vid = %d", $log, $node->vid);     
-    }
-  }
-  return $valid;
-}
-
-/** 
- * API function to remove a groups hierarchy.
- * 
- * @param $node
- *  The node object.
- */
-function og_subgroups_remove_hierarchy($node) {
-  db_query('DELETE FROM {og_subgroups} WHERE gid = %d', $node->nid); 
-}
-
 
 /**
  * Menu callback; displays the subgroups configuration page.
@@ -151,7 +71,7 @@ function og_subgroups_settings() {
   $form['propagte_user']['og_subgroups_propagate_members'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Members propagation'),
-    '#description' => t('Set the propogation type for group members.'),
+    '#description' => t('Set the propogation type for group members (non-admin).'),
     '#options' => array(
       'up' => t('Parents'),
       'down' => t('Children'),
@@ -242,6 +162,7 @@ function og_subgroups_get_all_family($gi
   return $nodes;
 }
 
+
 /**
  * Implementation of hook_nodeapi().
 */
@@ -356,9 +277,7 @@ function og_subgroups_get_eligable_group
  * Implementation of function og_subgroups_outline()
  * Handles all subgroups outline operations.
  */
-function og_subgroups_outline($nid) {
-  $node = node_load($nid);
-  
+function og_subgroups_outline($form_state, $node) {
   // Get all accessible/ inaccesiable groups for the user.
   $options = og_subgroups_get_eligable_groups('accessibale');
   $inaccessibale = og_subgroups_get_eligable_groups('inaccessibale');
@@ -382,7 +301,7 @@ function og_subgroups_outline($nid) {
   );
   $form['nid'] = array(
     '#type' => 'value', 
-    '#value' => $nid,
+    '#value' => $node->nid,
   );
   
   if (isset($node->og_subgroups)) {
@@ -410,31 +329,33 @@ function og_subgroups_outline($nid) {
 /**
  * Handles subgroups form submissions.
  */
-function og_subgroups_outline_submit($form_id, $form_values) {
-  $op = $form_values['op'];
-  $node = node_load($form_values['nid']);
+function og_subgroups_outline_submit($form, &$form_state) {
+  $op = $form_state['values']['op'];
+  $node = node_load($form_state['values']['nid']);
   switch ($op) {
     case t('Set subgroups'):
-      if ($form_values['parent']) {
-        og_subgroups_set_hierarchy('insert', $node, $form_values['parent'], FALSE, $form_values['log']);
+      if ($form_state['values']['parent']) {
+        db_query('INSERT INTO {og_subgroups} (gid, parent) VALUES (%d, %d)', $node->nid, $form_state['values']['parent']);
+        db_query("UPDATE {node_revisions} SET log = '%s' WHERE vid = %d", $form_state['values']['log'], $node->vid);
       }
       drupal_set_message(t('The subgroup has been set.'));
       break;
     case t('Update subgroups'):
-      if ($form_values['parent']) {
-        og_subgroups_set_hierarchy('update', $node, $form_values['parent'], FALSE, $form_values['log']);
+      if ($form_state['values']['parent']) {
+        db_query('UPDATE {og_subgroups} SET parent = %d WHERE gid = %d', $form_state['values']['parent'], $node->nid);
+        db_query("UPDATE {node_revisions} SET log = '%s' WHERE vid = %d", $form_state['values']['log'], $node->vid);
       } 
       else {
-        og_subgroups_remove_hierarchy($node);
+        db_query('DELETE FROM {og_subgroups} WHERE gid = %d', $node->nid);
       }
       drupal_set_message(t('The subgroup has been updated.'));
       break;
     case t('Remove group from subgroups'):
-      og_subgroups_remove_hierarchy($node);
+      db_query('DELETE FROM {og_subgroups} WHERE gid = %d', $node->nid);
       drupal_set_message(t('Group has been removed from subgroups.'));
       break;
   }
-  return "node/$node->nid";
+  $form_state['redirect'] = 'node/' . $node->nid;
 }
 
 /**
@@ -617,6 +538,7 @@ function og_subgroups_propogate_user_rem
   $demote = variable_get('og_subgroups_propagate_demote', array());
   if ($demote['unsubscribe']) {
     $tree = _og_subgroups_propogate_user_get_tree($gid);
+
     $user = user_load(array('uid' => $uid));
     foreach ($tree as $gid => $foo) {
       // Check user isn't the manager of the group.
Only in og_subgroups-DRUPAL-5--4/: og_subgroups.views.inc
Only in og_subgroups-DRUPAL-5--4/: og_subgroups.workflow_ng.inc
