<?php
register_module([
	"name" => "Redirect pages",
	"version" => "0.3.1",
	"author" => "Starbeamrainbowlabs",
	"description" => "Adds support for redirect pages. Uses the same syntax that Mediawiki does.",
	"id" => "feature-redirect",
	"code" => function() {
		global $settings;
		
		register_save_preprocessor("update_redirect_metadata");
		
		// Register a help section
		add_help_section("25-redirect", "Redirect Pages", "<p>$settings->sitename supports redirect pages. To create a redirect page, enter something like <code># REDIRECT [[pagename]]</code> on the first line of the redirect page's content. This <em>must</em> appear as the first line of the page, with no whitespace before it. You can include content beneath the redirect if you want, too (such as a reason for redirecting the page).</p>");
	}
]);

/**
 * Updates the metadata associated with redirects in the pageindex entry
 * specified utilising the provided page content.
 * @package	redirect
 * @param	object	$index_entry	The page index entry object to update.
 * @param	string	$pagedata		The page content to operate on.
 */
function update_redirect_metadata(&$index_entry, &$pagedata) {
	$matches = [];
	if(preg_match("/^# ?REDIRECT ?\[\[([^\]]+)\]\]/i", $pagedata, $matches) === 1)
	{
		//error_log("matches: " . var_export($matches, true));
		// We have found a redirect page!
		// Update the metadata to reflect this.
		$index_entry->redirect = true;
		$index_entry->redirect_target = $matches[1];
	}
	else
	{
		// This page isn't a redirect. Unset the metadata just in case.
		if(isset($index_entry->redirect))
			unset($index_entry->redirect);
		if(isset($index_entry->redirect_target))
			unset($index_entry->redirect_target);
	}
}

?>