OSDN Git Service

BugTrack/253:#freeze check
[pukiwiki/pukiwiki.git] / plugin / edit.inc.php
1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: edit.inc.php,v 1.4 2003/03/08 13:19:02 panda 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         }
39         
40         // ¼ê½ñ¤­¤Î#freeze¤òºï½ü
41         $post['msg'] = preg_replace('/^#freeze\s*\n/','',$post['msg']);
42
43         if (!empty($post['add']))
44         {
45                 if ($post['add_top'])
46                 {
47                         $postdata  = $post['msg']."\n\n".@join('',get_source($post['page']));
48                 }
49                 else
50                 {
51                         $postdata  = @join('',get_source($post['page']))."\n\n".$post['msg'];
52                 }
53         }
54         else
55         {
56                 $postdata = $post['msg'];
57         }
58
59         $body = "$_msg_preview<br />\n";
60         if ($postdata == '')
61         {
62                 $body .= "<strong>$_msg_preview_delete</strong>";
63         }
64         $body .= "<br />\n";
65
66         if ($postdata != '')
67         {
68                 $postdata = make_str_rules($postdata);
69                 $postdata = explode("\n",$postdata);
70                 $postdata = drop_submit(convert_html($postdata));
71                 
72                 $body .= <<<EOD
73 <div id="preview">
74   $postdata
75 </div>
76 EOD;
77         }
78         $body .= edit_form($post['page'],$post['msg'],$post['digest'],FALSE);
79         
80         return array('msg'=>$_title_preview,'body'=>$body);
81 }
82
83 // ½ñ¤­¹þ¤ß¤â¤·¤¯¤ÏÄɲä⤷¤¯¤Ï¥³¥á¥ó¥È¤ÎÁÞÆþ
84 function plugin_edit_write()
85 {
86         global $script,$post,$vars;
87         global $_title_collided,$_msg_collided_auto,$_msg_collided,$_title_deleted;
88         
89         $retvars = array();
90         
91         // ¼ê½ñ¤­¤Î#freeze¤òºï½ü
92         $post['msg'] = preg_replace('/^#freeze\s*\n/','',$post['msg']);
93         
94         $postdata_input = $post['msg'];
95         
96         if (!empty($post['add'])) {
97                 if (!empty($post['add_top'])) {
98                         $postdata  = $post['msg'];
99                         $postdata .= "\n\n";
100                         $postdata .= @join('',get_source($post['page']));
101                 }
102                 else {
103                         $postdata  = @join('',get_source($post['page']));
104                         $postdata .= "\n\n";
105                         $postdata .= $post['msg'];
106                 }
107         }
108         else {
109                 $postdata = $post['msg'];
110         }
111
112         $oldpagesrc = join('',get_source($post['page']));
113         $oldpagemd5 = md5($oldpagesrc);
114         
115         if ($oldpagemd5 != $post['digest']) {
116                 $retvars['msg'] = $_title_collided;
117                 
118                 $post['digest'] = $vars['digest'] = $oldpagemd5;
119                 list($postdata_input,$auto) = do_update_diff($oldpagesrc,$postdata_input,$post['original']);
120                 
121                 $retvars['body'] = ($auto ? $_msg_collided_auto : $_msg_collided)."\n";
122                 
123                 if (TRUE) {
124                         global $do_update_diff_table;
125                         $retvars['body'] .= $do_update_diff_table;
126                 }
127                 
128                 $retvars['body'] .= edit_form($post['page'],$postdata_input,$oldpagemd5,FALSE);
129         }
130         else {
131                 page_write($post['page'],$postdata);
132                 
133                 if ($postdata != '') {
134                         header("Location: $script?".rawurlencode($post['page']));
135                         exit;
136                 }
137                 
138                 $retvars['msg'] = $_title_deleted;
139                 $retvars['body'] = str_replace('$1',htmlspecialchars($post['page']),$_title_deleted);
140         }
141         
142         return $retvars;
143 }
144
145 ?>