OSDN Git Service

BugTrack/2265 Enable edit_auth for bugtrack and tracker plugin
[pukiwiki/pukiwiki.git] / plugin / unfreeze.inc.php
index 7b149e7..e3154ee 100644 (file)
@@ -1,56 +1,62 @@
 <?php
-/////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
+// unfreeze.inc.php
+// Copyright 2003-2017 PukiWiki Development Team
+// License: GPL v2 or (at your option) any later version
 //
-// $Id: unfreeze.inc.php,v 1.7 2004/07/31 03:09:20 henoheno Exp $
-//
-// Åà·ë²ò½ü
+// Unfreeze(Unlock) plugin
 
-// Åà·ë²ò½ü»þ¤Ë¥Ú¡¼¥¸¤ÎÊÔ½¸¥Õ¥©¡¼¥à¤òɽ¼¨¤¹¤ë¤«
-define('UNFREEZE_EDIT', FALSE);
+// Show edit form when unfreezed
+define('PLUGIN_UNFREEZE_EDIT', TRUE);
 
 function plugin_unfreeze_action()
 {
-       global $script, $vars, $function_freeze;
+       global $vars, $function_freeze;
        global $_title_isunfreezed, $_title_unfreezed, $_title_unfreeze;
        global $_msg_invalidpass, $_msg_unfreezing, $_btn_unfreeze;
 
+       $script = get_base_uri();
        $page = isset($vars['page']) ? $vars['page'] : '';
-
-       if (!$function_freeze or !is_page($page))
+       if (! $function_freeze || ! is_page($page))
                return array('msg' => '', 'body' => '');
 
        $pass = isset($vars['pass']) ? $vars['pass'] : NULL;
+       $msg = $body = '';
+       if (! is_freeze($page)) {
+               // Unfreezed already
+               $msg  = $_title_isunfreezed;
+               $body = str_replace('$1', htmlsc(strip_bracket($page)),
+                       $_title_isunfreezed);
 
-       if (!is_freeze($page)) {
-               return array(
-                       'msg'  => $_title_isunfreezed,
-                       'body' => str_replace('$1', htmlspecialchars(strip_bracket($page)), $_title_isunfreezed)
-               );
        } else if ($pass !== NULL && pkwk_login($pass)) {
+               // Unfreeze
                $postdata = get_source($page);
-               array_shift($postdata);
+               for ($i = count($postdata) - 1; $i >= 0; $i--) {
+                       if ("#freeze\n" === $postdata[$i]) {
+                               $postdata[$i] = '';
+                       }
+               }
                $postdata = join('', $postdata);
-
                file_write(DATA_DIR, $page, $postdata, TRUE);
 
-               if (UNFREEZE_EDIT) {
-                       $vars['cmd'] = 'edit';
-                       return array('msg' => $_title_unfreezed, 'body' => '');
+               // Update 
+               is_freeze($page, TRUE);
+               if (PLUGIN_UNFREEZE_EDIT) {
+                       $vars['cmd'] = 'read'; // To show 'Freeze' link
+                       $msg  = $_title_unfreezed;
+                       $postdata = remove_author_info($postdata);
+                       $body = edit_form($page, $postdata);
                } else {
                        $vars['cmd'] = 'read';
-                       return array(
-                               'msg'  => $_title_unfreezed,
-                               'body' => edit_form($page, $postdata)
-                       );
+                       $msg  = $_title_unfreezed;
+                       $body = '';
                }
-       }
-
-       // Åà·ë²ò½ü¥Õ¥©¡¼¥à¤òɽ¼¨
-       $s_page = htmlspecialchars($page);
-
-       $body = ($pass === NULL) ? '' : "<p><strong>$_msg_invalidpass</strong></p>\n";
-       $body .= <<<EOD
+       } else {
+               // Show unfreeze form
+               $msg    = $_title_unfreeze;
+               $s_page = htmlsc($page);
+               $body   = ($pass === NULL) ? '' : "<p><strong>$_msg_invalidpass</strong></p>\n";
+               $body  .= <<<EOD
 <p>$_msg_unfreezing</p>
 <form action="$script" method="post">
  <div>
@@ -61,7 +67,6 @@ function plugin_unfreeze_action()
  </div>
 </form>
 EOD;
-
-       return array('msg' => $_title_unfreeze, 'body' => $body);
+       }
+       return array('msg'=>$msg, 'body'=>$body);
 }
-?>