You are here

function og_subgroups_get_family in Subgroups for Organic groups 5.3

Same name and namespace in other branches
  1. 5.4 og_subgroups.module \og_subgroups_get_family()
  2. 5 og_subgroups.module \og_subgroups_get_family()
1 call to og_subgroups_get_family()
og_subgroups_save_family in ./og_subgroups.module

File

./og_subgroups.module, line 765
Maintains a hierarchy of group/subgroup relationships.

Code

function og_subgroups_get_family($node, $relationship_type) {
  $func = og_subgroups_get_ . $relationship_type;
  $tree = array();
  if (is_array($node->parents)) {
    $parents = $node->parents;
  }
  else {
    $parents = $node->og_groups;
  }
  if ($parents) {
    foreach ($parents as $key => $value) {

      //Build the first level of the tree
      $tree[$value]['nid'] = $value;
      unset($tree[$value]['title']);
      $tree[$value]['title'] = $node->og_groups_names[$key];

      //when the node is not already in node og_groups this results in a blank title

      //build parents or children (or nothing)
      if ($relationship_type != 'none') {
        $tree[$value][$relationship_type] = $func($value);

        //og_subgroups_get_parents or og_subgroups_get_children
      }
      if (!empty($tree[$value][$relationship_type])) {
        foreach ($tree[$value][$relationship_type] as $this_member) {

          //unset the parents from the first level of the tree
          if ($this_member['nid'] != $tree[$value]['nid']) {

            //Don't unset the parent from the first level -- BUT DO UNSET IT FROM ITS OWN PARENT
            unset($tree[$this_member['nid']]);
          }
        }
      }
    }
  }
  return $tree;
}