2015-09-30 06:08:03 +00:00
< ? php
register_module ([
" name " => " Page protection " ,
2015-11-08 21:15:08 +00:00
" version " => " 0.2 " ,
2015-09-30 06:08:03 +00:00
" author " => " Starbeamrainbowlabs " ,
" description " => " Exposes Pepperminty Wiki's new page protection mechanism and makes the protect button in the 'More...' menu on the top bar work. " ,
" id " => " action-protect " ,
" code " => function () {
add_action ( " protect " , function () {
2015-11-12 09:29:16 +00:00
global $env , $pageindex , $paths , $settings ;
2015-11-08 21:15:08 +00:00
2015-09-30 06:08:03 +00:00
// Make sure that the user is logged in as an admin / mod.
if ( $env -> is_admin )
{
// They check out ok, toggle the page's protection.
$page = $env -> page ;
2015-11-08 21:15:08 +00:00
2015-09-30 06:08:03 +00:00
$toggled = false ;
if ( ! isset ( $pageindex -> $page -> protect ))
{
$pageindex -> $page -> protect = true ;
$toggled = true ;
}
2015-11-08 21:15:08 +00:00
2015-09-30 06:08:03 +00:00
if ( ! $toggled && $pageindex -> $page -> protect === true )
{
$pageindex -> $page -> protected = false ;
$toggled = false ;
}
2015-11-08 21:15:08 +00:00
2015-09-30 06:08:03 +00:00
if ( ! $toggled && $pageindex -> $page -> protect === false )
{
$pageindex -> $page -> protected = true ;
$toggled = true ;
}
2015-11-08 21:15:08 +00:00
2015-09-30 06:08:03 +00:00
// Save the pageindex
2015-11-08 21:15:08 +00:00
file_put_contents ( $paths -> pageindex , json_encode ( $pageindex , JSON_PRETTY_PRINT ));
2015-09-30 06:08:03 +00:00
$state = ( $pageindex -> $page -> protect ? " enabled " : " disabled " );
$title = " Page protection $state . " ;
2015-11-12 09:29:16 +00:00
exit ( page_renderer :: render_main ( $title , " <p>Page protection for $env->page has been $state .</p><p><a href='?action= $settings->defaultaction &page= $env->page '>Go back</a>. " ));
2015-09-30 06:08:03 +00:00
}
else
{
exit ( page_renderer :: render_main ( " Error protecting page " , " <p>You are not allowed to protect pages because you are not logged in as a mod or admin. Please try logging out if you are logged in and then try logging in as an administrator.</p> " ));
}
});
}
]);
?>