Elgg  Version 6.2
breadcrumbs.php
Go to the documentation of this file.
1 <?php
16 function elgg_push_breadcrumb(string $text, string|false $href = false): void {
17  static $i = 0;
18  $i++;
19  elgg_register_menu_item('breadcrumbs', [
20  'name' => "breadcrumb-{$i}",
21  'text' => $text,
22  'href' => $href,
23  ]);
24 }
25 
34 
35  elgg_push_collection_breadcrumbs($entity->type, $entity->subtype, $entity->getContainerEntity());
36 
37  $link_self = elgg_get_current_route_name() !== "view:{$entity->type}:{$entity->subtype}";
38  $link_self = $link_self && !elgg_http_url_is_identical(elgg_get_current_url(), $entity->getURL());
39  if ($link_self) {
40  elgg_register_menu_item('breadcrumbs', [
41  'name' => 'entity',
42  'text' => $entity->getDisplayName(),
43  'href' => $entity->getURL(),
44  ]);
45  }
46 }
47 
58 function elgg_push_collection_breadcrumbs(string $entity_type, string $entity_subtype, ?\ElggEntity $container = null, bool $friends = false): void {
59 
60  if ($container) {
61  if (!$container instanceof \ElggSite && $entity_type !== 'group') {
62  elgg_register_menu_item('breadcrumbs', [
63  'name' => 'container',
64  'text' => $container->getDisplayName(),
65  'href' => $container->getURL(),
66  ]);
67  }
68 
69  if ($friends) {
70  $collection_route = "collection:{$entity_type}:{$entity_subtype}:friends";
71  } elseif ($entity_type === 'group') {
72  $collection_route = "collection:{$entity_type}:{$entity_subtype}:all";
73  } elseif ($container instanceof \ElggUser) {
74  $collection_route = "collection:{$entity_type}:{$entity_subtype}:owner";
75  } elseif ($container instanceof \ElggGroup) {
76  $collection_route = "collection:{$entity_type}:{$entity_subtype}:group";
77  } elseif ($container instanceof \ElggSite) {
78  $collection_route = "collection:{$entity_type}:{$entity_subtype}:all";
79  } else {
80  $collection_route = "collection:{$entity_type}:{$entity_subtype}:container";
81  }
82 
83  if ($collection_route === elgg_get_current_route_name()) {
84  return;
85  }
86 
87  $parameters = _elgg_services()->routes->resolveRouteParameters($collection_route, $container);
88  if ($parameters !== false) {
89  $label = elgg_echo("collection:{$entity_type}:{$entity_subtype}");
90  if ($friends) {
91  if (elgg_language_key_exists("collection:{$entity_type}:{$entity_subtype}:friends")) {
92  $label = elgg_echo("collection:{$entity_type}:{$entity_subtype}:friends");
93  } else {
94  $label = elgg_echo('collection:friends', [$label]);
95  }
96  }
97 
98  if (elgg_route_exists($collection_route)) {
99  elgg_register_menu_item('breadcrumbs', [
100  'name' => 'collection',
101  'text' => $label,
102  'href' => elgg_generate_url($collection_route, $parameters),
103  ]);
104  }
105  }
106 
107  return;
108  }
109 
110  $all_route_name = "collection:{$entity_type}:{$entity_subtype}:all";
111  if (!elgg_route_exists($all_route_name) || ($all_route_name === elgg_get_current_route_name())) {
112  return;
113  }
114 
115  elgg_register_menu_item('breadcrumbs', [
116  'name' => 'collection',
117  'text' => elgg_echo("collection:{$entity_type}:{$entity_subtype}"),
118  'href' => elgg_generate_url($all_route_name),
119  ]);
120 }
$entity
Definition: reset.php:8
$container
Definition: delete.php:23
$text
Definition: button.php:33
if($item instanceof \ElggEntity) elseif($item instanceof \ElggRiverItem) elseif($item instanceof \ElggRelationship) elseif(is_callable([ $item, 'getType']))
Definition: item.php:48
if($view &&elgg_view_exists($view)) $label
Definition: field.php:26
elgg_http_url_is_identical(string $url1, string $url2, array $ignore_params=['offset', 'limit'])
Test if two URLs are functionally identical.
Definition: elgglib.php:201
_elgg_services()
Get the global service provider.
Definition: elgglib.php:353
elgg_push_breadcrumb(string $text, string|false $href=false)
Breadcrumbs.
Definition: breadcrumbs.php:16
elgg_push_entity_breadcrumbs(\ElggEntity $entity)
Resolves and pushes entity breadcrumbs based on named routes.
Definition: breadcrumbs.php:33
elgg_push_collection_breadcrumbs(string $entity_type, string $entity_subtype, ?\ElggEntity $container=null, bool $friends=false)
Resolves and pushes collection breadcrumbs for a container.
Definition: breadcrumbs.php:58
elgg_register_menu_item(string $menu_name, array|\ElggMenuItem $menu_item)
Elgg navigation library Functions for managing menus and other navigational elements.
Definition: navigation.php:83
elgg_language_key_exists(string $key, string $language='en')
Check if a given language key exists.
Definition: languages.php:44
elgg_echo(string $message_key, array $args=[], string $language='')
Elgg language module Functions to manage language and translations.
Definition: languages.php:17
if($item->getLinkClass()) $href
Definition: submit.php:22
elgg_get_current_route_name()
Get the route name for the current request.
Definition: pagehandler.php:98
elgg_route_exists(string $name)
Check if a route is registered.
elgg_get_current_url()
Returns the current page's complete URL.
elgg_generate_url(string $name, array $parameters=[])
Generate a URL for named route.
if(empty( $breadcrumbs))
Definition: breadcrumbs.php:30