OSDN Git Service

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