OSDN Git Service

BugTrack2/383 Set Form authentication as default auth method type
[pukiwiki/pukiwiki.git] / plugin / insert.inc.php
1 <?php
2 // $Id: insert.inc.php,v 1.16 2011/01/25 15:01:01 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 (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
16         if (! isset($vars['msg']) || $vars['msg'] == '') return;
17
18         $vars['msg'] = preg_replace('/' . "\r" . '/', '', $vars['msg']);
19         $insert = ($vars['msg'] != '') ? "\n" . $vars['msg'] . "\n" : '';
20
21         $postdata = '';
22         $postdata_old  = get_source($vars['refer']);
23         $insert_no = 0;
24
25
26         foreach($postdata_old as $line) {
27                 if (! INSERT_INS) $postdata .= $line;
28                 if (preg_match('/^#insert$/i', $line)) {
29                         if ($insert_no == $vars['insert_no'])
30                                 $postdata .= $insert;
31                         $insert_no++;
32                 }
33                 if (INSERT_INS) $postdata .= $line;
34         }
35
36         $postdata_input = $insert . "\n";
37
38         $body = '';
39         if (md5(get_source($vars['refer'], TRUE, TRUE)) !== $vars['digest']) {
40                 $title = $_title_collided;
41                 $body  = $_msg_collided . "\n";
42
43                 $s_refer          = htmlsc($vars['refer']);
44                 $s_digest         = htmlsc($vars['digest']);
45                 $s_postdata_input = htmlsc($postdata_input);
46
47                 $body .= <<<EOD
48 <form action="$script?cmd=preview" method="post">
49  <div>
50   <input type="hidden" name="refer"  value="$s_refer" />
51   <input type="hidden" name="digest" value="$s_digest" />
52   <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
53  </div>
54 </form>
55 EOD;
56         } else {
57                 page_write($vars['refer'], $postdata);
58
59                 $title = $_title_updated;
60         }
61         $retvars['msg']  = $title;
62         $retvars['body'] = $body;
63
64         $vars['page'] = $vars['refer'];
65
66         return $retvars;
67 }
68
69 function plugin_insert_convert()
70 {
71         global $script, $vars, $digest;
72         global $_btn_insert;
73         static $numbers = array();
74
75         if (PKWK_READONLY) return ''; // Show nothing
76
77         if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0;
78
79         $insert_no = $numbers[$vars['page']]++;
80
81         $s_page   = htmlsc($vars['page']);
82         $s_digest = htmlsc($digest);
83         $s_cols   = INSERT_COLS;
84         $s_rows   = INSERT_ROWS;
85         $string   = <<<EOD
86 <form action="$script" method="post">
87  <div>
88   <input type="hidden" name="insert_no" value="$insert_no" />
89   <input type="hidden" name="refer"  value="$s_page" />
90   <input type="hidden" name="plugin" value="insert" />
91   <input type="hidden" name="digest" value="$s_digest" />
92   <textarea name="msg" rows="$s_rows" cols="$s_cols"></textarea><br />
93   <input type="submit" name="insert" value="$_btn_insert" />
94  </div>
95 </form>
96 EOD;
97
98         return $string;
99 }
100 ?>