OSDN Git Service

BugTrack/2256 edit: Handle template loading button
[pukiwiki/pukiwiki.git] / plugin / memo.inc.php
1 <?php
2 // $Id: memo.inc.php,v 1.17 2011/01/25 15:01:01 henoheno Exp $
3 //
4 // Memo box plugin
5
6 define('MEMO_COLS', 60); // Columns of textarea
7 define('MEMO_ROWS',  5); // Rows of textarea
8
9 function plugin_memo_action()
10 {
11         global $script, $vars, $cols, $rows;
12         global $_title_collided, $_msg_collided, $_title_updated;
13
14         if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
15         if (! isset($vars['msg']) || $vars['msg'] == '') return;
16
17         $memo_body = preg_replace('/' . "\r" . '/', '', $vars['msg']);
18         $memo_body = str_replace("\n", '\n', $memo_body);
19         $memo_body = str_replace('"', '&#x22;', $memo_body); // Escape double quotes
20         $memo_body = str_replace(',', '&#x2c;', $memo_body); // Escape commas
21
22         $postdata_old  = get_source($vars['refer']);
23         $postdata = '';
24         $memo_no = 0;
25         foreach($postdata_old as $line) {
26                 if (preg_match("/^#memo\(?.*\)?$/i", $line)) {
27                         if ($memo_no == $vars['memo_no']) {
28                                 $postdata .= '#memo(' . $memo_body . ')' . "\n";
29                                 $line = '';
30                         }
31                         ++$memo_no;
32                 }
33                 $postdata .= $line;
34         }
35
36         $postdata_input = $memo_body . "\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_memo_convert()
70 {
71         global $script, $vars, $digest;
72         global $_btn_memo_update;
73         static $numbers = array();
74
75         if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0;
76         $memo_no = $numbers[$vars['page']]++;
77
78         $data = func_get_args();
79         $data = implode(',', $data);    // Care all arguments
80         $data = str_replace('&#x2c;', ',', $data); // Unescape commas
81         $data = str_replace('&#x22;', '"', $data); // Unescape double quotes
82         $data = htmlsc(str_replace('\n', "\n", $data));
83
84         if (PKWK_READONLY) {
85                 $_script = '';
86                 $_submit = '';  
87         } else {
88                 $_script = & $script;
89                 $_submit = '<input type="submit" name="memo"    value="' . $_btn_memo_update . '" />';
90         }
91
92         $s_page   = htmlsc($vars['page']);
93         $s_digest = htmlsc($digest);
94         $s_cols   = MEMO_COLS;
95         $s_rows   = MEMO_ROWS;
96         $string   = <<<EOD
97 <form action="$_script" method="post" class="memo">
98  <div>
99   <input type="hidden" name="memo_no" value="$memo_no" />
100   <input type="hidden" name="refer"   value="$s_page" />
101   <input type="hidden" name="plugin"  value="memo" />
102   <input type="hidden" name="digest"  value="$s_digest" />
103   <textarea name="msg" rows="$s_rows" cols="$s_cols">$data</textarea><br />
104   $_submit
105  </div>
106 </form>
107 EOD;
108
109         return $string;
110 }
111 ?>