function og_context_handler_node

7.x-2.x og_context.module og_context_handler_node($node = NULL)
7.x-1.x og_context.module og_context_handler_node()

Context handler; Get groups from existing node or ctools context.

Parameters

$node: Optional; A node. If empty a node object will attempted to be loaded via menu_get_object().

1 call to og_context_handler_node()
og_context_handler_comment in og/og_context/og_context.module
Context handler; Get groups from parent of comment being added to it.
1 string reference to 'og_context_handler_node'

File

og/og_context/og_context.module, line 449
Get a group from a viewed page.

Code

function og_context_handler_node($node = NULL) {
  if (empty($node) && $node = menu_get_object()) {
    return _group_context_handler_entity('node', $node);
  }

  $item = menu_get_item();

  if (empty($item['map'])) {
    // User has no access to the menu item.
    return;
  }

  if ($item['path'] == 'node/%/group') {
    $node = node_load($item['map'][1]);
  }
  elseif (strpos($item['path'], 'group/%/%/admin') === 0 && !empty($item['map'][1]) && $item['map'][1] == 'node') {
    $node = node_load($item['map'][2]);
  }

  if ($node) {
    return _group_context_handler_entity('node', $node);
  }

  // The path may not be %node, but in fact is a ctools-context, so extract the
  // node from it. We check only the 1st position (e.g. node/%/foo).
  if (empty($item['map'][1]) || !is_object($item['map'][1])) {
    return;
  }

  $context = clone $item['map'][1];

  // Check the context is a node type. We check only path similar to node/%/foo
  // and don't traverse over the whole arguments, as it might be a page manager
  // page passing multiple nodes (e.g. some/path/with/%node/%node). Implementing
  // modules wanting to handle the above example, should implement their own
  // context handler.
  if ($item['map'][1] instanceof ctools_context) {
    if (empty($context->type[0]) || $context->type[0] != 'entity:node') {
      return;
    }
    return _group_context_handler_entity('node', $context->data);
  }
  // We might have the node object as part of menu_get_item(), like in Webform
  // module nodes.
  // Check for vid and nid to make sure that this is a node, and not just an
  // entity that has an "nid" property.
  if (isset($context->vid) && isset($context->nid)) {
    return _group_context_handler_entity('node', $context);
  }
}