Pepperminty-Wiki/modules/page-view.php

93 lines
3.3 KiB
PHP
Raw Normal View History

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() {
global $pageindex, $settings, $env, $parse_page_source;
2015-09-19 09:19:56 +00:00
// Check to make sure that the page exists
$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
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);
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) &&
2015-10-03 12:29:07 +00:00
$pageindex->$page->redirect === true)
2015-10-03 11:26:46 +00:00
{
2015-10-03 12:29:07 +00:00
$send_redirect = true;
if(isset($_GET["redirect"]) && $_GET["redirect"] == "no")
$send_redirect = false;
if($send_redirect)
{
// Todo send an explanatory page along with the redirect
http_response_code(307);
2015-10-03 12:36:46 +00:00
header("location: ?action=$env->action&page=" . $pageindex->$page->redirect_target . "&redirected_from=$env->page");
2015-10-03 12:29:07 +00:00
exit();
}
2015-10-03 11:26:46 +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;
$content = "<h1>$env->page</h1>\n";
// Add an extra message if the requested was redirected from another page
if(isset($_GET["redirected_from"]))
$content .= "<p><em>Redirected from <a href='?page=" . rawurlencode($_GET["redirected_from"]) . "&redirect=no'>" . $_GET["redirected_from"] . "</a>.</em></p>";
2015-09-19 09:19:56 +00:00
$parsing_start = microtime(true);
$content .= $parse_page_source(file_get_contents("$env->page.md"));
2015-09-19 09:19:56 +00:00
if($settings->show_subpages)
{
$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));
});
}
]);
?>