<?php
-/////////////////////////////////////////////////
-// PukiWiki - Yet another WikiWikiWeb clone.
+// PukiWiki - Yet another WikiWikiWeb clone
+// $Id: rename.inc.php,v 1.38 2011/01/25 15:01:01 henoheno Exp $
+// Copyright (C) 2002-2005, 2007 PukiWiki Developers Team
+// License: GPL v2 or (at your option) any later version
//
-// $Id: rename.inc.php,v 1.4 2003/03/15 04:25:53 panda Exp $
+// Rename plugin: Rename page-name and related data
//
+// Usage: http://path/to/pukiwikiphp?plugin=rename[&refer=page_name]
+
+define('PLUGIN_RENAME_LOGPAGE', ':RenameLog');
-/*
- * ¥×¥é¥°¥¤¥ó rename
- * ¥Ú¡¼¥¸¤Î̾Á°¤òÊѤ¨¤ë
- *
- * Usage
- * http:.../pukiwiki.php?plugin=rename(&refer=¥Ú¡¼¥¸Ì¾)
- *
- * ¥Ñ¥é¥á¡¼¥¿
- * &refer=¥Ú¡¼¥¸Ì¾
- * ¥Ú¡¼¥¸¤ò»ØÄê
- *
- */
-
-define('RENAME_LOGPAGE',':RenameLog');
-
-function plugin_rename_init()
-{
- $messages = array(
- '_rename_messages'=>array(
- 'err' => '<p>¥¨¥é¡¼:%s</p>',
- 'err_nomatch' => '¥Þ¥Ã¥Á¤¹¤ë¥Ú¡¼¥¸¤¬¤¢¤ê¤Þ¤»¤ó¡£',
- 'err_notvalid' => '¥ê¥Í¡¼¥à¸å¤Î¥Ú¡¼¥¸Ì¾¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£',
- 'err_adminpass' => '´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£',
- 'err_notpage' => '%s¤Ï¥Ú¡¼¥¸Ì¾¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£',
- 'err_norename' => '%s¤ò¥ê¥Í¡¼¥à¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£',
- 'err_already' => '¥Ú¡¼¥¸¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹¡£:%s',
- 'err_already_below' => '°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹¡£',
- 'msg_title' => '¥Ú¡¼¥¸Ì¾¤ÎÊѹ¹',
- 'msg_page' => 'Êѹ¹¸µ¥Ú¡¼¥¸¤ò»ØÄê',
- 'msg_regex' => 'Àµµ¬É½¸½¤ÇÃÖ´¹',
- 'msg_related' => '´ØÏ¢¥Ú¡¼¥¸',
- 'msg_do_related' => '´ØÏ¢¥Ú¡¼¥¸¤â¥ê¥Í¡¼¥à¤¹¤ë',
- 'msg_rename' => '%s¤Î̾Á°¤òÊѹ¹¤·¤Þ¤¹¡£',
- 'msg_oldname' => '¸½ºß¤Î̾Á°',
- 'msg_newname' => '¿·¤·¤¤Ì¾Á°',
- 'msg_adminpass' => '´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É',
- 'msg_arrow' => '¢ª',
- 'msg_exist_none' => '¤½¤Î¥Ú¡¼¥¸¤ò½èÍý¤·¤Ê¤¤',
- 'msg_exist_overwrite' => '¤½¤Î¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¤¹¤ë',
- 'msg_confirm' => '°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤ò¥ê¥Í¡¼¥à¤·¤Þ¤¹¡£',
- 'msg_result' => '°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤¤·¤Þ¤·¤¿¡£',
- 'btn_submit' => '¼Â¹Ô',
- 'btn_next' => '¼¡¤Ø'
- )
- );
- set_plugin_messages($messages);
-}
function plugin_rename_action()
{
- global $adminpass,$whatsnew,$WikiName,$BracketName;
- global $_rename_messages;
-
- set_time_limit(60);
-
- $method = rename_getvar('method');
- if ($method == 'regex')
- {
- $src = rename_getvar('src');
- $dst = rename_getvar('dst');
- if ($src == '')
- {
- return rename_phase1();
- }
- $src_pattern = '/'.preg_quote($src,'/').'/';
- $arr0 = preg_grep($src_pattern,get_existpages());
- if (!is_array($arr0) or count($arr0) == 0)
- {
- return rename_phase1('nomatch');
- }
- $arr1 = preg_replace($src_pattern,$dst,$arr0);
- $arr2 = preg_grep("/^$BracketName$/",$arr1);
- if (count($arr2) != count($arr1))
- {
- return rename_phase1('notvalid');
- }
- return rename_regex($arr0,$arr1);
- }
- else // $method == 'page'
- {
- $page = rename_getvar('page');
- $refer = rename_getvar('refer');
- if ($refer == '')
- {
- return rename_phase1($s_vars);
- }
- if (!is_page($refer))
- {
- return rename_phase1('notpage',$refer);
- }
- if ($refer == $whatsnew)
- {
- return rename_phase1('norename',$refer);
- }
- if ($page == '' or $page == $refer)
- {
- return rename_phase2();
- }
- if (!preg_match("/^$BracketName$/",$page))
- {
- return rename_phase2('notvalid');
+ global $whatsnew;
+
+ if (PKWK_READONLY) die_message('PKWK_READONLY prohibits this');
+
+ $method = plugin_rename_getvar('method');
+ if ($method == 'regex') {
+ $src = plugin_rename_getvar('src');
+ if ($src == '') return plugin_rename_phase1();
+
+ $src_pattern = '/' . preg_quote($src, '/') . '/';
+ $arr0 = preg_grep($src_pattern, get_existpages());
+ if (! is_array($arr0) || empty($arr0))
+ return plugin_rename_phase1('nomatch');
+
+ $dst = plugin_rename_getvar('dst');
+ $arr1 = preg_replace($src_pattern, $dst, $arr0);
+ foreach ($arr1 as $page)
+ if (! is_pagename($page))
+ return plugin_rename_phase1('notvalid');
+
+ return plugin_rename_regex($arr0, $arr1);
+
+ } else {
+ // $method == 'page'
+ $page = plugin_rename_getvar('page');
+ $refer = plugin_rename_getvar('refer');
+
+ if ($refer == '') {
+ return plugin_rename_phase1();
+
+ } else if (! is_page($refer)) {
+ return plugin_rename_phase1('notpage', $refer);
+
+ } else if ($refer === $whatsnew) {
+ return plugin_rename_phase1('norename', $refer);
+
+ } else if ($page == '' || $page === $refer) {
+ return plugin_rename_phase2();
+
+ } else if (! is_pagename($page)) {
+ return plugin_rename_phase2('notvalid');
+
+ } else {
+ return plugin_rename_refer();
}
- return rename_refer();
}
}
-// ÊÑ¿ô¤ò¼èÆÀ¤¹¤ë
-function rename_getvar($key)
+
+// 変数を取得する
+function plugin_rename_getvar($key)
{
global $vars;
-
- return array_key_exists($key,$vars) ? $vars[$key] : '';
+ return isset($vars[$key]) ? $vars[$key] : '';
}
-// ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òºî¤ë
-function rename_err($err,$page='')
+
+// エラーメッセージを作る
+function plugin_rename_err($err, $page = '')
{
global $_rename_messages;
-
- if ($err == '')
- {
- return '';
- }
- $body = $_rename_messages["err_$err"];
- if (is_array($page))
- {
+
+ if ($err == '') return '';
+
+ $body = $_rename_messages['err_' . $err];
+ if (is_array($page)) {
$tmp = '';
- foreach ($page as $_page)
- {
- $tmp .= "<br />$_page";
- }
+ foreach ($page as $_page) $tmp .= '<br />' . $_page;
$page = $tmp;
}
- if ($page != '')
- {
- $body = sprintf($body,$page);
- }
- $msg = sprintf($_rename_messages['err'],$body);
+ if ($page != '') $body = sprintf($body, htmlsc($page));
+
+ $msg = sprintf($_rename_messages['err'], $body);
return $msg;
}
-//Âè°ìÃʳ¬:¥Ú¡¼¥¸Ì¾¤Þ¤¿¤ÏÀµµ¬É½¸½¤ÎÆþÎÏ
-function rename_phase1($err='',$page='')
+
+//第一段階:ページ名または正規表現の入力
+function plugin_rename_phase1($err = '', $page = '')
{
- global $script,$_rename_messages;
-
- $msg = rename_err($err,$page);
- $refer = rename_getvar('refer');
- $method = rename_getvar('method');
+ global $script, $_rename_messages;
+
+ $msg = plugin_rename_err($err, $page);
+ $refer = plugin_rename_getvar('refer');
+ $method = plugin_rename_getvar('method');
$radio_regex = $radio_page = '';
- if ($method == 'regex')
- {
- $radio_regex =' checked';
+ if ($method == 'regex') {
+ $radio_regex = ' checked="checked"';
+ } else {
+ $radio_page = ' checked="checked"';
}
- else
- {
- $radio_page = ' checked';
- }
- $select_refer = rename_getselecttag($refer);
-
- $s_src = htmlspecialchars(rename_getvar('src'));
- $s_dst = htmlspecialchars(rename_getvar('dst'));
-
- $ret['msg'] = $_rename_messages['msg_title'];
+ $select_refer = plugin_rename_getselecttag($refer);
+
+ $s_src = htmlsc(plugin_rename_getvar('src'));
+ $s_dst = htmlsc(plugin_rename_getvar('dst'));
+
+ $ret = array();
+ $ret['msg'] = $_rename_messages['msg_title'];
$ret['body'] = <<<EOD
$msg
<form action="$script" method="post">
<div>
<input type="hidden" name="plugin" value="rename" />
- <input type="radio" name="method" value="page"$radio_page />
- {$_rename_messages['msg_page']}:$select_refer<br />
- <input type="radio" name="method" value="regex"$radio_regex />
- {$_rename_messages['msg_regex']}:<br />
- From:<br />
- <input type="text" name="src" size="80" value="$s_src" /><br />
- To:<br>
- <input type="text" name="dst" size="80" value="$s_dst" /><br />
+ <input type="radio" name="method" id="_p_rename_page" value="page"$radio_page />
+ <label for="_p_rename_page">{$_rename_messages['msg_page']}:</label>$select_refer<br />
+ <input type="radio" name="method" id="_p_rename_regex" value="regex"$radio_regex />
+ <label for="_p_rename_regex">{$_rename_messages['msg_regex']}:</label><br />
+ <label for="_p_rename_from">From:</label><br />
+ <input type="text" name="src" id="_p_rename_from" size="80" value="$s_src" /><br />
+ <label for="_p_rename_to">To:</label><br />
+ <input type="text" name="dst" id="_p_rename_to" size="80" value="$s_dst" /><br />
<input type="submit" value="{$_rename_messages['btn_next']}" /><br />
</div>
</form>
EOD;
return $ret;
}
-//ÂèÆóÃʳ¬:¿·¤·¤¤Ì¾Á°¤ÎÆþÎÏ
-function rename_phase2($err='')
+
+//第二段階:新しい名前の入力
+function plugin_rename_phase2($err = '')
{
- global $script,$_rename_messages;
-
- $msg = rename_err($err);
- $page = rename_getvar('page');
- $refer = rename_getvar('refer');
- if ($page == '')
- {
- $page = $refer;
- }
-
- $related = rename_getrelated($refer);
+ global $script, $_rename_messages;
+
+ $msg = plugin_rename_err($err);
+ $page = plugin_rename_getvar('page');
+ $refer = plugin_rename_getvar('refer');
+ if ($page == '') $page = $refer;
+
$msg_related = '';
- if (count($related) > 0)
- {
- $msg_related = $_rename_messages['msg_do_related'].
- '<input type="checkbox" name="related" value="1" checked="checked" /><br />';
- }
- $msg_rename = sprintf($_rename_messages['msg_rename'],make_pagelink($refer));
-
- $s_page = htmlspecialchars($page);
- $s_refer = htmlspecialchars($refer);
-
- $ret['msg'] = $_rename_messages['msg_title'];
+ $related = plugin_rename_getrelated($refer);
+ if (! empty($related))
+ $msg_related = '<label for="_p_rename_related">' . $_rename_messages['msg_do_related'] . '</label>' .
+ '<input type="checkbox" name="related" id="_p_rename_related" value="1" checked="checked" /><br />';
+
+ $msg_rename = sprintf($_rename_messages['msg_rename'], make_pagelink($refer));
+ $s_page = htmlsc($page);
+ $s_refer = htmlsc($refer);
+
+ $ret = array();
+ $ret['msg'] = $_rename_messages['msg_title'];
$ret['body'] = <<<EOD
$msg
<form action="$script" method="post">
<div>
<input type="hidden" name="plugin" value="rename" />
- <input type="hidden" name="refer" value="$s_refer" />
+ <input type="hidden" name="refer" value="$s_refer" />
$msg_rename<br />
- {$_rename_messages['msg_newname']}:<input type="text" name="page" size="80" value="$s_page" /><br />
- $rename_related
+ <label for="_p_rename_newname">{$_rename_messages['msg_newname']}:</label>
+ <input type="text" name="page" id="_p_rename_newname" size="80" value="$s_page" /><br />
+ $msg_related
<input type="submit" value="{$_rename_messages['btn_next']}" /><br />
</div>
</form>
EOD;
- if (count($related) > 0)
- {
- $ret['body'].= "<hr /><p>{$_rename_messages['msg_related']}</p><ul>";
- sort($related);
+ if (! empty($related)) {
+ $ret['body'] .= '<hr /><p>' . $_rename_messages['msg_related'] . '</p><ul>';
+ sort($related, SORT_STRING);
foreach ($related as $name)
- {
- $ret['body'].= '<li>'.make_pagelink($name).'</li>';
- }
- $ret['body'].= '</ul>';
+ $ret['body'] .= '<li>' . make_pagelink($name) . '</li>';
+ $ret['body'] .= '</ul>';
}
return $ret;
}
-//¥Ú¡¼¥¸Ì¾¤È´ØÏ¢¤¹¤ë¥Ú¡¼¥¸¤òÎóµó¤·¡¢phase3¤Ø
-function rename_refer()
+
+//ページ名と関連するページを列挙し、phase3へ
+function plugin_rename_refer()
{
- $page = rename_getvar('page');
- $refer = rename_getvar('refer');
-
+ $page = plugin_rename_getvar('page');
+ $refer = plugin_rename_getvar('refer');
+
$pages[encode($refer)] = encode($page);
- if (rename_getvar('related') != '')
- {
+ if (plugin_rename_getvar('related') != '') {
$from = strip_bracket($refer);
- $to = strip_bracket($page);
- foreach (rename_getrelated($refer) as $_page)
- {
- $pages[encode($_page)] = encode(str_replace($from,$to,$_page));
- }
+ $to = strip_bracket($page);
+ foreach (plugin_rename_getrelated($refer) as $_page)
+ $pages[encode($_page)] = encode(str_replace($from, $to, $_page));
}
- return rename_phase3($pages);
+ return plugin_rename_phase3($pages);
}
-//Àµµ¬É½¸½¤Ç¥Ú¡¼¥¸¤òÃÖ´¹
-function rename_regex($arr_from,$arr_to)
+
+//正規表現でページを置換
+function plugin_rename_regex($arr_from, $arr_to)
{
$exists = array();
foreach ($arr_to as $page)
- {
if (is_page($page))
- {
$exists[] = $page;
- }
- }
- if (count($exists) > 0)
- {
- return rename_phase1('already',$exists);
- }
-
- $pages = array();
- foreach ($arr_from as $refer)
- {
- $pages[encode($refer)] = encode(array_shift($arr_to));
+
+ if (! empty($exists)) {
+ return plugin_rename_phase1('already', $exists);
+ } else {
+ $pages = array();
+ foreach ($arr_from as $refer)
+ $pages[encode($refer)] = encode(array_shift($arr_to));
+ return plugin_rename_phase3($pages);
}
- return rename_phase3($pages);
}
-function rename_phase3($pages)
+
+function plugin_rename_phase3($pages)
{
- global $script,$adminpass,$_rename_messages;
-
+ global $script, $_rename_messages;
+
$msg = $input = '';
- $files = rename_get_files($pages);
-
+ $files = plugin_rename_get_files($pages);
+
$exists = array();
foreach ($files as $_page=>$arr)
- {
foreach ($arr as $old=>$new)
- {
if (file_exists($new))
- {
$exists[$_page][$old] = $new;
- }
- }
- }
- $pass = rename_getvar('pass');
- if (md5($pass) == $adminpass)
- {
- return rename_proceed($pages,$files,$exists);
- }
- else if ($pass != '')
- {
- $msg = rename_err('adminpass');
- }
- $method = rename_getvar('method');
- if ($method == 'regex')
- {
- $s_src = htmlspecialchars(rename_getvar('src'));
- $s_dst = htmlspecialchars(rename_getvar('dst'));
- $msg .= $_rename_messages['msg_regex']."<br />";
- $input .= "<input type=\"hidden\" name=\"method\" value=\"regex\" />";
- $input .= "<input type=\"hidden\" name=\"src\" value=\"$s_src\" />";
- $input .= "<input type=\"hidden\" name=\"dst\" value=\"$s_dst\" />";
+
+ $pass = plugin_rename_getvar('pass');
+ if ($pass != '' && pkwk_login($pass)) {
+ return plugin_rename_proceed($pages, $files, $exists);
+ } else if ($pass != '') {
+ $msg = plugin_rename_err('adminpass');
}
- else
- {
- $s_refer = htmlspecialchars(rename_getvar('refer'));
- $s_page = htmlspecialchars(rename_getvar('page'));
- $s_related = htmlspecialchars(rename_getvar('related'));
- $msg .= $_rename_messages['msg_page']."<br />";
- $input .= "<input type=\"hidden\" name=\"method\" value=\"page\" />";
- $input .= "<input type=\"hidden\" name=\"refer\" value=\"$s_refer\" />";
- $input .= "<input type=\"hidden\" name=\"page\" value=\"$s_page\" />";
- $input .= "<input type=\"hidden\" name=\"related\" value=\"$s_related\" />";
+
+ $method = plugin_rename_getvar('method');
+ if ($method == 'regex') {
+ $s_src = htmlsc(plugin_rename_getvar('src'));
+ $s_dst = htmlsc(plugin_rename_getvar('dst'));
+ $msg .= $_rename_messages['msg_regex'] . '<br />';
+ $input .= '<input type="hidden" name="method" value="regex" />';
+ $input .= '<input type="hidden" name="src" value="' . $s_src . '" />';
+ $input .= '<input type="hidden" name="dst" value="' . $s_dst . '" />';
+ } else {
+ $s_refer = htmlsc(plugin_rename_getvar('refer'));
+ $s_page = htmlsc(plugin_rename_getvar('page'));
+ $s_related = htmlsc(plugin_rename_getvar('related'));
+ $msg .= $_rename_messages['msg_page'] . '<br />';
+ $input .= '<input type="hidden" name="method" value="page" />';
+ $input .= '<input type="hidden" name="refer" value="' . $s_refer . '" />';
+ $input .= '<input type="hidden" name="page" value="' . $s_page . '" />';
+ $input .= '<input type="hidden" name="related" value="' . $s_related . '" />';
}
-
- if (count($exists) > 0)
- {
- $msg .= $_rename_messages['err_already_below']."<ul>";
- foreach ($exists as $page=>$arr)
- {
- $msg .= '<li>';
- $msg .= make_pagelink(decode($page));
+
+ if (! empty($exists)) {
+ $msg .= $_rename_messages['err_already_below'] . '<ul>';
+ foreach ($exists as $page=>$arr) {
+ $msg .= '<li>' . make_pagelink(decode($page));
$msg .= $_rename_messages['msg_arrow'];
- $msg .= htmlspecialchars(decode($pages[$page]));
- if (count($arr) > 0)
- {
- $msg .= "<ul>\n";
+ $msg .= htmlsc(decode($pages[$page]));
+ if (! empty($arr)) {
+ $msg .= '<ul>' . "\n";
foreach ($arr as $ofile=>$nfile)
- {
- $msg .= '<li>'.$ofile.$_rename_messages['msg_arrow'].$nfile."</li>\n";
- }
+ $msg .= '<li>' . $ofile .
+ $_rename_messages['msg_arrow'] . $nfile . '</li>' . "\n";
$msg .= '</ul>';
}
- $msg .= "</li>\n";
+ $msg .= '</li>' . "\n";
}
- $msg .= "</ul><hr />\n";
-
- $input .= '<input type="radio" name="exist" value="0" checked />'.$_rename_messages['msg_exist_none'].'<br />';
- $input .= '<input type="radio" name="exist" value="1" />'.$_rename_messages['msg_exist_overwrite'].'<br />';
+ $msg .= '</ul><hr />' . "\n";
+
+ $input .= '<input type="radio" name="exist" value="0" checked="checked" />' .
+ $_rename_messages['msg_exist_none'] . '<br />';
+ $input .= '<input type="radio" name="exist" value="1" />' .
+ $_rename_messages['msg_exist_overwrite'] . '<br />';
}
+
+ $ret = array();
$ret['msg'] = $_rename_messages['msg_title'];
$ret['body'] = <<<EOD
<p>$msg</p>
<div>
<input type="hidden" name="plugin" value="rename" />
$input
- {$_rename_messages['msg_adminpass']}
- <input type="password" name="pass" value="" />
+ <label for="_p_rename_adminpass">{$_rename_messages['msg_adminpass']}</label>
+ <input type="password" name="pass" id="_p_rename_adminpass" value="" />
<input type="submit" value="{$_rename_messages['btn_submit']}" />
</div>
</form>
<p>{$_rename_messages['msg_confirm']}</p>
EOD;
-
- ksort($pages);
- $ret['body'] .= "<ul>\n";
+
+ ksort($pages, SORT_STRING);
+ $ret['body'] .= '<ul>' . "\n";
foreach ($pages as $old=>$new)
- {
- $ret['body'] .= "<li>".
- make_pagelink(decode($old)).
- $_rename_messages['msg_arrow'].
- htmlspecialchars(decode($new)).
- "</li>\n";
- }
- $ret['body'] .= "</ul>\n";
+ $ret['body'] .= '<li>' . make_pagelink(decode($old)) .
+ $_rename_messages['msg_arrow'] .
+ htmlsc(decode($new)) . '</li>' . "\n";
+ $ret['body'] .= '</ul>' . "\n";
return $ret;
}
-function rename_get_files($pages)
+
+function plugin_rename_get_files($pages)
{
$files = array();
- $dirs = array(BACKUP_DIR,DIFF_DIR,DATA_DIR);
- if (exist_plugin_convert('attach'))
- {
- $dirs[] = UPLOAD_DIR;
- }
- if (exist_plugin_convert('counter'))
- {
- $dirs[] = COUNTER_DIR;
- }
+ $dirs = array(BACKUP_DIR, DIFF_DIR, DATA_DIR);
+ if (exist_plugin_convert('attach')) $dirs[] = UPLOAD_DIR;
+ if (exist_plugin_convert('counter')) $dirs[] = COUNTER_DIR;
// and more ...
-
- foreach ($dirs as $path)
- {
- if (!$dir = opendir($path))
- {
- continue;
- }
- while ($file = readdir($dir))
- {
- if ($file == '.' or $file == '..')
- {
- continue;
- }
- foreach ($pages as $from=>$to)
- {
- $pattern = '/^'.str_replace('/','\/',$from).'([._].+)$/';
- if (!preg_match($pattern,$file,$matches))
- {
- continue;
+
+ $matches = array();
+ foreach ($dirs as $path) {
+ $dir = opendir($path);
+ if (! $dir) continue; // TODO: !== FALSE or die()?
+ while (($file = readdir($dir)) !== FALSE) {
+ if ($file == '.' || $file == '..') continue;
+ foreach ($pages as $from => $to) {
+ // TODO: preg_quote()?
+ $pattern = '/^' . str_replace('/', '\/', $from) . '([._].+)$/';
+ if (preg_match($pattern, $file, $matches)) {
+ $newfile = $to . $matches[1];
+ $files[$from][$path . $file] = $path . $newfile;
}
- $newfile = $to.$matches[1];
- $files[$from][$path.$file] = $path.$newfile;
}
}
}
+
return $files;
}
-function rename_proceed($pages,$files,$exists)
+
+function plugin_rename_proceed($pages, $files, $exists)
{
- global $script,$now,$_rename_messages;
-
- if (rename_getvar('exist') == '')
- {
+ global $now, $_rename_messages;
+
+ if (plugin_rename_getvar('exist') == '')
foreach ($exists as $key=>$arr)
- {
- unset($files[$key]);
- }
- }
-
+ unset($files[$key]);
+
set_time_limit(0);
- foreach ($files as $page=>$arr)
- {
- foreach ($arr as $old=>$new)
- {
- if ($exists[$page][$old])
- {
- unlink($new);
- }
- rename($old,$new);
+ foreach ($files as $page=>$arr) {
+ foreach ($arr as $old=>$new) {
+ if (isset($exists[$page][$old]) && $exists[$page][$old])
+ unlink($new);
+ rename($old, $new);
+
+ // linkデータベースを更新する BugTrack/327 arino
+ links_update($old);
+ links_update($new);
}
}
-
- $postdata = get_source(RENAME_LOGPAGE);
- $postdata[] = '*'.$now."\n";
- if (rename_getvar('method') == 'regex')
- {
- $postdata[] = '-'.$_rename_messages['msg_regex']."\n";
- $postdata[] = '--From:[['.rename_getvar('src')."]]\n";
- $postdata[] = '--To:[['.rename_getvar('dst')."]]\n";
- }
- else
- {
- $postdata[] = '-'.$_rename_messages['msg_page']."\n";
- $postdata[] = '--From:[['.rename_getvar('refer')."]]\n";
- $postdata[] = '--To:[['.rename_getvar('page')."]]\n";
+
+ $postdata = get_source(PLUGIN_RENAME_LOGPAGE);
+ $postdata[] = '*' . $now . "\n";
+ if (plugin_rename_getvar('method') == 'regex') {
+ $postdata[] = '-' . $_rename_messages['msg_regex'] . "\n";
+ $postdata[] = '--From:[[' . plugin_rename_getvar('src') . ']]' . "\n";
+ $postdata[] = '--To:[[' . plugin_rename_getvar('dst') . ']]' . "\n";
+ } else {
+ $postdata[] = '-' . $_rename_messages['msg_page'] . "\n";
+ $postdata[] = '--From:[[' . plugin_rename_getvar('refer') . ']]' . "\n";
+ $postdata[] = '--To:[[' . plugin_rename_getvar('page') . ']]' . "\n";
}
- if (count($exists) > 0)
- {
- $postdata[] = "\n".$_rename_messages['msg_result']."\n";
- foreach ($exists as $page=>$arr)
- {
- $postdata[] = '-'.decode($page).
- $_rename_messages['msg_arrow'].decode($pages[$page])."\n";
+
+ if (! empty($exists)) {
+ $postdata[] = "\n" . $_rename_messages['msg_result'] . "\n";
+ foreach ($exists as $page=>$arr) {
+ $postdata[] = '-' . decode($page) .
+ $_rename_messages['msg_arrow'] . decode($pages[$page]) . "\n";
foreach ($arr as $ofile=>$nfile)
- {
- $postdata[] = '--'.$ofile.
- $_rename_messages['msg_arrow'].$nfile."\n";
- }
+ $postdata[] = '--' . $ofile .
+ $_rename_messages['msg_arrow'] . $nfile . "\n";
}
- $postdata[] = "----\n";
+ $postdata[] = '----' . "\n";
}
+
foreach ($pages as $old=>$new)
- {
- $postdata[] = '-'.decode($old).
- $_rename_messages['msg_arrow'].decode($new)."\n";
- }
-
- // ¹¹¿·¤Î¾×ÆͤϥÁ¥§¥Ã¥¯¤·¤Ê¤¤¡£
-
- // ¥Õ¥¡¥¤¥ë¤Î½ñ¤¹þ¤ß
- page_write(RENAME_LOGPAGE, join('',$postdata));
-
- //¥ê¥À¥¤¥ì¥¯¥È
- $page = rename_getvar('page');
- if ($page == '')
- {
- $page = RENAME_LOGPAGE;
- }
- header("Location: $script?".rawurlencode($page));
- die();
+ $postdata[] = '-' . decode($old) .
+ $_rename_messages['msg_arrow'] . decode($new) . "\n";
+
+ // 更新の衝突はチェックしない。
+
+ // ファイルの書き込み
+ page_write(PLUGIN_RENAME_LOGPAGE, join('', $postdata));
+
+ //リダイレクト
+ $page = plugin_rename_getvar('page');
+ if ($page == '') $page = PLUGIN_RENAME_LOGPAGE;
+
+ pkwk_headers_sent();
+ header('Location: ' . get_script_uri() . '?' . pagename_urlencode($page));
+ exit;
}
-function rename_getrelated($page)
+
+function plugin_rename_getrelated($page)
{
$related = array();
$pages = get_existpages();
- $pattern = '/(?:^|\/)'.preg_quote(strip_bracket($page),'/').'(?:\/|$)/';
- foreach ($pages as $name)
- {
- if ($name == $page)
- {
- continue;
- }
- if (preg_match($pattern,$name))
- {
- $related[] = $name;
- }
+ $pattern = '/(?:^|\/)' . preg_quote(strip_bracket($page), '/') . '(?:\/|$)/';
+ foreach ($pages as $name) {
+ if ($name === $page) continue;
+ if (preg_match($pattern, $name)) $related[] = $name;
}
return $related;
}
-function rename_getselecttag($page)
+
+function plugin_rename_getselecttag($page)
{
global $whatsnew;
-
- $pages =array();
- foreach (get_existpages() as $_page)
- {
- if ($_page == $whatsnew)
- {
- continue;
- }
- $selected = ($_page == $page) ? ' selected' : '';
- $s_page = htmlspecialchars($_page);
- $pages[$_page] = "<option value=\"$s_page\"$selected>$s_page</option>";
+
+ $pages = array();
+ foreach (get_existpages() as $_page) {
+ if ($_page === $whatsnew) continue;
+
+ $selected = ($_page === $page) ? ' selected' : '';
+ $s_page = htmlsc($_page);
+ $pages[$_page] = '<option value="' . $s_page . '"' . $selected . '>' .
+ $s_page . '</option>';
}
- ksort($pages);
- $list = join("\n ",$pages);
+ ksort($pages, SORT_STRING);
+ $list = join("\n" . ' ', $pages);
+
return <<<EOD
<select name="refer">
<option value=""></option>
$list
</select>
EOD;
- return $ret;
+
}
-?>
+