OSDN Git Service

BugTrack/339: NAVI_EXCLUDE_PATTERNが効かない問題を修理
[pukiwiki/pukiwiki.git] / plugin / insert.inc.php
1 <?php
2 // $Id: insert.inc.php,v 1.8 2003/04/13 06:28:52 arino Exp $
3
4 /////////////////////////////////////////////////
5 // ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¥«¥é¥à¿ô
6 define('INSERT_COLS',70);
7 /////////////////////////////////////////////////
8 // ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¹Ô¿ô
9 define('INSERT_ROWS',5);
10 /////////////////////////////////////////////////
11 // ÁÞÆþ¤¹¤ë°ÌÃÖ 1:Íó¤ÎÁ° 0:Íó¤Î¸å
12 define('INSERT_INS',1);
13
14 function plugin_insert_action()
15 {
16         global $script,$post,$vars,$cols,$rows;
17         global $_title_collided,$_msg_collided,$_title_updated;
18         
19         if ($post['msg'] == '') {
20                 return;
21         }
22         
23         $post["msg"] = preg_replace("/\r/",'',$post['msg']);
24         
25         $postdata = '';
26         $postdata_old  = get_source($post['refer']);
27         $insert_no = 0;
28
29         $insert = ($post['msg'] == '') ? '' : "\n{$post['msg']}\n";
30
31         foreach($postdata_old as $line)
32         {
33                 if (!INSERT_INS) {
34                         $postdata .= $line;
35                 }
36                 if (preg_match('/^#insert$/',$line)) {
37                         if ($insert_no == $post['insert_no']) {
38                                 $postdata .= $insert;
39                         }
40                         $insert_no++;
41                 }
42                 if (INSERT_INS) {
43                         $postdata .= $line;
44                 }
45         }
46         
47         $postdata_input = "$insert\n";
48         
49         if (md5(@join('',get_source($post['refer']))) != $post['digest']) {
50                 $title = $_title_collided;
51                 $body = "$_msg_collided\n";
52
53                 $s_refer = htmlspecialchars($post['refer']);
54                 $s_digest = htmlspecialchars($post['digest']);
55                 $s_postdata_input = htmlspecialchars($postdata_input);
56                 
57                 $body .= <<<EOD
58 <form action="$script?cmd=preview" method="post">
59  <div>
60   <input type="hidden" name="refer" value="$s_refer" />
61   <input type="hidden" name="digest" value="$s_digest" />
62   <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
63  </div>
64 </form>
65 EOD;
66         }
67         else {
68                 page_write($post['refer'],$postdata);
69                 
70                 $title = $_title_updated;
71         }
72         $retvars['msg'] = $title;
73         $retvars['body'] = $body;
74
75         $post['page'] = $vars['page'] = $post['refer'];
76
77         return $retvars;
78 }
79 function plugin_insert_convert()
80 {
81         global $script,$vars,$digest;
82         global $_btn_insert;
83         static $numbers = array();
84         
85         if (!array_key_exists($vars['page'],$numbers))
86         {
87                 $numbers[$vars['page']] = 0;
88         }
89         $insert_no = $numbers[$vars['page']]++;
90         
91         $s_page = htmlspecialchars($vars['page']);
92         $s_digest = htmlspecialchars($digest);
93         $s_cols = INSERT_COLS;
94         $s_rows = INSERT_ROWS;
95         $string = <<<EOD
96 <form action="$script" method="post">
97  <div>
98   <input type="hidden" name="insert_no" value="$insert_no" />
99   <input type="hidden" name="refer" value="$s_page" />
100   <input type="hidden" name="plugin" value="insert" />
101   <input type="hidden" name="digest" value="$s_digest" />
102   <textarea name="msg" rows="$s_rows" cols="$s_cols"></textarea><br />
103   <input type="submit" name="insert" value="$_btn_insert" />
104  </div>
105 </form>
106 EOD;
107         
108         return $string;
109 }
110 ?>