Example #1
0
/**
 * 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);
}
Example #2
0
/**
 * 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);
}