OSDN Git Service

RecentChanges: Update
[pukiwiki/pukiwiki.git] / plugin / memo.inc.php
index 62e6eaa..4302744 100644 (file)
@@ -1,59 +1,59 @@
 <?php
-// $Id: memo.inc.php,v 1.6 2003/01/27 05:38:46 panda Exp $
+// $Id: memo.inc.php,v 1.11 2004/07/24 14:58:41 henoheno Exp $
 
 /////////////////////////////////////////////////
 // ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¥«¥é¥à¿ô
-define('MEMO_COLS',80);
-/////////////////////////////////////////////////
+define('MEMO_COLS', 80);
+
 // ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¹Ô¿ô
-define('MEMO_ROWS',5);
+define('MEMO_ROWS', 5);
 
+/////////////////////////////////////////////////
 function plugin_memo_action()
 {
-       global $script,$post,$vars,$cols,$rows;
-       global $_title_collided,$_msg_collided,$_title_updated;
-       
-       if ($post['msg'] == '') { return; }
-       
-       $post["msg"] = preg_replace("/\r/",'',$post["msg"]);
-       $post["msg"] = str_replace("\n","\\n",$post["msg"]);
-
-       $postdata = "";
-       $postdata_old  = get_source($post["refer"]);
-       $memo_no = 0;
+       global $script, $vars, $cols, $rows;
+       global $_title_collided, $_msg_collided, $_title_updated;
+
+       if (! isset($vars['msg']) || $vars['msg'] == '') return;
 
-       $memo_body = $post["msg"];
+       $memo_body = preg_replace("/\r/", '', $vars['msg']);
+       $memo_body = str_replace("\n", "\\n", $memo_body);
+       $memo_body = str_replace('"', '&#x22;', $memo_body); // Escape double quotes
+       $memo_body = str_replace(',', '&#x2c;', $memo_body); // Escape commas
 
+       $postdata_old  = get_source($vars['refer']);
+       $postdata = '';
+       $memo_no = 0;
        foreach($postdata_old as $line)
        {
-               if (preg_match("/^#memo\(?.*\)?$/",$line))
+               if (preg_match("/^#memo\(?.*\)?$/", $line))
                {
-                       if ($memo_no == $post["memo_no"] && $post["msg"]!="")
+                       if ($memo_no == $vars['memo_no'])
                        {
                                $postdata .= "#memo($memo_body)\n";
-                               $line = "";
+                               $line = '';
                        }
-                       $memo_no++;
+                       ++$memo_no;
                }
                $postdata .= $line;
        }
-       
+
        $postdata_input = "$memo_body\n";
-       
-       if (md5(@join('',get_source($post["refer"]))) != $post['digest'])
+
+       if (md5(@join('', get_source($vars['refer']))) != $vars['digest'])
        {
                $title = $_title_collided;
-               
+
                $body = "$_msg_collided\n";
 
-               $s_refer = htmlspecialchars($post['refer']);
-               $s_digest = htmlspecialchars($post['digest']);
+               $s_refer  = htmlspecialchars($vars['refer']);
+               $s_digest = htmlspecialchars($vars['digest']);
                $s_postdata_input = htmlspecialchars($postdata_input);
-               
+
                $body .= <<<EOD
 <form action="$script?cmd=preview" method="post">
  <div>
-  <input type="hidden" name="refer" value="$s_refer" />
+  <input type="hidden" name="refer"  value="$s_refer" />
   <input type="hidden" name="digest" value="$s_digest" />
   <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
  </div>
@@ -62,31 +62,37 @@ EOD;
        }
        else
        {
-               page_write($post['refer'],$postdata);
-               
+               page_write($vars['refer'], $postdata);
+
                $title = $_title_updated;
        }
-       $retvars["msg"] = $title;
-       $retvars["body"] = $body;
-       
-       $post['page'] = $vars['page'] = $post['refer'];
-       
+       $retvars['msg'] = $title;
+       $retvars['body'] = $body;
+
+       $vars['page'] = $vars['refer'];
+
        return $retvars;
 }
+
 function plugin_memo_convert()
 {
-       global $script,$vars,$digest;
+       global $script, $vars, $digest;
        global $_btn_memo_update;
-       static $memo_no = 0;
+       static $numbers = array();
 
-       $data = '';
-       if (func_num_args()) {
-               list($data) = func_get_args();
+       if (! isset($numbers[$vars['page']]))
+       {
+               $numbers[$vars['page']] = 0;
        }
-       
-       $data = htmlspecialchars(str_replace("\\n","\n",$data));
-       
-       $s_page = htmlspecialchars($vars['page']);
+       $memo_no = $numbers[$vars['page']]++;
+
+       $data = func_get_args();
+       $data = implode(',', $data);    // Care all arguments
+       $data = str_replace('&#x2c;', ',', $data); // Unescape commas
+       $data = str_replace('&#x22;', '"', $data); // Unescape double quotes
+       $data = htmlspecialchars(str_replace("\\n", "\n", $data));
+
+       $s_page   = htmlspecialchars($vars['page']);
        $s_digest = htmlspecialchars($digest);
        $s_cols = MEMO_COLS;
        $s_rows = MEMO_ROWS;
@@ -94,17 +100,15 @@ function plugin_memo_convert()
 <form action="$script" method="post" class="memo">
  <div>
   <input type="hidden" name="memo_no" value="$memo_no" />
-  <input type="hidden" name="refer" value="$s_page" />
-  <input type="hidden" name="plugin" value="memo" />
-  <input type="hidden" name="digest" value="$s_digest" />
+  <input type="hidden" name="refer"   value="$s_page" />
+  <input type="hidden" name="plugin"  value="memo" />
+  <input type="hidden" name="digest"  value="$s_digest" />
   <textarea name="msg" rows="$s_rows" cols="$s_cols">$data</textarea><br />
-  <input type="submit" name="memo" value="$_btn_memo_update" />
+  <input type="submit" name="memo"    value="$_btn_memo_update" />
  </div>
 </form>
 EOD;
-       
-       $memo_no++;
-       
+
        return $string;
 }
 ?>