PageRenderTime 41ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/mod/externalpages/start.php

https://github.com/fragilbert/Elgg
PHP | 102 lines | 60 code | 15 blank | 27 comment | 7 complexity | 5f9b93ced4076a9e92940ee57ba9f351 MD5 | raw file
Possible License(s): MIT, BSD-3-Clause, LGPL-2.1, GPL-2.0
  1. <?php
  2. /**
  3. * Plugin for creating web pages for your site
  4. */
  5. elgg_register_event_handler('init', 'system', 'expages_init');
  6. function expages_init() {
  7. // Register a page handler, so we can have nice URLs
  8. elgg_register_page_handler('about', 'expages_page_handler');
  9. elgg_register_page_handler('terms', 'expages_page_handler');
  10. elgg_register_page_handler('privacy', 'expages_page_handler');
  11. elgg_register_page_handler('expages', 'expages_page_handler');
  12. // Register public external pages
  13. elgg_register_plugin_hook_handler('public_pages', 'walled_garden', 'expages_public');
  14. // add a menu item for the admin edit page
  15. elgg_register_admin_menu_item('configure', 'expages', 'appearance');
  16. // add footer links
  17. expages_setup_footer_menu();
  18. // register action
  19. $actions_base = elgg_get_plugins_path() . 'externalpages/actions';
  20. elgg_register_action("expages/edit", "$actions_base/edit.php", 'admin');
  21. }
  22. /**
  23. * Extend the public pages range
  24. *
  25. */
  26. function expages_public($hook, $handler, $return, $params){
  27. $pages = array('about', 'terms', 'privacy');
  28. return array_merge($pages, $return);
  29. }
  30. /**
  31. * Setup the links to site pages
  32. */
  33. function expages_setup_footer_menu() {
  34. $pages = array('about', 'terms', 'privacy');
  35. foreach ($pages as $page) {
  36. $url = "$page";
  37. $wg_item = new ElggMenuItem($page, elgg_echo("expages:$page"), $url);
  38. elgg_register_menu_item('walled_garden', $wg_item);
  39. $footer_item = clone $wg_item;
  40. elgg_register_menu_item('footer', $footer_item);
  41. }
  42. }
  43. /**
  44. * External pages page handler
  45. *
  46. * @param array $page URL segements
  47. * @param string $handler Handler identifier
  48. * @return bool
  49. */
  50. function expages_page_handler($page, $handler) {
  51. if ($handler == 'expages') {
  52. expages_url_forwarder($page[1]);
  53. }
  54. $type = strtolower($handler);
  55. $title = elgg_echo("expages:$type");
  56. $content = elgg_view_title($title);
  57. $object = elgg_get_entities(array(
  58. 'type' => 'object',
  59. 'subtype' => $type,
  60. 'limit' => 1,
  61. ));
  62. if ($object) {
  63. $content .= elgg_view('output/longtext', array('value' => $object[0]->description));
  64. } else {
  65. $content .= elgg_echo("expages:notset");
  66. }
  67. $content = elgg_view('expages/wrapper', array('content' => $content));
  68. if (elgg_is_logged_in() || !elgg_get_config('walled_garden')) {
  69. $body = elgg_view_layout('one_sidebar', array('content' => $content));
  70. echo elgg_view_page($title, $body);
  71. } else {
  72. elgg_load_css('elgg.walled_garden');
  73. $body = elgg_view_layout('walled_garden', array('content' => $content));
  74. echo elgg_view_page($title, $body, 'walled_garden');
  75. }
  76. return true;
  77. }
  78. /**
  79. * Forward to the new style of URLs
  80. *
  81. * @param string $page
  82. */
  83. function expages_url_forwarder($page) {
  84. global $CONFIG;
  85. $url = "{$CONFIG->wwwroot}{$page}";
  86. forward($url);
  87. }