OSDN Git Service

Cleanup. Shrink. Shrink quotation.
[pukiwiki/pukiwiki.git] / plugin / insert.inc.php
1 <?php
2 // $Id: insert.inc.php,v 1.12 2005/01/23 07:34:39 henoheno Exp $
3 //
4 // Text inserting box plugin
5
6 define('INSERT_COLS', 70); // Columns of textarea
7 define('INSERT_ROWS',  5); // Rows of textarea
8 define('INSERT_INS',   1); // Order of insertion (1:before the textarea, 0:after)
9
10 function plugin_insert_action()
11 {
12         global $script, $vars, $cols, $rows;
13         global $_title_collided, $_msg_collided, $_title_updated;
14
15         if (! isset($vars['msg']) || $vars['msg'] == '') return;
16
17         $vars['msg'] = preg_replace('/' . "\r" . '/', '', $vars['msg']);
18         $insert = ($vars['msg'] != '') ? "\n" . $vars['msg'] . "\n" : '';
19
20         $postdata = '';
21         $postdata_old  = get_source($vars['refer']);
22         $insert_no = 0;
23
24
25         foreach($postdata_old as $line) {
26                 if (! INSERT_INS) $postdata .= $line;
27                 if (preg_match('/^#insert$/i', $line)) {
28                         if ($insert_no == $vars['insert_no'])
29                                 $postdata .= $insert;
30                         $insert_no++;
31                 }
32                 if (INSERT_INS) $postdata .= $line;
33         }
34
35         $postdata_input = $insert . "\n";
36
37         $body = '';
38         if (md5(@join('', get_source($vars['refer']))) != $vars['digest']) {
39                 $title = $_title_collided;
40                 $body = $_msg_collided . "\n";
41
42                 $s_refer  = htmlspecialchars($vars['refer']);
43                 $s_digest = htmlspecialchars($vars['digest']);
44                 $s_postdata_input = htmlspecialchars($postdata_input);
45
46                 $body .= <<<EOD
47 <form action="$script?cmd=preview" method="post">
48  <div>
49   <input type="hidden" name="refer"  value="$s_refer" />
50   <input type="hidden" name="digest" value="$s_digest" />
51   <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
52  </div>
53 </form>
54 EOD;
55         } else {
56                 page_write($vars['refer'], $postdata);
57
58                 $title = $_title_updated;
59         }
60         $retvars['msg']  = $title;
61         $retvars['body'] = $body;
62
63         $vars['page'] = $vars['refer'];
64
65         return $retvars;
66 }
67
68 function plugin_insert_convert()
69 {
70         global $script, $vars, $digest;
71         global $_btn_insert;
72         static $numbers = array();
73
74         if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0;
75
76         $insert_no = $numbers[$vars['page']]++;
77
78         $s_page   = htmlspecialchars($vars['page']);
79         $s_digest = htmlspecialchars($digest);
80         $s_cols = INSERT_COLS;
81         $s_rows = INSERT_ROWS;
82         $string = <<<EOD
83 <form action="$script" method="post">
84  <div>
85   <input type="hidden" name="insert_no" value="$insert_no" />
86   <input type="hidden" name="refer"  value="$s_page" />
87   <input type="hidden" name="plugin" value="insert" />
88   <input type="hidden" name="digest" value="$s_digest" />
89   <textarea name="msg" rows="$s_rows" cols="$s_cols"></textarea><br />
90   <input type="submit" name="insert" value="$_btn_insert" />
91  </div>
92 </form>
93 EOD;
94
95         return $string;
96 }
97 ?>