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

CVS リポジトリの参照

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

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


Revision 1.16 - (show annotations) (download) (as text)
Sat Dec 10 10:28:48 2005 UTC (18 years, 4 months ago) by henoheno
Branch: MAIN
Changes since 1.15: +20 -20 lines
File MIME type: application/x-httpd-php
BugTrack/779: Cleanup/Simplify.
* Added a copyright header
* Removed redundant Japanese comments
* Simplify regexes
* Double quotes => Single quotes

1 <?php
2 // PukiWiki - Yet another WikiWikiWeb clone.
3 // $Id: diff.inc.php,v 1.15 2005/12/09 10:41:06 teanan Exp $
4 // Copyright (C)
5 // 2002-2005 PukiWiki Developers Team
6 // 2002 Originally written by yu-ji
7 // License: GPL v2 or (at your option) any later version
8 //
9 // Showing colored-diff plugin
10
11 function plugin_diff_action()
12 {
13 global $vars;
14
15 $page = isset($vars['page']) ? $vars['page'] : '';
16 check_readable($page, true, true);
17
18 $action = isset($vars['action']) ? $vars['action'] : '';
19 switch ($action) {
20 case 'delete': $retval = plugin_diff_delete($page); break;
21 default: $retval = plugin_diff_view($page); break;
22 }
23 return $retval;
24 }
25
26 function plugin_diff_view($page)
27 {
28 global $script, $hr;
29 global $_msg_notfound, $_msg_goto, $_msg_deleted, $_msg_addline, $_msg_delline, $_title_diff;
30 global $_title_diff_delete;
31
32 $r_page = rawurlencode($page);
33 $s_page = htmlspecialchars($page);
34
35 $menu = array(
36 "<li>$_msg_addline</li>",
37 "<li>$_msg_delline</li>"
38 );
39
40 $is_page = is_page($page);
41 if ($is_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 $filename = DIFF_DIR . encode($page) . '.txt';
48 if (file_exists($filename)) {
49 $diffdata = htmlspecialchars(join('', file($filename)));
50
51 // Cut diff markers ('+' or '-' or ' ')
52 $diffdata = preg_replace('/^\-(.*)$/m', '<span class="diff_removed">$1</span>', $diffdata);
53 $diffdata = preg_replace('/^\+(.*)$/m', '<span class="diff_added" >$1</span>', $diffdata);
54 $diffdata = preg_replace('/^ (.*)$/m', '$1', $diffdata);
55
56 if (! PKWK_READONLY) {
57 $menu[] = '<li><a href="' . $script . '?cmd=diff&amp;action=delete&amp;page=' .
58 $r_page . '">"' . str_replace('$1', $s_page, $_title_diff_delete) . '</a></li>';
59 }
60
61 $msg = '<pre>' . $diffdata . '</pre>' . "\n";
62 } else if ($is_page) {
63 $diffdata = trim(htmlspecialchars(join('', get_source($page))));
64 $msg = '<pre><span class="diff_added">' . $diffdata . '</span></pre>' . "\n";
65 } else {
66 return array('msg'=>$_title_diff, 'body'=>$_msg_notfound);
67 }
68
69 $menu = join("\n", $menu);
70 $body = <<<EOD
71 <ul>
72 $menu
73 </ul>
74 $hr
75 EOD;
76
77 return array('msg'=>$_title_diff, 'body'=>$body . $msg);
78 }
79
80 function plugin_diff_delete($page)
81 {
82 global $script, $vars;
83 global $_title_diff_delete, $_msg_diff_deleted;
84 global $_msg_diff_adminpass, $_btn_delete, $_msg_invalidpass;
85
86 $filename = DIFF_DIR . encode($page) . '.txt';
87 $body = '';
88 if (! is_pagename($page)) $body = 'Invalid page name';
89 if (! file_exists($filename)) $body = make_pagelink($page) . '\'s diff seems not found';
90 if ($body) return array('msg'=>$_title_diff_delete, 'body'=>$body);
91
92 if (isset($vars['pass'])) {
93 if (pkwk_login($vars['pass'])) {
94 unlink($filename);
95 return array(
96 'msg' => $_title_diff_delete,
97 'body' => str_replace('$1', make_pagelink($page), $_msg_diff_deleted)
98 );
99 } else {
100 $body .= '<p><strong>' . $_msg_invalidpass . '</strong></p>' . "\n";
101 }
102 }
103
104 $s_page = htmlspecialchars($page);
105 $body .= <<<EOD
106 <p>$_msg_diff_adminpass</p>
107 <form action="$script" method="post">
108 <div>
109 <input type="hidden" name="cmd" value="diff" />
110 <input type="hidden" name="page" value="$s_page" />
111 <input type="hidden" name="action" value="delete" />
112 <input type="password" name="pass" size="12" />
113 <input type="submit" name="ok" value="$_btn_delete" />
114 </div>
115 </form>
116 EOD;
117
118 return array('msg'=>$_title_diff_delete, 'body'=>$body);
119 }
120 ?>

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