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

CVS リポジトリの参照

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

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

revision 1.3 by arino, Sun Jun 22 06:37:18 2003 UTC revision 1.4 by arino, Sat Apr 3 15:27:07 2004 UTC
# Line 7  Line 7 
7  //ページの差分を表示する  //ページの差分を表示する
8  function plugin_diff_action()  function plugin_diff_action()
9  {  {
10          global $script,$get,$hr;          global $vars;
         global $_msg_notfound,$_msg_goto,$_msg_addline,$_msg_delline,$_title_diff;  
11                    
12          check_readable($get['page'],true,true);          check_readable($vars['page'],true,true);
13                    
14          $r_page = rawurlencode($get['page']);          $action = array_key_exists('action',$vars) ? $vars['action'] : '';
         $s_page = htmlspecialchars($get['page']);  
         $s_name = strip_bracket($s_page);  
15                    
16          $msg = $_title_diff;          switch ($vars['action']) {
17          $body = '';          case 'delete':
18                            $retval = plugin_diff_delete($vars['page']);
19          if (is_page($get['page'])) {                  break;
20                  $link = str_replace('$1',"<a href=\"$script?$r_page\">$s_name</a>",$_msg_goto);          default:
21                  $body = <<<EOD                  $retval = plugin_diff_view($vars['page']);
22  <ul>                  break;                  
  <li>$_msg_addline</li>  
  <li>$_msg_delline</li>  
  <li>$link</li>  
 </ul>  
 $hr  
 EOD;  
23          }          }
24                    return $retval;
25          if (file_exists(DIFF_DIR.encode($get['page']).'.txt')) {  }
26                  $diffdata = htmlspecialchars(join('',file(DIFF_DIR.encode($get['page']).'.txt')));  // 差分を表示
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);                  $diffdata = preg_replace('/^(\-)(.*)$/m','<span class="diff_removed"> $2</span>',$diffdata);
52                  $diffdata = preg_replace('/^(\+)(.*)$/m','<span class="diff_added"> $2</span>',$diffdata);                  $diffdata = preg_replace('/^(\+)(.*)$/m','<span class="diff_added"> $2</span>',$diffdata);
53                  $body .= "<pre>$diffdata</pre>\n";                  $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($get['page'])) {          else if (is_page($page)) {
58                  $diffdata = trim(htmlspecialchars(join('',get_source($get['page']))));                  $diffdata = trim(htmlspecialchars(join('',get_source($page))));
59                  $body .= "<pre><span class=\"diff_added\">$diffdata</span></pre>\n";                  $msg = "<pre><span class=\"diff_added\">$diffdata</span></pre>\n";
60          }          }
61          else {          else {
62                  $title = $s_name;                  return array('msg'=>$_title_diff, 'body'=>$_msg_notfound);
                 $body = $_msg_notfound;  
63          }          }
64            
65          return array('msg'=>$msg,'body'=>$body);          $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    // バックアップを削除
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  ?>  ?>

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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