OSDN Git Service

BugTrack/2424 Fix unfreezing page on comment action
[pukiwiki/pukiwiki.git] / plugin / unfreeze.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // $Id: unfreeze.inc.php,v 1.14 2011/01/25 15:01:01 henoheno Exp $
4 // Copyright (C) 2003-2004, 2007 PukiWiki Developers Team
5 // License: GPL v2 or (at your option) any later version
6 //
7 // Unfreeze(Unlock) plugin
8
9 // Show edit form when unfreezed
10 define('PLUGIN_UNFREEZE_EDIT', TRUE);
11
12 function plugin_unfreeze_action()
13 {
14         global $script, $vars, $function_freeze;
15         global $_title_isunfreezed, $_title_unfreezed, $_title_unfreeze;
16         global $_msg_invalidpass, $_msg_unfreezing, $_btn_unfreeze;
17
18         $page = isset($vars['page']) ? $vars['page'] : '';
19         if (! $function_freeze || ! is_page($page))
20                 return array('msg' => '', 'body' => '');
21
22         $pass = isset($vars['pass']) ? $vars['pass'] : NULL;
23         $msg = $body = '';
24         if (! is_freeze($page)) {
25                 // Unfreezed already
26                 $msg  = & $_title_isunfreezed;
27                 $body = str_replace('$1', htmlsc(strip_bracket($page)),
28                         $_title_isunfreezed);
29
30         } else if ($pass !== NULL && pkwk_login($pass)) {
31                 // Unfreeze
32                 $postdata = get_source($page);
33                 for ($i = count($postdata) - 1; $i >= 0; $i--) {
34                         if ("#freeze\n" === $postdata[$i]) {
35                                 $postdata[$i] = '';
36                         }
37                 }
38                 $postdata = join('', $postdata);
39                 file_write(DATA_DIR, $page, $postdata, TRUE);
40
41                 // Update 
42                 is_freeze($page, TRUE);
43                 if (PLUGIN_UNFREEZE_EDIT) {
44                         $vars['cmd'] = 'read'; // To show 'Freeze' link
45                         $msg  = & $_title_unfreezed;
46                         $body = edit_form($page, $postdata);
47                 } else {
48                         $vars['cmd'] = 'read';
49                         $msg  = & $_title_unfreezed;
50                         $body = '';
51                 }
52
53         } else {
54                 // Show unfreeze form
55                 $msg    = & $_title_unfreeze;
56                 $s_page = htmlsc($page);
57                 $body   = ($pass === NULL) ? '' : "<p><strong>$_msg_invalidpass</strong></p>\n";
58                 $body  .= <<<EOD
59 <p>$_msg_unfreezing</p>
60 <form action="$script" method="post">
61  <div>
62   <input type="hidden"   name="cmd"  value="unfreeze" />
63   <input type="hidden"   name="page" value="$s_page" />
64   <input type="password" name="pass" size="12" />
65   <input type="submit"   name="ok"   value="$_btn_unfreeze" />
66  </div>
67 </form>
68 EOD;
69         }
70
71         return array('msg'=>$msg, 'body'=>$body);
72 }
73 ?>