オープンソース・ソフトウェアの開発とダウンロード

CVS リポジトリの参照

Contents of /pukiwiki/pukiwiki/plugin/diff.inc.php

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.4 - (show annotations) (download) (as text)
Sat Apr 3 15:27:07 2004 UTC (20 years, 1 month ago) by arino
Branch: MAIN
CVS Tags: r1_4_3
Changes since 1.3: +95 -31 lines
File MIME type: application/x-httpd-php
BugTrack/553 差分の削除

1 <?php
2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
4 //
5 // $Id: diff.inc.php,v 1.3 2003/06/22 06:37:18 arino Exp $
6 //
7 //???若?吾??勲????茵?ず????
8 function plugin_diff_action()
9 {
10 global $vars;
11
12 check_readable($vars['page'],true,true);
13
14 $action = array_key_exists('action',$vars) ? $vars['action'] : '';
15
16 switch ($vars['action']) {
17 case 'delete':
18 $retval = plugin_diff_delete($vars['page']);
19 break;
20 default:
21 $retval = plugin_diff_view($vars['page']);
22 break;
23 }
24 return $retval;
25 }
26 // 綏?????茵?ず
27 function plugin_diff_view($page)
28 {
29 global $script,$hr;
30 global $_msg_notfound,$_msg_goto,$_msg_deleted,$_msg_addline,$_msg_delline,$_title_diff;
31 global $_title_diff_delete;
32
33 $r_page = rawurlencode($page);
34 $s_page = htmlspecialchars($page);
35
36 $menu = array(
37 "<li>$_msg_addline</li>",
38 "<li>$_msg_delline</li>"
39 );
40
41 if (is_page($page)) {
42 $menu[] = " <li>".str_replace('$1',"<a href=\"$script?$r_page\">$s_page</a>",$_msg_goto)."</li>";
43 } else {
44 $menu[] = " <li>".str_replace('$1',$s_page,$_msg_deleted)."</li>";
45 }
46
47 $delete_msg = '';
48 $filename = DIFF_DIR.encode($page).'.txt';
49 if (file_exists($filename)) {
50 $diffdata = htmlspecialchars(join('',file($filename)));
51 $diffdata = preg_replace('/^(\-)(.*)$/m','<span class="diff_removed"> $2</span>',$diffdata);
52 $diffdata = preg_replace('/^(\+)(.*)$/m','<span class="diff_added"> $2</span>',$diffdata);
53 $menu[] = "<li><a href=\"$script?cmd=diff&amp;action=delete&amp;page=$r_page\">" .
54 str_replace('$1',$s_page,$_title_diff_delete) . '</a></li>';
55 $msg = "<pre>$diffdata</pre>\n";
56 }
57 else if (is_page($page)) {
58 $diffdata = trim(htmlspecialchars(join('',get_source($page))));
59 $msg = "<pre><span class=\"diff_added\">$diffdata</span></pre>\n";
60 }
61 else {
62 return array('msg'=>$_title_diff, 'body'=>$_msg_notfound);
63 }
64
65 $menu = join("\n",$menu);
66 $body = <<<EOD
67 <ul>
68 $menu
69 </ul>
70 $hr
71 EOD;
72
73 return array('msg'=>$_title_diff,'body'=>$body.$msg);
74 }
75 // ???????≪??????????/span>
76 function plugin_diff_delete($page)
77 {
78 error_reporting(E_ALL);
79
80 global $script,$post,$adminpass;
81 global $_title_diff_delete,$_msg_diff_deleted,$_msg_diff_delete;
82 global $_msg_diff_adminpass,$_btn_delete,$_msg_invalidpass;
83
84 if (!is_pagename($page)) { return; }
85 $filename = DIFF_DIR.encode($page).'.txt';
86 if (!file_exists($filename)) { return; }
87
88 $s_page = htmlspecialchars($page);
89 $pass = array_key_exists('pass',$post) ? $post['pass'] : NULL;
90
91 if (md5($pass) == $adminpass) {
92 unlink($filename);
93 return array(
94 'msg' => $_title_diff_delete,
95 'body' => str_replace('$1',make_pagelink($page),$_msg_diff_deleted)
96 );
97 }
98 $body = ($pass === NULL) ? '' : "<p><strong>$_msg_invalidpass</strong></p>\n";
99
100 $msg_delete = str_replace('$1',make_pagelink($page),$_msg_diff_delete);
101 $body .= <<<EOD
102 <p>$_msg_diff_adminpass</p>
103 <form action="$script" method="post">
104 <div>
105 <input type="hidden" name="cmd" value="diff" />
106 <input type="hidden" name="page" value="$s_page" />
107 <input type="hidden" name="action" value="delete" />
108 <input type="password" name="pass" size="12" />
109 <input type="submit" name="ok" value="$_btn_delete" />
110 </div>
111 </form>
112 EOD;
113 return array('msg'=>$_title_diff_delete,'body'=>$body);
114 }
115 ?>

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26