<?php /* Copyright 2003 John Rankin (john.rankin@affinity.co.nz) This file adds a page rename capability to pmwiki Changements 2003 Dec 26 pog $WikiLibDirs */ SDV($RedirectToRenameFmt,"[[redirect:{{\$RenameText}}]]"); SDV($PageRenameFmt,"<h1>$[Rename] <a href='\$PageUrl'>\$PageName</a></h1> <form action='\$ScriptUrl' method='post'> <input type='hidden' name='pagename' value='\$PageName' /> <input type='hidden' name='action' value='postrename' /> <input type='text' name='renametext' value='' size='27' /> <input type='submit' value='$[Rename]' /></form>"); SDV($HandleRenameFmt,array(&$HTMLStartFmt,&$PageRenameFmt,&$HTMLEndFmt)); SDV($HandleActions['rename'],'HandleRename'); SDV($HandleActions['postrename'],'HandlePostRename'); function HandleRename($pagename) { global $HandleRenameFmt; $page = RetrieveAuthPage($pagename,'read'); if (!$page) { Abort("?cannot rename $pagename"); } PrintFmt($pagename,$HandleRenameFmt); } function HandlePostRename($pagename) { global $WikiLibDirs, $WikiDir,$HTTP_POST_VARS,$PageTitlePattern,$PageNameSpace, $RedirectToRenameFmt,$PageFileFmt; $newpagetitle = str_replace(' ',$PageNameSpace, ucwords(trim(stripmagic($HTTP_POST_VARS['renametext'])))); if (preg_match("/^($PageTitlePattern)\$/",$newpagetitle)) { $newpagename = FmtPageName('$Group',$pagename) . ".$newpagetitle"; if (PageExists($newpagename)) { Abort("?$newpagename already exists"); } else { Lock(2); TestLog("\n --rename $pagename to $newpagename"); $page = RetrieveAuthPage($pagename,"edit"); if (!$page) { Abort("?cannot get $pagename"); } $oldpagefile = FmtPageName($PageFileFmt,$pagename); $newpagefile = FmtPageName($PageFileFmt,$newpagename); ## foreach ($WikiLibDirs as $dir) { $fp = @fopen("$dir/$oldpagefile","r"); /* not $pagefile */ /* TestLog("\n dir: $dir/$pagefile -$fp-"); */ if ($fp) break; } if ($fp) { /* TestLog("\n $dir/$oldpagefile | $WikiDir/$newpagefile"); */ if (!copy("$dir/$oldpagefile","$WikiDir/$newpagefile")) { Abort("copy failed: $dir/$oldpagefile to $WikiDir/$newpagefile") ;} } ## $page['text'] = str_replace('$RenameText',$newpagetitle,$RedirectToRenameFmt); WritePage($pagename,$page); } } else { Abort("?'$newpagetitle' is not a valid page title"); } Redirect($pagename); } ?>