OSDN Git Service

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