114 lines
2.8 KiB
PHP
114 lines
2.8 KiB
PHP
|
<?php
|
||
|
|
||
|
define('page_template',
|
||
|
'<html>
|
||
|
<head>
|
||
|
<meta http-equiv="cache-control" content="no-cache"/>
|
||
|
<meta http-equiv="pragma" content="no-cache"/>
|
||
|
<title>%s</title>
|
||
|
%s
|
||
|
</head>
|
||
|
<body>
|
||
|
%s
|
||
|
<div id="content">
|
||
|
<h1>%s</h1>
|
||
|
%s
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>');
|
||
|
|
||
|
define('logged_in_pat', 'You are logged in as %s (URL: %s)');
|
||
|
|
||
|
/**
|
||
|
* HTTP response line contstants
|
||
|
*/
|
||
|
define('http_bad_request', 'HTTP/1.1 400 Bad Request');
|
||
|
define('http_found', 'HTTP/1.1 302 Found');
|
||
|
define('http_ok', 'HTTP/1.1 200 OK');
|
||
|
define('http_internal_error', 'HTTP/1.1 500 Internal Error');
|
||
|
|
||
|
/**
|
||
|
* HTTP header constants
|
||
|
*/
|
||
|
define('header_connection_close', 'Connection: close');
|
||
|
define('header_content_text', 'Content-Type: text/plain; charset=us-ascii');
|
||
|
|
||
|
define('redirect_message',
|
||
|
'Please wait; you are being redirected to <%s>');
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Return a string containing an anchor tag containing the given URL
|
||
|
*
|
||
|
* The URL does not need to be quoted, but if text is passed in, then
|
||
|
* it does.
|
||
|
*/
|
||
|
function link_render($url, $text=null) {
|
||
|
$esc_url = htmlspecialchars($url, ENT_QUOTES);
|
||
|
$text = ($text === null) ? $esc_url : $text;
|
||
|
return sprintf('<a href="%s">%s</a>', $esc_url, $text);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return an HTTP redirect response
|
||
|
*/
|
||
|
function redirect_render($redir_url)
|
||
|
{
|
||
|
$headers = array(http_found,
|
||
|
header_content_text,
|
||
|
header_connection_close,
|
||
|
'Location: ' . $redir_url,
|
||
|
);
|
||
|
$body = sprintf(redirect_message, $redir_url);
|
||
|
return array($headers, $body);
|
||
|
}
|
||
|
|
||
|
function navigation_render($msg, $items)
|
||
|
{
|
||
|
$what = link_render(buildURL(), 'PHP OpenID Server');
|
||
|
if ($msg) {
|
||
|
$what .= ' — ' . $msg;
|
||
|
}
|
||
|
if ($items) {
|
||
|
$s = '<p>' . $what . '</p><ul class="bottom">';
|
||
|
foreach ($items as $action => $text) {
|
||
|
$url = buildURL($action);
|
||
|
$s .= sprintf('<li>%s</li>', link_render($url, $text));
|
||
|
}
|
||
|
$s .= '</ul>';
|
||
|
} else {
|
||
|
$s = '<p class="bottom">' . $what . '</p>';
|
||
|
}
|
||
|
return sprintf('<div class="navigation">%s</div>', $s);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Render an HTML page
|
||
|
*/
|
||
|
function page_render($body, $user, $title, $h1=null, $login=false)
|
||
|
{
|
||
|
$h1 = $h1 ? $h1 : $title;
|
||
|
|
||
|
if ($user) {
|
||
|
$msg = sprintf(logged_in_pat, link_render(idURL($user), $user),
|
||
|
link_render(idURL($user)));
|
||
|
$nav = array('logout' => 'Log Out');
|
||
|
|
||
|
$navigation = navigation_render($msg, $nav);
|
||
|
} else {
|
||
|
if (!$login) {
|
||
|
$msg = link_render(buildURL('login'), 'Log In');
|
||
|
$navigation = navigation_render($msg, array());
|
||
|
} else {
|
||
|
$navigation = '';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$style = getStyle();
|
||
|
$text = sprintf(page_template, $title, $style, $navigation, $h1, $body);
|
||
|
// No special headers here
|
||
|
$headers = array();
|
||
|
return array($headers, $text);
|
||
|
}
|
||
|
|
||
|
?>
|