/** * Flush menu tree cache for root page * * @param string $event the name of the event * @param string $type the type of the event * @param ElggObject $object the object affected * * @return void */ function pages_tools_cache_handler($event, $type, ElggObject $object) { if (!pages_tools_is_valid_page($object)) { return; } $ia = elgg_set_ignore_access(true); $root_page = pages_tools_get_root_page($object); pages_tools_flush_tree_html_cache($root_page); elgg_set_ignore_access($ia); }
function pages_tools_get_root_page(ElggObject $entity) { $result = false; if (pages_tools_is_valid_page($entity)) { if (elgg_instanceof($entity, "object", "page_top")) { $result = $entity; } elseif (isset($entity->parent_guid)) { $parent = get_entity($entity->parent_guid); $result = pages_tools_get_root_page($parent); } } return $result; }
/** * Get the options_values array for the edit form parent selector * * @param ElggEntity $entity the page entity being edited * * @return false|array */ function pages_tools_get_parent_selector_options(ElggEntity $entity) { if (!pages_tools_is_valid_page($entity)) { return false; } $root_page = pages_tools_get_root_page($entity); $result = array($root_page->getGUID() => $root_page->title); $result += pages_tools_get_parent_selector_children($root_page, $entity->getGUID()); return $result; }
<?php $entity = elgg_extract('entity', $vars); if (!pages_tools_is_valid_page($entity)) { return; } $root_page = pages_tools_get_root_page($entity); $tree_data = pages_tools_get_tree_html_from_cache($root_page); if ($tree_data !== false) { echo $tree_data; return; } if (!pages_tools_register_navigation_tree($entity)) { return; } // get the navigation menu $tree_data = elgg_view_menu('pages_nav', array('class' => 'pages-nav', 'sort_by' => 'priority')); pages_tools_save_tree_html_to_cache($root_page, $tree_data); echo $tree_data;