You are here

function og_subgroups_prop_propagate_content in Subgroups for Organic groups 6

Propagates content along the subgroups tree.

Parameters

&$node: The node object that needs to be propagated

Return value

TRUE if the node has been altered

1 call to og_subgroups_prop_propagate_content()
og_subgroups_prop_nodeapi in modules/og_subgroups_prop/og_subgroups_prop.module
Implementation of hook_nodeapi()

File

modules/og_subgroups_prop/og_subgroups_prop.module, line 194

Code

function og_subgroups_prop_propagate_content(&$node) {
  og_subgroups_include('tree');

  // Track if the node has been changed
  $changed = FALSE;

  // Determine the directions to move along the tree
  $directions = variable_get('og_subgroups_propagate_content', array());

  // Make sure at least one group has been selected
  if (isset($node->og_groups) && !empty($node->og_groups)) {

    // Iterate each selected group
    foreach ($node->og_groups as $gid) {

      // Propagate across each direction
      foreach ($directions as $direction) {
        if ($direction) {

          // Create a group object to pass along
          $group = new stdClass();
          $group->nid = $gid;

          // Fetch the tree and interate the groups
          foreach (_og_subgroups_prop_groups_by_direction($group, $direction) as $member) {

            // Make sure the user can post in here
            if (!og_subgroups_mask_group($member, TRUE)) {

              // Add this group to the node
              $node->og_groups[$member->nid] = $member->nid;
              $node->og_initial_groups[$member->nid] = $member->nid;
              $changed = TRUE;
            }
          }
        }
      }
    }
  }
  return $changed;
}