123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <?php
- /**
- * Pages function library
- */
- /**
- * Prepare the add/edit form variables
- *
- * @param ElggObject $page
- * @param int $parent_guid
- * @param ElggAnnotation $revision
- * @return array
- */
- function pages_prepare_form_vars($page = null, $parent_guid = 0, $revision = null) {
- // input names => defaults
- $values = array(
- 'title' => '',
- 'description' => '',
- 'access_id' => ACCESS_DEFAULT,
- 'write_access_id' => ACCESS_DEFAULT,
- 'tags' => '',
- 'container_guid' => elgg_get_page_owner_guid(),
- 'guid' => null,
- 'entity' => $page,
- 'parent_guid' => $parent_guid,
- );
- if ($page) {
- foreach (array_keys($values) as $field) {
- if (isset($page->$field)) {
- $values[$field] = $page->$field;
- }
- }
- }
- if (elgg_is_sticky_form('page')) {
- $sticky_values = elgg_get_sticky_values('page');
- foreach ($sticky_values as $key => $value) {
- $values[$key] = $value;
- }
- }
- elgg_clear_sticky_form('page');
- // load the revision annotation if requested
- if ($revision instanceof ElggAnnotation && $revision->entity_guid == $page->getGUID()) {
- $values['description'] = $revision->value;
- }
- return $values;
- }
- /**
- * Recurses the page tree and adds the breadcrumbs for all ancestors
- *
- * @param ElggObject $page Page entity
- */
- function pages_prepare_parent_breadcrumbs($page) {
- if ($page && $page->parent_guid) {
- $parents = array();
- $parent = get_entity($page->parent_guid);
- while ($parent) {
- array_push($parents, $parent);
- $parent = get_entity($parent->parent_guid);
- }
- while ($parents) {
- $parent = array_pop($parents);
- elgg_push_breadcrumb($parent->title, $parent->getURL());
- }
- }
- }
- /**
- * Produce the navigation tree
- *
- * @param ElggEntity $container Container entity for the pages
- *
- * @return array
- */
- function pages_get_navigation_tree($container) {
- if (!elgg_instanceof($container)) {
- return;
- }
- $top_pages = new ElggBatch('elgg_get_entities', array(
- 'type' => 'object',
- 'subtype' => 'page_top',
- 'container_guid' => $container->getGUID(),
- 'limit' => false,
- ));
- /* @var ElggBatch $top_pages Batch of top level pages */
- $tree = array();
- $depths = array();
- foreach ($top_pages as $page) {
- $tree[] = array(
- 'guid' => $page->getGUID(),
- 'title' => $page->title,
- 'url' => $page->getURL(),
- 'depth' => 0,
- );
- $depths[$page->guid] = 0;
- $stack = array();
- array_push($stack, $page);
- while (count($stack) > 0) {
- $parent = array_pop($stack);
- $children = new ElggBatch('elgg_get_entities_from_metadata', array(
- 'type' => 'object',
- 'subtype' => 'page',
- 'metadata_name' => 'parent_guid',
- 'metadata_value' => $parent->getGUID(),
- 'limit' => false,
- ));
- foreach ($children as $child) {
- $tree[] = array(
- 'guid' => $child->getGUID(),
- 'title' => $child->title,
- 'url' => $child->getURL(),
- 'parent_guid' => $parent->getGUID(),
- 'depth' => $depths[$parent->guid] + 1,
- );
- $depths[$child->guid] = $depths[$parent->guid] + 1;
- array_push($stack, $child);
- }
- }
- }
- return $tree;
- }
- /**
- * Register the navigation menu
- *
- * @param ElggEntity $container Container entity for the pages
- */
- function pages_register_navigation_tree($container) {
- $pages = pages_get_navigation_tree($container);
- if ($pages) {
- foreach ($pages as $page) {
- elgg_register_menu_item('pages_nav', array(
- 'name' => $page['guid'],
- 'text' => $page['title'],
- 'href' => $page['url'],
- 'parent_name' => $page['parent_guid'],
- ));
- }
- }
- }
- /**
- * Function checking delete permission
- *
- * @package ElggPages
- * @param mixed $value
- *
- * @return bool
- */
- function pages_can_delete_page($page) {
- if (! $page) {
- return false;
- } else {
- $container = get_entity($page->container_guid);
- return $container ? $container->canEdit() : false;
- }
- }
|