OSDN Git Service

BugTrack/696 Ignore case about #freeze flag
[pukiwiki/pukiwiki.git] / plugin / edit.inc.php
1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: edit.inc.php,v 1.17 2004/10/09 08:25:29 henoheno Exp $
6 //
7
8 // ÊÔ½¸
9 // cmd=edit
10 function plugin_edit_action()
11 {
12         global $vars, $_title_edit, $load_template_func;
13
14         $page = isset($vars['page']) ? $vars['page'] : '';
15
16         check_editable($page, true, true);
17
18         if (isset($vars['preview']) || ($load_template_func && isset($vars['template']))) {
19                 return plugin_edit_preview();
20         } else if (isset($vars['write'])) {
21                 return plugin_edit_write();
22         }
23
24         $postdata = @join('', get_source($page));
25         if ($postdata == '') {
26                 $postdata = auto_template($page);
27         }
28
29         return array('msg'=>$_title_edit, 'body'=>edit_form($page, $postdata));
30 }
31
32 // ¥×¥ì¥Ó¥å¡¼
33 function plugin_edit_preview()
34 {
35         global $vars;
36         global $_title_preview, $_msg_preview, $_msg_preview_delete;
37
38         $page = isset($vars['page']) ? $vars['page'] : '';
39
40         // Loading template
41         if (isset($vars['template_page']) && is_page($vars['template_page'])) {
42
43                 $vars['msg'] = join('', get_source($vars['template_page']));
44
45                 // ¸«½Ð¤·¤Î¸ÇÍ­IDÉô¤òºï½ü
46                 $vars['msg'] = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m', '$1$2', $vars['msg']);
47         }
48
49         // ¼ê½ñ¤­¤Î#freeze¤òºï½ü
50         $vars['msg'] = preg_replace('/^#freeze\s*$/im', '' ,$vars['msg']);
51         $postdata = $vars['msg'];
52
53         if (isset($vars['add']) && $vars['add']) {
54                 if (isset($vars['add_top']) && $vars['add_top']) {
55                         $postdata  = $postdata . "\n\n" . @join('', get_source($page));
56                 } else {
57                         $postdata  = @join('', get_source($page)) . "\n\n" . $postdata;
58                 }
59         }
60
61         $body = "$_msg_preview<br />\n";
62         if ($postdata == '')
63                 $body .= "<strong>$_msg_preview_delete</strong>";
64         $body .= "<br />\n";
65
66         if ($postdata) {
67                 $postdata = make_str_rules($postdata);
68                 $postdata = explode("\n", $postdata);
69                 $postdata = drop_submit(convert_html($postdata));
70                 $body .= '<div id="preview">' . $postdata . '</div>' . "\n";
71         }
72         $body .= edit_form($page, $vars['msg'], $vars['digest'], FALSE);
73
74         return array('msg'=>$_title_preview, 'body'=>$body);
75 }
76
77 // ½ñ¤­¹þ¤ß¤â¤·¤¯¤ÏÄɲä⤷¤¯¤Ï¥³¥á¥ó¥È¤ÎÁÞÆþ
78 function plugin_edit_write()
79 {
80         global $script, $vars;
81         global $_title_collided, $_msg_collided_auto, $_msg_collided, $_title_deleted;
82
83         $page = isset($vars['page']) ? $vars['page'] : '';
84         $retvars = array();
85
86         // ¼ê½ñ¤­¤Î#freeze¤òºï½ü
87         $vars['msg'] = preg_replace('/^#freeze\s*$/im','',$vars['msg']);
88         $postdata = $postdata_input = $vars['msg'];
89
90         if (isset($vars['add']) && $vars['add']) {
91                 if (isset($vars['add_top']) && $vars['add_top']) {
92                         $postdata  = $postdata . "\n\n" . @join('', get_source($page));
93                 } else {
94                         $postdata  = @join('', get_source($page)) . "\n\n" . $postdata;
95                 }
96         }
97
98         $oldpagesrc = join('', get_source($page));
99         $oldpagemd5 = md5($oldpagesrc);
100
101         if (! isset($vars['digest']) || $vars['digest'] != $oldpagemd5) {
102                 $vars['digest'] = $oldpagemd5;
103
104                 $retvars['msg'] = $_title_collided;
105                 list($postdata_input, $auto) = do_update_diff($oldpagesrc, $postdata_input, $vars['original']);
106
107                 $retvars['body'] = ($auto ? $_msg_collided_auto : $_msg_collided)."\n";
108
109                 if (TRUE) {
110                         global $do_update_diff_table;
111                         $retvars['body'] .= $do_update_diff_table;
112                 }
113
114                 $retvars['body'] .= edit_form($page, $postdata_input, $oldpagemd5, FALSE);
115         }
116         else {
117                 $notimestamp = (isset($vars['notimestamp']) && $vars['notimestamp'] != '');
118                 page_write($page, $postdata, $notimestamp);
119
120                 if ($postdata) {
121                         header("Location: $script?" . rawurlencode($page));
122                         exit;
123                 }
124
125                 $retvars['msg'] = $_title_deleted;
126                 $retvars['body'] = str_replace('$1', htmlspecialchars($page), $_title_deleted);
127                 tb_delete($page);
128         }
129
130         return $retvars;
131 }
132
133 ?>