You are here

function og_CrumbsMultiPlugin_group_post::findParent__node_x in Crumbs, the Breadcrumbs suite 7.2

Same name in this branch
  1. 7.2 plugins/crumbs.og.inc \og_CrumbsMultiPlugin_group_post::findParent__node_x()
  2. 7.2 plugins/crumbs.og.2.inc \og_CrumbsMultiPlugin_group_post::findParent__node_x()
Same name and namespace in other branches
  1. 7 plugins/crumbs.og.inc \og_CrumbsMultiPlugin_group_post::findParent__node_x()
  2. 7 plugins/crumbs.og.2.inc \og_CrumbsMultiPlugin_group_post::findParent__node_x()

Attempts to find a breadcrumb parent path for node/%. If that node is in a group, it will return the group page as a parent.

Parameters

string $path: The path that we want to find a parent for, e.g. "node/123".

array $item: Loaded router item, as returned from crumbs_get_router_item()

Return value

array|null Parent path candidates

File

plugins/crumbs.og.2.inc, line 49

Class

og_CrumbsMultiPlugin_group_post
Use the group node as a parent for group posts. The priorities can be configured per group content type.

Code

function findParent__node_x($path, $item) {
  if (FALSE === ($node = crumbs_Util::itemExtractEntity($item, 'node', 1))) {
    return NULL;
  }

  // field_get_items() performs a lot faster than og_get_entity_groups().
  // See http://drupal.org/node/1819300#comment-6633494
  // TODO:
  //   We cannot rely on the field name to always be og_group_ref.
  //   Instead, we could provide a separate plugin for each such field.
  //   This way, fields in disabled plugins get never triggered.
  $items = field_get_items('node', $node, 'og_group_ref');
  if (is_array($items)) {
    foreach ($items as $item) {
      $parent_path = $this
        ->getParentPath($item['target_id'], $node);
      return array(
        $node->type => $parent_path,
      );
    }
  }
  return NULL;
}