2015-09-19 09:19:56 +00:00
< ? php
register_module ([
" name " => " Page mover " ,
2015-10-25 11:02:55 +00:00
" version " => " 0.7 " ,
2015-09-19 09:19:56 +00:00
" author " => " Starbeamrainbowlabs " ,
" description " => " Adds an action to allow administrators to move pages. " ,
" id " => " page-move " ,
" code " => function () {
add_action ( " move " , function () {
2015-09-22 13:34:18 +00:00
global $pageindex , $settings , $env ;
2015-09-19 09:19:56 +00:00
if ( ! $settings -> editing )
{
2015-09-22 13:34:18 +00:00
exit ( page_renderer :: render_main ( " Moving $env->page - error " , " <p>You tried to move $env->page , but editing is disabled on this wiki.</p>
2015-09-19 09:19:56 +00:00
< p > If you wish to move this page , please re - enable editing on this wiki first .</ p >
2015-09-22 13:34:18 +00:00
< p >< a href = 'index.php?page=$env->page' > Go back to $env -> page </ a >.</ p >
2015-09-19 09:19:56 +00:00
< p > Nothing has been changed .</ p > " ));
}
2015-09-22 13:34:18 +00:00
if ( ! $env -> is_admin )
2015-09-19 09:19:56 +00:00
{
2015-09-22 13:34:18 +00:00
exit ( page_renderer :: render_main ( " Moving $env->page - Error " , " <p>You tried to move $env->page , but you do not have permission to do that.</p>
2015-09-19 09:19:56 +00:00
< p > You should try < a href = 'index.php?action=login' > logging in </ a > as an admin .</ p > " ));
}
if ( ! isset ( $_GET [ " new_name " ]) or strlen ( $_GET [ " new_name " ]) == 0 )
2015-09-22 13:34:18 +00:00
exit ( page_renderer :: render_main ( " Moving $env->page " , " <h2>Moving $env->page </h2>
2015-09-19 09:19:56 +00:00
< form method = 'get' action = 'index.php' >
< input type = 'hidden' name = 'action' value = 'move' />
< label for = 'old_name' > Old Name :</ label >
2015-09-22 13:34:18 +00:00
< input type = 'text' name = 'page' value = '$env->page' readonly />
2015-09-19 09:19:56 +00:00
< br />
< label for = 'new_name' > New Name :</ label >
< input type = 'text' name = 'new_name' />
< br />
< input type = 'submit' value = 'Move Page' />
</ form > " ));
$new_name = makepathsafe ( $_GET [ " new_name " ]);
2015-09-22 13:34:18 +00:00
$page = $env -> page ;
2015-09-19 09:19:56 +00:00
if ( ! isset ( $pageindex -> $page ))
2015-09-22 13:34:18 +00:00
exit ( page_renderer :: render_main ( " Moving $env->page - Error " , " <p>You tried to move $env->page to $new_name , but the page with the name $env->page does not exist in the first place.</p>
2015-09-19 09:19:56 +00:00
< p > Nothing has been changed .</ p > " ));
2015-09-22 13:34:18 +00:00
if ( $env -> page == $new_name )
exit ( page_renderer :: render_main ( " Moving $env->page - Error " , " <p>You tried to move $page , but the new name you gave is the same as it's current name.</p>
2015-09-19 09:19:56 +00:00
< p > It is possible that you tried to use some characters in the new name that are not allowed and were removed .</ p >
< p > Page names may only contain alphanumeric characters , dashes , and underscores .</ p > " ));
//move the page in the page index
$pageindex -> $new_name = new stdClass ();
foreach ( $pageindex -> $page as $key => $value )
{
$pageindex -> $new_name -> $key = $value ;
}
unset ( $pageindex -> $page );
2015-10-25 11:09:26 +00:00
$pageindex -> $new_name -> filename = $new_name ;
2015-10-25 11:02:20 +00:00
// If this page has an associated file, then we should move that too
2015-10-25 11:11:41 +00:00
if ( ! empty ( $pageindex -> $new_name -> uploadedfile ))
2015-10-25 11:02:20 +00:00
{
2015-10-25 11:09:26 +00:00
// Update the filepath to point to the description and not the image
$pageindex -> $new_name -> filename = $pageindex -> $new_name -> filename . " .md " ;
2015-10-25 11:02:20 +00:00
// Move the file in the pageindex
$pageindex -> $new_name -> uploadedfilepath = $new_name ;
// Move the file on disk
2015-11-08 21:15:08 +00:00
rename ( $env -> storage_prefix . $env -> page , $env -> storage_prefix . $new_name );
2015-10-25 11:02:20 +00:00
}
2015-09-19 09:19:56 +00:00
file_put_contents ( " ./pageindex.json " , json_encode ( $pageindex , JSON_PRETTY_PRINT ));
//move the page on the disk
2015-11-08 21:15:08 +00:00
rename ( " $env->storage_prefix $env->page .md " , " $env->storage_prefix $new_name .md " );
2015-09-19 09:19:56 +00:00
2015-09-22 13:34:18 +00:00
exit ( page_renderer :: render_main ( " Moving $env->page " , " <p><a href='index.php?page= $env->page '> $env->page </a> has been moved to <a href='index.php?page= $new_name '> $new_name </a> successfully.</p> " ));
2015-09-19 09:19:56 +00:00
});
}
]);
2015-09-22 13:34:18 +00:00
2015-09-19 09:19:56 +00:00
?>