You are here

function oa_toolbar_get_parent_list in Open Atrium Toolbar 7.2

Return a list of parent links to be shown in a toolbar widget

Parameters

$space_id:

string $space_type:

2 calls to oa_toolbar_get_parent_list()
oa_toolbar_oa_space_nav_render in plugins/content_types/oa_space_nav.inc
Render callback.
oa_toolbar_oa_space_structure_render in plugins/content_types/oa_space_structure.inc
Render callback.

File

./oa_toolbar.module, line 686
Provides hook implementations and functionality for oa_toolbar.

Code

function oa_toolbar_get_parent_list($space_id, $space_type = OA_SPACE_TYPE) {
  $cache =& drupal_static(__FUNCTION__, array());
  if (isset($cache[$space_id])) {
    return $cache[$space_id];
  }

  // Can't just call oa_core_get_parents directly since it doesn't return results
  // in the order needed for display.
  $parents = array();
  $parent_id = $space_id;
  do {
    $parent = oa_core_get_parents_with_titles($parent_id, $space_type, NODE_PUBLISHED);
    if (!empty($parent)) {
      $keys = array_keys($parent);
      $parent_id = current($keys);

      // Check if we have recursive relations between spaces.
      if (in_array($parent_id, $parents) || $parent_id === $space_id) {
        break;
      }
      $parents = array_merge($parents, $keys);
    }
  } while (!empty($parent));
  $parents = array_reverse($parents);
  $items = array();
  if ($parents) {
    $items = oa_core_get_titles($parents, $space_type, '');
  }
  $cache[$space_id] = $items;
  return $items;
}