OSDN Git Service

ぱんだ:開発日記/2002-11-29参照
[pukiwiki/pukiwiki.git] / plugin / memo.inc.php
1 <?php
2 // $Id: memo.inc.php,v 1.4 2002/11/29 00:09:01 panda Exp $
3
4 /////////////////////////////////////////////////
5 // ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¥«¥é¥à¿ô
6 define("MEMO_COLS",80);
7 /////////////////////////////////////////////////
8 // ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¹Ô¿ô
9 define("MEMO_ROWS",5);
10
11 function plugin_memo_action()
12 {
13         global $post,$vars,$script,$cols,$rows,$del_backup,$do_backup;
14         global $_title_collided,$_msg_collided,$_title_updated;
15
16         $post["msg"] = preg_replace("/(\x0D\x0A)/","\n",$post["msg"]);
17         $post["msg"] = preg_replace("/(\x0D)/","\n",$post["msg"]);
18         $post["msg"] = preg_replace("/(\x0A)/","\n",$post["msg"]);
19
20         if($post["msg"])
21         {
22                 $post["msg"] = str_replace("\n","\\n",$post["msg"]);
23
24                 $postdata = "";
25                 $postdata_old  = file(get_filename(encode($post["refer"])));
26                 $memo_no = 0;
27
28                 $memo_body = $post["msg"];
29
30                 foreach($postdata_old as $line)
31                 {
32                         if(preg_match("/^#memo\(?.*\)?$/",$line))
33                         {
34                                 if($memo_no == $post["memo_no"] && $post["msg"]!="")
35                                 {
36                                         $postdata .= "#memo($memo_body)\n";
37                                         $line = "";
38                                 }
39                                 $memo_no++;
40                         }
41                         $postdata .= $line;
42                 }
43
44                 $postdata_input = "$memo_body\n";
45         }
46         else
47                 return;
48         
49         if(md5(@join("",@file(get_filename(encode($post["refer"]))))) != $post["digest"])
50         {
51                 $title = $_title_collided;
52                 
53                 $body = "$_msg_collided\n";
54
55                 $body .= "<form action=\"$script?cmd=preview\" method=\"post\">\n"
56                         ."<div>\n"
57                         ."<input type=\"hidden\" name=\"refer\" value=\"".$post["refer"]."\" />\n"
58                         ."<input type=\"hidden\" name=\"digest\" value=\"".$post["digest"]."\" />\n"
59                         ."<textarea name=\"msg\" rows=\"$rows\" cols=\"$cols\" wrap=\"virtual\" id=\"textarea\">$postdata_input</textarea><br />\n"
60                         ."</div>\n"
61                         ."</form>\n";
62         }
63         else
64         {
65                 $postdata = user_rules_str($postdata);
66
67                 // º¹Ê¬¥Õ¥¡¥¤¥ë¤ÎºîÀ®
68                 if(is_page($post["refer"]))
69                         $oldpostdata = join("",file(get_filename(encode($post["refer"]))));
70                 else
71                         $oldpostdata = "\n";
72                 if($postdata)
73                         $diffdata = do_diff($oldpostdata,$postdata);
74                 file_write(DIFF_DIR,$post["refer"],$diffdata);
75
76                 // ¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÎºîÀ®
77                 if(is_page($post["refer"]))
78                         $oldposttime = filemtime(get_filename(encode($post["refer"])));
79                 else
80                         $oldposttime = time();
81
82                 // ÊÔ½¸ÆâÍƤ¬²¿¤â½ñ¤«¤ì¤Æ¤¤¤Ê¤¤¤È¥Ð¥Ã¥¯¥¢¥Ã¥×¤âºï½ü¤¹¤ë?¤·¤Ê¤¤¤Ç¤¹¤è¤Í¡£
83                 if(!$postdata && $del_backup)
84                         backup_delete(BACKUP_DIR.encode($post["refer"]).".txt");
85                 else if($do_backup && is_page($post["refer"]))
86                         make_backup(encode($post["refer"]).".txt",$oldpostdata,$oldposttime);
87
88                 // ¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß
89                 file_write(DATA_DIR,$post["refer"],$postdata);
90
91                 // is_page¤Î¥­¥ã¥Ã¥·¥å¤ò¥¯¥ê¥¢¤¹¤ë¡£
92                 is_page($post["refer"],true);
93
94                 $title = $_title_updated;
95         }
96         $retvars["msg"] = $title;
97         $retvars["body"] = $body;
98         
99         $post["page"] = $post["refer"];
100         $vars["page"] = $post["refer"];
101         
102         return $retvars;
103 }
104 function plugin_memo_convert()
105 {
106         global $script,$memo_no,$vars,$digest;
107         global $_btn_memo_update,$vars;
108
109         if(func_num_args())
110                 $aryargs = func_get_args();
111
112         $data = str_replace("\\n","\n",$aryargs[0]);
113
114         if((arg_check("read")||$vars["cmd"] == ""||arg_check("unfreeze")||arg_check("freeze")||$vars["write"]||$vars["memo"]))
115                 $button = "<input type=\"submit\" name=\"memo\" value=\"$_btn_memo_update\" />\n";
116
117         $s_page = htmlspecialchars($vars['page']);
118         
119         $string = "<form action=\"$script\" method=\"post\" class=\"memo\">\n"
120                  ."<div>\n"
121                  ."<input type=\"hidden\" name=\"memo_no\" value=\"$memo_no\" />\n"
122                  ."<input type=\"hidden\" name=\"refer\" value=\"$s_page\" />\n"
123                  ."<input type=\"hidden\" name=\"plugin\" value=\"memo\" />\n"
124                  ."<input type=\"hidden\" name=\"digest\" value=\"$digest\" />\n"
125                  ."<textarea name=\"msg\" rows=\"".MEMO_ROWS."\" cols=\"".MEMO_COLS."\">\n$data</textarea><br />\n"
126                  .$button
127                  ."</div>\n"
128                  ."</form>";
129
130         $memo_no++;
131
132         return $string;
133 }
134 ?>