2015-09-19 09:19:56 +00:00
< ? php
register_module ([
" name " => " Page viewer " ,
2015-09-30 06:08:03 +00:00
" version " => " 0.10 " ,
2015-09-19 09:19:56 +00:00
" author " => " Starbeamrainbowlabs " ,
2015-09-30 06:08:03 +00:00
" description " => " Allows you to view pages. You reallyshould include this one. " ,
2015-09-19 09:19:56 +00:00
" id " => " page-view " ,
" code " => function () {
add_action ( " view " , function () {
2015-09-22 13:34:18 +00:00
global $pageindex , $settings , $env , $parse_page_source ;
2015-09-19 09:19:56 +00:00
// Check to make sure that the page exists
2015-09-22 13:34:18 +00:00
$page = $env -> page ;
2015-09-19 09:19:56 +00:00
if ( ! isset ( $pageindex -> $page ))
{
// todo make this intelligent so we only redirect if the user is acutally able to create the page
if ( $settings -> editing )
{
// Editing is enabled, redirect to the editing page
http_response_code ( 307 ); // Temporary redirect
2015-09-22 13:34:18 +00:00
header ( " location: index.php?action=edit&newpage=yes&page= " . rawurlencode ( $env -> page ));
2015-09-19 09:19:56 +00:00
exit ();
}
else
{
// Editing is disabled, show an error message
http_response_code ( 404 );
2015-09-22 13:34:18 +00:00
exit ( page_renderer :: render_main ( " $env->page - 404 - $settings->sitename " , " <p> $env->page does not exist.</p><p>Since editing is currently disabled on this wiki, you may not create this page. If you feel that this page should exist, try contacting this wiki's Administrator.</p> " ));
2015-09-19 09:19:56 +00:00
}
}
2015-10-03 11:26:46 +00:00
// Perform a redirect if the requested page is a redirect page
if ( isset ( $pageindex -> $page -> redirect ) &&
$pageindex -> $page -> redirect === true &&
( // Make sure that the redirect GET paramter isn'tset to 'no'
isset ( $_GET [ " redirect " ]) &&
$_GET [ " redirect " ] !== " no "
))
{
// Todo send an explanatory page along with the redirect
http_response_code ( 307 );
header ( " location: ?action=view&page= " . $pageindex -> $page -> redirect_target . " &redirected_from= $env->page " );
exit ();
}
2015-09-22 13:34:18 +00:00
$title = " $env->page - $settings->sitename " ;
2015-09-30 06:08:03 +00:00
if ( isset ( $pageindex -> $page -> protect ) && $pageindex -> $page -> protect === true )
$title = $settings -> protectedpagechar . $title ;
2015-09-22 13:34:18 +00:00
$content = " <h1> $env->page </h1> " ;
2015-09-19 09:19:56 +00:00
$parsing_start = microtime ( true );
2015-09-22 13:34:18 +00:00
$content .= $parse_page_source ( file_get_contents ( " $env->page .md " ));
2015-09-19 09:19:56 +00:00
if ( $settings -> show_subpages )
{
2015-09-22 13:34:18 +00:00
$subpages = get_object_vars ( get_subpages ( $pageindex , $env -> page ));
2015-09-19 09:19:56 +00:00
if ( count ( $subpages ) > 0 )
{
$content .= " <hr /> " ;
$content .= " Subpages: " ;
foreach ( $subpages as $subpage => $times_removed )
{
if ( $times_removed <= $settings -> subpages_display_depth )
{
$content .= " <a href='?action=view&page= " . rawurlencode ( $subpage ) . " '> $subpage </a>, " ;
}
}
// Remove the last comma from the content
$content = substr ( $content , 0 , - 2 );
}
}
$content .= " \n \t \t <!-- Took " . ( microtime ( true ) - $parsing_start ) . " seconds to parse page source --> \n " ;
if ( isset ( $_GET [ " printable " ]) and $_GET [ " printable " ] === " yes " )
exit ( page_renderer :: render_minimal ( $title , $content ));
else
exit ( page_renderer :: render_main ( $title , $content ));
});
}
]);
?>