From 0759c227bf7b73254cf6eb5e8502463875f2469f Mon Sep 17 00:00:00 2001 From: cash Date: Fri, 4 Nov 2011 23:29:54 -0400 Subject: Fixes #4059 returning true when handling a page --- engine/lib/admin.php | 9 ++++++--- engine/lib/cron.php | 3 ++- engine/lib/elgglib.php | 15 +++++++++------ engine/lib/entities.php | 4 +++- engine/lib/pagehandler.php | 6 ++++-- engine/lib/river.php | 3 ++- engine/lib/tags.php | 3 ++- engine/lib/user_settings.php | 3 ++- engine/lib/users.php | 30 ++++++++++++++++++++++-------- mod/blog/start.php | 13 +++++++------ mod/bookmarks/start.php | 6 +++++- mod/categories/start.php | 3 ++- mod/dashboard/start.php | 3 ++- mod/developers/start.php | 3 ++- mod/externalpages/start.php | 3 ++- mod/file/start.php | 5 ++++- mod/groups/start.php | 10 ++++++++-- mod/invitefriends/start.php | 3 ++- mod/members/start.php | 3 ++- mod/messageboard/start.php | 6 +++++- mod/messages/start.php | 5 ++++- mod/notifications/start.php | 5 ++++- mod/pages/start.php | 5 ++++- mod/profile/start.php | 3 ++- mod/reportedcontent/start.php | 3 ++- mod/search/start.php | 3 ++- mod/thewire/start.php | 6 +++++- mod/twitter_api/start.php | 9 ++++++--- mod/uservalidationbyemail/start.php | 2 +- 29 files changed, 123 insertions(+), 52 deletions(-) diff --git a/engine/lib/admin.php b/engine/lib/admin.php index c0a5c0995..3baf2ff61 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -427,7 +427,7 @@ function admin_pagesetup() { * * @param array $page Array of pages * - * @return void + * @return bool * @access private */ function admin_page_handler($page) { @@ -478,6 +478,7 @@ function admin_page_handler($page) { $body = elgg_view_layout('admin', array('content' => $content, 'title' => $title)); echo elgg_view_page($title, $body, 'admin'); + return true; } /** @@ -485,7 +486,7 @@ function admin_page_handler($page) { * admin_plugin_screenshot///. * * @param array $pages The pages array - * @return void + * @return bool * @access private */ function admin_plugin_screenshot_page_handler($pages) { @@ -524,6 +525,7 @@ function admin_plugin_screenshot_page_handler($pages) { echo file_get_contents($file); break; } + return true; } /** @@ -539,7 +541,7 @@ function admin_plugin_screenshot_page_handler($pages) { * * LICENSE.txt * * @param type $page - * @return void + * @return bool * @access private */ function admin_markdown_page_handler($pages) { @@ -595,6 +597,7 @@ function admin_markdown_page_handler($pages) { )); echo elgg_view_page($title, $body, 'admin'); + return true; } /** diff --git a/engine/lib/cron.php b/engine/lib/cron.php index 8c0b62a53..8af640396 100644 --- a/engine/lib/cron.php +++ b/engine/lib/cron.php @@ -25,7 +25,7 @@ function cron_init() { * * @param array $page Pages * - * @return void + * @return bool * @access private */ function cron_page_handler($page) { @@ -63,6 +63,7 @@ function cron_page_handler($page) { $std_out = ob_get_clean(); echo $std_out . $old_stdout; + return true; } /** diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 03774deb4..10804fdca 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -1740,12 +1740,12 @@ function _elgg_shutdown_hook() { * * @param array $page The page array * - * @return void + * @return bool * @elgg_pagehandler js * @access private */ function elgg_js_page_handler($page) { - elgg_cacheable_view_page_handler($page, 'js'); + return elgg_cacheable_view_page_handler($page, 'js'); } /** @@ -1755,7 +1755,7 @@ function elgg_js_page_handler($page) { * * @param array $page The page array * - * @return void + * @return bool * @elgg_pagehandler ajax * @access private */ @@ -1776,7 +1776,9 @@ function elgg_ajax_page_handler($page) { } echo elgg_view($view, $vars); + return true; } + return false; } /** @@ -1796,7 +1798,7 @@ function elgg_css_page_handler($page) { $page[0] = 'elgg'; } - elgg_cacheable_view_page_handler($page, 'css'); + return elgg_cacheable_view_page_handler($page, 'css'); } /** @@ -1807,7 +1809,7 @@ function elgg_css_page_handler($page) { * @param array $page The page array * @param string $type The type: js or css * - * @return void + * @return bool * @access private */ function elgg_cacheable_view_page_handler($page, $type) { @@ -1822,7 +1824,7 @@ function elgg_cacheable_view_page_handler($page, $type) { break; default: - return; + return false; break; } @@ -1848,6 +1850,7 @@ function elgg_cacheable_view_page_handler($page, $type) { //header("Content-Length: " . strlen($return)); echo $return; + return true; } } diff --git a/engine/lib/entities.php b/engine/lib/entities.php index 98e48641a..4b8b6694f 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -2071,7 +2071,7 @@ function is_registered_entity_type($type, $subtype = null) { * * @param array $page Page elements from pain page handler * - * @return void + * @return bool * @elgg_page_handler view * @access private */ @@ -2080,7 +2080,9 @@ function entities_page_handler($page) { global $CONFIG; set_input('guid', $page[0]); include($CONFIG->path . "pages/entities/index.php"); + return true; } + return false; } /** diff --git a/engine/lib/pagehandler.php b/engine/lib/pagehandler.php index 91e568c1d..f331e2aae 100644 --- a/engine/lib/pagehandler.php +++ b/engine/lib/pagehandler.php @@ -40,12 +40,13 @@ function page_handler($handler, $page) { $handler = $params['handler']; $page = $params['segments']; + $result = false; if (isset($CONFIG->pagehandler) && !empty($handler) && isset($CONFIG->pagehandler[$handler])) { $function = $CONFIG->pagehandler[$handler]; - call_user_func($function, $page, $handler); + $result = call_user_func($function, $page, $handler); } - return headers_sent(); + return $result || headers_sent(); } /** @@ -64,6 +65,7 @@ function page_handler($handler, $page) { * The context is set to the page handler identifier before the registered * page handler function is called. For the above example, the context is set to 'blog'. * + * Page handlers should return true to indicate that they handled the request. * Requests not handled are forwarded to the front page with a reason of 404. * Plugins can register for the 'forward', '404' plugin hook. @see forward() * diff --git a/engine/lib/river.php b/engine/lib/river.php index b2fead824..466eca253 100644 --- a/engine/lib/river.php +++ b/engine/lib/river.php @@ -586,7 +586,7 @@ function update_river_access_by_object($object_guid, $access_id) { * Page handler for activiy * * @param array $page - * @return void + * @return bool * @access private */ function elgg_river_page_handler($page) { @@ -607,6 +607,7 @@ function elgg_river_page_handler($page) { $entity_subtype = ''; require_once("{$CONFIG->path}pages/river.php"); + return true; } /** diff --git a/engine/lib/tags.php b/engine/lib/tags.php index b2c9a672f..a0887d0f3 100644 --- a/engine/lib/tags.php +++ b/engine/lib/tags.php @@ -321,7 +321,7 @@ function elgg_get_registered_tag_metadata_names() { * * @param array $page Page array * - * @return void + * @return bool * @access private */ function elgg_tagcloud_page_handler($page) { @@ -337,6 +337,7 @@ function elgg_tagcloud_page_handler($page) { $body = elgg_view_layout('one_sidebar', array('content' => $content)); echo elgg_view_page(elgg_echo('tags:site_cloud'), $body); + return true; } /** diff --git a/engine/lib/user_settings.php b/engine/lib/user_settings.php index 12084662b..1e2d6db10 100644 --- a/engine/lib/user_settings.php +++ b/engine/lib/user_settings.php @@ -294,7 +294,7 @@ function usersettings_pagesetup() { * * @param array $page Pages array * - * @return void + * @return bool * @access private */ function usersettings_page_handler($page) { @@ -330,6 +330,7 @@ function usersettings_page_handler($page) { if (isset($path)) { require $path; + return true; } } diff --git a/engine/lib/users.php b/engine/lib/users.php index 3001a2ac6..3aff2ca9d 100644 --- a/engine/lib/users.php +++ b/engine/lib/users.php @@ -1048,7 +1048,7 @@ function collections_submenu_items() { * * @param array $page_elements Page elements * - * @return void + * @return bool * @access private */ function friends_page_handler($page_elements) { @@ -1059,6 +1059,7 @@ function friends_page_handler($page_elements) { collections_submenu_items(); } require_once(dirname(dirname(dirname(__FILE__))) . "/pages/friends/index.php"); + return true; } /** @@ -1066,7 +1067,7 @@ function friends_page_handler($page_elements) { * * @param array $page_elements Page elements * - * @return void + * @return bool * @access private */ function friends_of_page_handler($page_elements) { @@ -1078,6 +1079,7 @@ function friends_of_page_handler($page_elements) { collections_submenu_items(); } require_once(dirname(dirname(dirname(__FILE__))) . "/pages/friends/of.php"); + return true; } /** @@ -1085,7 +1087,7 @@ function friends_of_page_handler($page_elements) { * * @param array $page_elements Page elements * - * @return void + * @return bool * @access private */ function collections_page_handler($page_elements) { @@ -1096,6 +1098,7 @@ function collections_page_handler($page_elements) { set_page_owner(elgg_get_logged_in_user_guid()); collections_submenu_items(); require_once "{$base}pages/friends/collections/add.php"; + return true; } else { $user = get_user_by_username($page_elements[0]); if ($user) { @@ -1104,9 +1107,11 @@ function collections_page_handler($page_elements) { collections_submenu_items(); } require_once "{$base}pages/friends/collections/view.php"; + return true; } } } + return false; } /** @@ -1115,7 +1120,7 @@ function collections_page_handler($page_elements) { * @param array $page_elements Page elements * @param string $handler The handler string * - * @return void + * @return bool * @access private */ function elgg_user_account_page_handler($page_elements, $handler) { @@ -1131,7 +1136,10 @@ function elgg_user_account_page_handler($page_elements, $handler) { case 'register': require_once("$base_dir/register.php"); break; + default: + return false; } + return true; } /** @@ -1140,17 +1148,18 @@ function elgg_user_account_page_handler($page_elements, $handler) { * This is a fallback for non-JS users who click on the * dropdown login link. * - * @return void + * @return bool * @access private */ function elgg_user_login_page_handler() { if (elgg_is_logged_in()) { - forward(); + forward(''); } $login_box = elgg_view('core/account/login_box'); $content = elgg_view_layout('one_column', array('content' => $login_box)); echo elgg_view_page(elgg_echo('login'), $content); + return true; } /** @@ -1404,7 +1413,7 @@ function elgg_profile_fields_setup() { * /avatar/view/// * * @param array $page - * @return void + * @return bool * @access private */ function elgg_avatar_page_handler($page) { @@ -1417,17 +1426,20 @@ function elgg_avatar_page_handler($page) { if ($page[0] == 'edit') { require_once("{$CONFIG->path}pages/avatar/edit.php"); + return true; } else { set_input('size', $page[2]); require_once("{$CONFIG->path}pages/avatar/view.php"); + return true; } + return false; } /** * Profile page handler * * @param array $page - * @return void + * @return bool * @access private */ function elgg_profile_page_handler($page) { @@ -1438,7 +1450,9 @@ function elgg_profile_page_handler($page) { if ($page[1] == 'edit') { require_once("{$CONFIG->path}pages/profile/edit.php"); + return true; } + return false; } /** diff --git a/mod/blog/start.php b/mod/blog/start.php index b2da00bc7..052c63651 100644 --- a/mod/blog/start.php +++ b/mod/blog/start.php @@ -93,7 +93,7 @@ function blog_init() { * @todo no archives for all blogs or friends * * @param array $page - * @return void + * @return bool */ function blog_page_handler($page) { @@ -141,15 +141,16 @@ function blog_page_handler($page) { case 'all': $params = blog_get_page_content_list(); break; + default: + return false; } - if (isset($params)) { - $params['sidebar'] .= elgg_view('blog/sidebar', array('page' => $page_type)); + $params['sidebar'] .= elgg_view('blog/sidebar', array('page' => $page_type)); - $body = elgg_view_layout('content', $params); + $body = elgg_view_layout('content', $params); - echo elgg_view_page($params['title'], $body); - } + echo elgg_view_page($params['title'], $body); + return true; } /** diff --git a/mod/bookmarks/start.php b/mod/bookmarks/start.php index 6d9dc9b3d..21a2d8940 100644 --- a/mod/bookmarks/start.php +++ b/mod/bookmarks/start.php @@ -83,7 +83,7 @@ function bookmarks_init() { * Title is ignored * * @param array $page - * @return void + * @return bool */ function bookmarks_page_handler($page) { elgg_load_library('elgg:bookmarks'); @@ -146,9 +146,13 @@ function bookmarks_page_handler($page) { set_input('container_guid', $page[1]); include "$pages/bookmarklet.php"; break; + + default: + return false; } elgg_pop_context(); + return true; } /** diff --git a/mod/categories/start.php b/mod/categories/start.php index 3cec516f1..0aacf11e7 100644 --- a/mod/categories/start.php +++ b/mod/categories/start.php @@ -28,10 +28,11 @@ function categories_init() { /** * Category page handler - * @return void + * @return bool */ function categories_page_handler() { include(dirname(__FILE__) . "/pages/categories/listing.php"); + return true; } /** diff --git a/mod/dashboard/start.php b/mod/dashboard/start.php index 0197ee64f..65007d1a8 100644 --- a/mod/dashboard/start.php +++ b/mod/dashboard/start.php @@ -31,7 +31,7 @@ function dashboard_init() { /** * Dashboard page handler - * @return void + * @return bool */ function dashboard_page_handler() { // Ensure that only logged-in users can see this page @@ -55,6 +55,7 @@ function dashboard_page_handler() { $body = elgg_view_layout('one_column', array('content' => $widgets)); echo elgg_view_page($title, $body); + return true; } diff --git a/mod/developers/start.php b/mod/developers/start.php index c89e3d36f..2e3df7663 100644 --- a/mod/developers/start.php +++ b/mod/developers/start.php @@ -157,7 +157,7 @@ function developers_log_events($name, $type) { * Serve the theme preview pages * * @param array $page - * @return void + * @return bool */ function developers_theme_preview_controller($page) { if (!isset($page[0])) { @@ -192,4 +192,5 @@ function developers_theme_preview_controller($page) { )); echo elgg_view_page($title, $layout, 'theme_preview'); + return true; } diff --git a/mod/externalpages/start.php b/mod/externalpages/start.php index 271051ba9..13235af53 100644 --- a/mod/externalpages/start.php +++ b/mod/externalpages/start.php @@ -53,7 +53,7 @@ function expages_setup_footer_menu() { * * @param array $page URL segements * @param string $handler Handler identifier - * @return void + * @return bool */ function expages_page_handler($page, $handler) { if ($handler == 'expages') { @@ -77,6 +77,7 @@ function expages_page_handler($page, $handler) { $body = elgg_view_layout("one_sidebar", array('content' => $content)); echo elgg_view_page($title, $body); + return true; } /** diff --git a/mod/file/start.php b/mod/file/start.php index bb20fc7ba..f8b7fa423 100644 --- a/mod/file/start.php +++ b/mod/file/start.php @@ -100,7 +100,7 @@ function file_init() { * Title is ignored * * @param array $page - * @return void + * @return bool */ function file_page_handler($page) { @@ -138,7 +138,10 @@ function file_page_handler($page) { case 'all': include "$file_dir/world.php"; break; + default: + return false; } + return true; } /** diff --git a/mod/groups/start.php b/mod/groups/start.php index 710ccc0b2..5469da013 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -192,7 +192,7 @@ function groups_setup_sidebar_menus() { * Group members: groups/members/ * * @param array $page Array of url segments for routing - * @return void + * @return bool */ function groups_page_handler($page) { @@ -239,7 +239,10 @@ function groups_page_handler($page) { case 'requests': groups_handle_requests_page($page[1]); break; + default: + return false; } + return true; } /** @@ -752,7 +755,7 @@ function discussion_init() { * Edit discussion topic: discussion/edit/ * * @param array $page Array of url segments for routing - * @return void + * @return bool */ function discussion_page_handler($page) { @@ -776,7 +779,10 @@ function discussion_page_handler($page) { case 'view': discussion_handle_view_page($page[1]); break; + default: + return false; } + return true; } /** diff --git a/mod/invitefriends/start.php b/mod/invitefriends/start.php index 61cfed96c..be853f2ce 100644 --- a/mod/invitefriends/start.php +++ b/mod/invitefriends/start.php @@ -27,7 +27,7 @@ function invitefriends_init() { * Page handler function * * @param array $page Page URL segments - * @return void + * @return bool */ function invitefriends_page_handler($page) { gatekeeper(); @@ -46,4 +46,5 @@ function invitefriends_page_handler($page) { $body = elgg_view_layout('one_sidebar', $params); echo elgg_view_page($title, $body); + return true; } diff --git a/mod/members/start.php b/mod/members/start.php index 1d734da17..54787cd16 100644 --- a/mod/members/start.php +++ b/mod/members/start.php @@ -19,7 +19,7 @@ function members_init() { * Members page handler * * @param array $page url segments - * @return void + * @return bool */ function members_page_handler($page) { $base = elgg_get_plugins_path() . 'members/pages/members'; @@ -37,4 +37,5 @@ function members_page_handler($page) { } else { require_once "$base/index.php"; } + return true; } diff --git a/mod/messageboard/start.php b/mod/messageboard/start.php index 9db16cf3b..0c65edc4f 100644 --- a/mod/messageboard/start.php +++ b/mod/messageboard/start.php @@ -42,7 +42,7 @@ function messageboard_init() { * Group messageboard: messageboard/group//all (not implemented) * * @param array $page Array of page elements - * @return void + * @return bool */ function messageboard_page_handler($page) { $new_section_one = array('owner', 'add', 'group'); @@ -84,7 +84,11 @@ function messageboard_page_handler($page) { set_input('page_owner_guid', $owner_guid); include "$pages/owner.php"; break; + + default: + return false; } + return true; } /** diff --git a/mod/messages/start.php b/mod/messages/start.php index 631a5f731..e4ef4d43a 100644 --- a/mod/messages/start.php +++ b/mod/messages/start.php @@ -70,7 +70,7 @@ function messages_init() { * Messages page handler * * @param array $page Array of URL components for routing - * @return void + * @return bool */ function messages_page_handler($page) { @@ -112,7 +112,10 @@ function messages_page_handler($page) { case 'add': include("$base_dir/send.php"); break; + default: + return false; } + return true; } /** diff --git a/mod/notifications/start.php b/mod/notifications/start.php index 7ec82cfc9..761f17e40 100644 --- a/mod/notifications/start.php +++ b/mod/notifications/start.php @@ -36,7 +36,7 @@ function notifications_plugin_init() { * Route page requests * * @param array $page Array of url parameters - * @return void + * @return bool */ function notifications_page_handler($page) { @@ -54,7 +54,10 @@ function notifications_page_handler($page) { case 'personal': require "$base/index.php"; break; + default: + return false; } + return true; } /** diff --git a/mod/pages/start.php b/mod/pages/start.php index fd1d7df47..b2f26c719 100644 --- a/mod/pages/start.php +++ b/mod/pages/start.php @@ -100,7 +100,7 @@ function pages_init() { * Title is ignored * * @param array $page - * @return void + * @return bool */ function pages_page_handler($page) { @@ -152,7 +152,10 @@ function pages_page_handler($page) { case 'all': include "$base_dir/world.php"; break; + default: + return false; } + return true; } /** diff --git a/mod/profile/start.php b/mod/profile/start.php index 1c82d55f5..0ee2d0152 100644 --- a/mod/profile/start.php +++ b/mod/profile/start.php @@ -48,7 +48,7 @@ function profile_init() { * Profile page handler * * @param array $page Array of URL segments passed by the page handling mechanism - * @return void + * @return bool */ function profile_page_handler($page) { @@ -85,6 +85,7 @@ function profile_page_handler($page) { $body = elgg_view_layout('one_column', array('content' => $content)); echo elgg_view_page($title, $body); + return true; } /** diff --git a/mod/reportedcontent/start.php b/mod/reportedcontent/start.php index 0638feb52..8b18a4d64 100644 --- a/mod/reportedcontent/start.php +++ b/mod/reportedcontent/start.php @@ -60,7 +60,7 @@ function reportedcontent_init() { * Serves the add report page * * @param array $page Array of page routing elements - * @return void + * @return bool */ function reportedcontent_page_handler($page) { // only logged in users can report things @@ -77,6 +77,7 @@ function reportedcontent_page_handler($page) { $body = elgg_view_layout('one_sidebar', $params); echo elgg_view_page(elgg_echo('reportedcontent:this'), $body); + return true; } /** diff --git a/mod/search/start.php b/mod/search/start.php index a88c6ec03..73a96dc0a 100644 --- a/mod/search/start.php +++ b/mod/search/start.php @@ -56,7 +56,7 @@ function search_init() { * Page handler for search * * @param array $page Page elements from core page handler - * @return void + * @return bool */ function search_page_handler($page) { @@ -72,6 +72,7 @@ function search_page_handler($page) { $base_dir = elgg_get_plugins_path() . 'search/pages/search'; include_once("$base_dir/index.php"); + return true; } /** diff --git a/mod/thewire/start.php b/mod/thewire/start.php index f46d9ec75..2ed0f0b4d 100644 --- a/mod/thewire/start.php +++ b/mod/thewire/start.php @@ -84,7 +84,7 @@ function thewire_init() { * thewire/tag/ View wire posts tagged with * * @param array $page From the page_handler function - * @return void + * @return bool */ function thewire_page_handler($page) { @@ -134,7 +134,11 @@ function thewire_page_handler($page) { } include "$base_dir/previous.php"; break; + + default: + return false; } + return true; } /** diff --git a/mod/twitter_api/start.php b/mod/twitter_api/start.php index fd2ff6493..08bce5479 100644 --- a/mod/twitter_api/start.php +++ b/mod/twitter_api/start.php @@ -45,14 +45,14 @@ function twitter_api_init() { * Handles old pg/twitterservice/ handler * * @param array $page - * @return void + * @return bool */ function twitter_api_pagehandler_deprecated($page) { $url = elgg_get_site_url() . 'pg/twitter_api/authorize'; $msg = elgg_echo('twitter_api:deprecated_callback_url', array($url)); register_error($msg); - twitter_api_pagehandler($page); + return twitter_api_pagehandler($page); } @@ -64,7 +64,7 @@ function twitter_api_pagehandler_deprecated($page) { */ function twitter_api_pagehandler($page) { if (!isset($page[0])) { - return; + return false; } switch ($page[0]) { @@ -92,7 +92,10 @@ function twitter_api_pagehandler($page) { $pages = dirname(__FILE__) . '/pages/twitter_api'; include "$pages/interstitial.php"; break; + default: + return false; } + return true; } /** diff --git a/mod/uservalidationbyemail/start.php b/mod/uservalidationbyemail/start.php index a674511cf..6904ce9e2 100644 --- a/mod/uservalidationbyemail/start.php +++ b/mod/uservalidationbyemail/start.php @@ -149,7 +149,7 @@ function uservalidationbyemail_check_auth_attempt($credentials) { * Checks sent passed validation code and user guids and validates the user. * * @param array $page - * @return void + * @return bool */ function uservalidationbyemail_page_handler($page) { -- cgit v1.2.3