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

CVS リポジトリの参照

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

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


Revision 1.20 - (hide annotations) (download) (as text)
Tue Jan 25 15:01:01 2011 UTC (13 years, 3 months ago) by henoheno
Branch: MAIN
CVS Tags: HEAD
Changes since 1.19: +5 -5 lines
File MIME type: application/x-httpd-php
htmlsc(): Just sugar for htmlspecialchars(), and a foundation

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

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