OSDN Git Service

BugTrack/2484 AutoTicketLink for JIRA: Support underscore key XX_X
[pukiwiki/pukiwiki.git] / plugin / versionlist.inc.php
index dfcb5b6..59e3291 100644 (file)
@@ -1,54 +1,92 @@
-<?
-/*
- * PukiWiki versionlist¥×¥é¥°¥¤¥ó
- *
- * CopyRight 2002 S.YOSHIMURA GPL2
- * http://masui.net/pukiwiki/ yosimura@excellence.ac.jp
- *
- * $Id: versionlist.inc.php,v 1.1 2002/12/05 05:02:27 panda Exp $
- */
+<?php
+// PukiWiki - Yet another WikiWikiWeb clone
+// $Id: versionlist.inc.php,v 1.17 2007/05/12 08:37:38 henoheno Exp $
+// Copyright (C)
+//      2002-2006 PukiWiki Developers Team
+//      2002      S.YOSHIMURA GPL2 yosimura@excellence.ac.jp
+// License: GPL v2
+//
+// Listing cvs revisions of files
 
-function plugin_versionlist_convert()
+function plugin_versionlist_action()
 {
-  global $vars, $script;
-  $SCRIPT_DIR = array("./","./plugin/");
-  /* Ãµº÷¥Ç¥£¥ì¥¯¥È¥êÀßÄê¡£ËÜÅö¤Ï¡¢pukiwiki.ini.php ¤«¤Ê */
+       global $_title_versionlist;
+
+       if (PKWK_SAFE_MODE) die_message('PKWK_SAFE_MODE prohibits this');
+
+       return array(
+               'msg' => $_title_versionlist,
+               'body' => plugin_versionlist_convert());
+}
 
-  if(func_num_args())
-    $aryargs = func_get_args();
-  else
-    $aryargs = array();
+function plugin_versionlist_convert()
+{
+       if (PKWK_SAFE_MODE) return ''; // Show nothing
+       
+       /* 探索ディレクトリ設定 */
+       $SCRIPT_DIR = array('./');
+       if (LIB_DIR   != './') array_push($SCRIPT_DIR, LIB_DIR);
+       if (DATA_HOME != './' && DATA_HOME != LIB_DIR) array_push($SCRIPT_DIR, DATA_HOME);
+       array_push($SCRIPT_DIR, PLUGIN_DIR, SKIN_DIR);
 
-  $lst = $comment = '';
+       $comments = array();
 
-  foreach($SCRIPT_DIR as $sdir){
-    if ($dir = @dir($sdir)){
-      while($file = $dir->read()){
-        if($file == ".." || $file == ".") continue;
-        if(!preg_match('/\.php$/i',$file)) continue;
-        
-        $comment = '';
-        $filenp = $sdir . $file;
-        $fd = fopen($filenp,'r');
-        while(!feof ($fd)){
-          if(preg_match('/Id:(.+),v (\d+\.\d+)/',fgets($fd,1024),$match)){
-            $comment = trim($match[1] . " -&gt; " .  $match[2]) ;
-            break;
-          }else {
-            continue;
-          }
-        }
-        fclose($fd);
-        if($comment != '')
-          $lst .= "<li>$filenp =&gt; $comment\n";
-      }
-    }
-    $dir->close();
-  }
-  if($lst=='') {
-    return '';
-  }
+       foreach ($SCRIPT_DIR as $sdir)
+       {
+               if (!$dir = @dir($sdir))
+               {
+                       // die_message('directory '.$sdir.' is not found or not readable.');
+                       continue;
+               }
+               while($file = $dir->read())
+               {
+                       if (!preg_match("/\.(php|lng|css|js)$/i",$file))
+                       {
+                               continue;
+                       }
+                       $data = join('',file($sdir.$file));
+                       $comment = array('file'=>htmlsc($sdir.$file),'rev'=>'','date'=>'');
+                       if (preg_match('/\$'.'Id: (.+),v (\d+\.\d+) (\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2})/',$data,$matches))
+                       {
+//                             $comment['file'] = htmlsc($sdir.$matches[1]);
+                               $comment['rev'] = htmlsc($matches[2]);
+                               $comment['date'] = htmlsc($matches[3]);
+                       }
+                       $comments[$sdir.$file] = $comment;
+               }
+               $dir->close();
+       }
+       if (count($comments) == 0)
+       {
+               return '';
+       }
+       ksort($comments, SORT_STRING);
+       $retval = '';
+       foreach ($comments as $comment)
+       {
+               $retval .= <<<EOD
 
-  return "<ul>$lst</ul>";
+  <tr>
+   <td>{$comment['file']}</td>
+   <td align="right">{$comment['rev']}</td>
+   <td>{$comment['date']}</td>
+  </tr>
+EOD;
+       }
+       $retval = <<<EOD
+<table border="1">
+ <thead>
+  <tr>
+   <th>filename</th>
+   <th>revision</th>
+   <th>date</th>
+  </tr>
+ </thead>
+ <tbody>
+$retval
+ </tbody>
+</table>
+EOD;
+       return $retval;
 }
 ?>