OSDN Git Service

BugTrack/2484 AutoTicketLink for JIRA: Support underscore key XX_X
[pukiwiki/pukiwiki.git] / plugin / memo.inc.php
1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // memo.inc.php
4 // Copyright 2002-2017 PukiWiki Development Team
5 // License: GPL v2 or (at your option) any later version
6 //
7 // Memo box plugin
8
9 define('MEMO_COLS', 60); // Columns of textarea
10 define('MEMO_ROWS',  5); // Rows of textarea
11
12 function plugin_memo_action()
13 {
14         global $vars, $cols, $rows;
15         global $_title_collided, $_msg_collided, $_title_updated;
16
17         $script = get_base_uri();
18         if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing');
19         if (! isset($vars['msg']) || $vars['msg'] == '') return;
20
21         $memo_body = preg_replace('/' . "\r" . '/', '', $vars['msg']);
22         $memo_body = str_replace("\n", '\n', $memo_body);
23         $memo_body = str_replace('"', '&#x22;', $memo_body); // Escape double quotes
24         $memo_body = str_replace(',', '&#x2c;', $memo_body); // Escape commas
25
26         $postdata_old  = get_source($vars['refer']);
27         $postdata = '';
28         $memo_no = 0;
29         foreach($postdata_old as $line) {
30                 if (preg_match("/^#memo\(?.*\)?$/i", $line)) {
31                         if ($memo_no == $vars['memo_no']) {
32                                 $postdata .= '#memo(' . $memo_body . ')' . "\n";
33                                 $line = '';
34                         }
35                         ++$memo_no;
36                 }
37                 $postdata .= $line;
38         }
39
40         $postdata_input = $memo_body . "\n";
41
42         $body = '';
43         if (md5(get_source($vars['refer'], TRUE, TRUE)) !== $vars['digest']) {
44                 $title = $_title_collided;
45                 $body  = $_msg_collided . "\n";
46
47                 $s_refer          = htmlsc($vars['refer']);
48                 $s_digest         = htmlsc($vars['digest']);
49                 $s_postdata_input = htmlsc($postdata_input);
50
51                 $body .= <<<EOD
52 <form action="$script?cmd=preview" method="post">
53  <div>
54   <input type="hidden" name="refer"  value="$s_refer" />
55   <input type="hidden" name="digest" value="$s_digest" />
56   <textarea name="msg" rows="$rows" cols="$cols" id="textarea">$s_postdata_input</textarea><br />
57  </div>
58 </form>
59 EOD;
60         } else {
61                 page_write($vars['refer'], $postdata);
62
63                 $title = $_title_updated;
64         }
65         $retvars['msg']  = & $title;
66         $retvars['body'] = & $body;
67
68         $vars['page'] = $vars['refer'];
69
70         return $retvars;
71 }
72
73 function plugin_memo_convert()
74 {
75         global $vars, $digest;
76         global $_btn_memo_update;
77         static $numbers = array();
78
79         if (! isset($numbers[$vars['page']])) $numbers[$vars['page']] = 0;
80         $memo_no = $numbers[$vars['page']]++;
81
82         $data = func_get_args();
83         $data = implode(',', $data);    // Care all arguments
84         $data = str_replace('&#x2c;', ',', $data); // Unescape commas
85         $data = str_replace('&#x22;', '"', $data); // Unescape double quotes
86         $data = htmlsc(str_replace('\n', "\n", $data));
87
88         if (PKWK_READONLY) {
89                 $_script = '';
90                 $_submit = '';  
91         } else {
92                 $_script = get_base_uri();
93                 $_submit = '<input type="submit" name="memo"    value="' . $_btn_memo_update . '" />';
94         }
95
96         $s_page   = htmlsc($vars['page']);
97         $s_digest = htmlsc($digest);
98         $s_cols   = MEMO_COLS;
99         $s_rows   = MEMO_ROWS;
100         $string   = <<<EOD
101 <form action="$_script" method="post" class="memo">
102  <div>
103   <input type="hidden" name="memo_no" value="$memo_no" />
104   <input type="hidden" name="refer"   value="$s_page" />
105   <input type="hidden" name="plugin"  value="memo" />
106   <input type="hidden" name="digest"  value="$s_digest" />
107   <textarea name="msg" rows="$s_rows" cols="$s_cols">$data</textarea><br />
108   $_submit
109  </div>
110 </form>
111 EOD;
112
113         return $string;
114 }