/** * Assembles and outputs a full page. * * A "page" in Elgg is determined by the current view type and * can be HTML for a browser, RSS for a feed reader, or * Javascript, PHP and a number of other formats. * * For HTML pages, use the 'head', 'page' plugin hook for setting meta elements * and links. * * @param string $title Title * @param string $body Body * @param string $page_shell Optional page shell to use. See page/shells view directory * @param array $vars Optional vars array to pass to the page * shell. Automatically adds title, body, head, and sysmessages * * @return string The contents of the page * @since 1.8 */ function elgg_view_page($title, $body, $page_shell = 'default', $vars = array()) { $params = array(); $params['identifier'] = _elgg_services()->request->getFirstUrlSegment(); $params['segments'] = _elgg_services()->request->getUrlSegments(); array_shift($params['segments']); $page_shell = elgg_trigger_plugin_hook('shell', 'page', $params, $page_shell); $messages = null; if (count_messages()) { // get messages - try for errors first $messages = system_messages(null, "error"); if (count($messages["error"]) == 0) { // no errors so grab rest of messages $messages = system_messages(null, ""); } else { // we have errors - clear out remaining messages system_messages(null, ""); } } $vars['title'] = $title; $vars['body'] = $body; $vars['sysmessages'] = $messages; // head has keys 'title', 'metas', 'links' $head_params = _elgg_views_prepare_head($title); $vars['head'] = elgg_trigger_plugin_hook('head', 'page', $vars, $head_params); $vars = elgg_trigger_plugin_hook('output:before', 'page', null, $vars); // check for deprecated view if ($page_shell == 'default' && elgg_view_exists('pageshells/pageshell')) { elgg_deprecated_notice("pageshells/pageshell is deprecated by page/{$page_shell}", 1.8); $output = elgg_view('pageshells/pageshell', $vars); } else { $output = elgg_view("page/{$page_shell}", $vars); } $vars['page_shell'] = $page_shell; // Allow plugins to modify the output return elgg_trigger_plugin_hook('output', 'page', $vars, $output); }
/** * Assembles and outputs a full page. * * A "page" in Elgg is determined by the current view type and * can be HTML for a browser, RSS for a feed reader, or * Javascript, PHP and a number of other formats. * * For HTML pages, use the 'head', 'page' plugin hook for setting meta elements * and links. * * @param string $title Title * @param string $body Body * @param string $page_shell Optional page shell to use. See page/shells view directory * @param array $vars Optional vars array to pass to the page * shell. Automatically adds title, body, head, and sysmessages * * @return string The contents of the page * @since 1.8 */ function elgg_view_page($title, $body, $page_shell = 'default', $vars = array()) { $params = array(); $params['identifier'] = _elgg_services()->request->getFirstUrlSegment(); $params['segments'] = _elgg_services()->request->getUrlSegments(); array_shift($params['segments']); $page_shell = elgg_trigger_plugin_hook('shell', 'page', $params, $page_shell); $system_messages = _elgg_services()->systemMessages; $messages = null; if ($system_messages->count()) { $messages = $system_messages->dumpRegister(); if (isset($messages['error'])) { // always make sure error is the first type $errors = array('error' => $messages['error']); unset($messages['error']); $messages = array_merge($errors, $messages); } } $vars['title'] = $title; $vars['body'] = $body; $vars['sysmessages'] = $messages; // head has keys 'title', 'metas', 'links' $head_params = _elgg_views_prepare_head($title); $vars['head'] = elgg_trigger_plugin_hook('head', 'page', $vars, $head_params); $vars = elgg_trigger_plugin_hook('output:before', 'page', null, $vars); $output = elgg_view("page/{$page_shell}", $vars); $vars['page_shell'] = $page_shell; // Allow plugins to modify the output return elgg_trigger_plugin_hook('output', 'page', $vars, $output); }