--- docman.php 2000/09/06 10:49:15 1.13
+++ docman.php 2000/09/13 08:27:43 1.21
@@ -108,6 +108,7 @@
if ($user[0] == $GLOBALS["PHP_AUTH_USER"]) {
$gblUserName=$user[1];
$gblPw=$user[2];
+ $gblEmail=$user[3];
continue ;
}
}
@@ -120,8 +121,11 @@
$gblDateFmt="Y-m-d";
$gblTimeFmt="H:i:s";
-// Number of backup files to keep
- $gblNumBackups=5;
+ // Number of backup files to keep
+ $gblNumBackups=3;
+
+ // show red star if newer than ... days
+ $gblModDays=1;
// choose GifIcon below unless you have the M$
// WingDings font installed on your system
@@ -295,7 +299,7 @@
undelete";
}
$text .= " or revise files on this web site." ;
+ $text .= "
Examine list of files changed in last day or all changes.";
StartHTML("(Navigate)",$text) ;
echo "
time() ) {
+ if ( ($mod + $gblModDays*86400) > time() ) {
$a = " * " ;
+ $a .= " than $gblModDays days\"> * " ;
}
$file_lock=CheckLock($path);
@@ -971,8 +976,9 @@
//////////////////////////////////////////////////////////////////
-function Logit($target,$msg) {
+function LogIt($target,$msg) {
+ $target=stripSlashes($target);
$dir=dirname($target);
if (! file_exists($dir."/.log")) {
mkdir($dir."/.log",0700);
@@ -991,6 +997,7 @@
function WriteNote($target,$msg) {
+ $target=stripSlashes($target);
$dir=dirname($target);
if (! file_exists($dir."/.note")) {
mkdir($dir."/.note",0700);
@@ -1007,6 +1014,7 @@
function ReadNote($target) {
+ $target=stripSlashes($target);
$dir=dirname($target);
$file=basename($target);
$msg="";
@@ -1023,6 +1031,7 @@
function MoveTo($source,$folder) {
+ $source=stripSlashes($source);
$file=basename($source);
if (! file_exists($folder)) {
mkdir($folder,0700);
@@ -1036,6 +1045,7 @@
function Lock($target) {
+ $target=stripSlashes($target);
$dir=dirname($target);
if (! file_exists($dir."/.lock")) {
mkdir($dir."/.lock",0700);
@@ -1056,6 +1066,7 @@
function CheckLock($target) {
+ $target=stripSlashes($target);
$dir=dirname($target);
$file=basename($target);
$msg=0;
@@ -1070,6 +1081,7 @@
function Unlock($target) {
+ $target=stripSlashes($target);
$dir=dirname($target);
$file=basename($target);
if (file_exists($dir."/.lock/$file")) {
@@ -1100,6 +1112,63 @@
//////////////////////////////////////////////////////////////////
+// recursivly delete directory
+
+function rrmdir($dir) {
+ $handle=opendir($dir);
+ while ($file = readdir($handle)) {
+ if ($file != "." && $file != "..") {
+ if (is_dir("$dir/$file"))
+ rrmdir("$dir/$file");
+ else
+ if (! @unlink("$dir/$file")) return(0);
+ }
+ }
+ closedir($handle);
+ return @rmdir($dir);
+}
+
+//////////////////////////////////////////////////////////////////
+
+function ChangeLog($target,$msg) {
+
+ global $gblFsRoot;
+ $log=fopen("$gblFsRoot/.changelog","a+");
+ if (substr($target,0,strlen($gblFsRoot)) == $gblFsRoot)
+ $target=substr($target,strlen($gblFsRoot),strlen($target)-strlen($gblFsRoot));
+ fputs($log,time()."\t$target\t$GLOBALS[gblUserName]\t$msg\n");
+ fclose($log);
+
+}
+
+function DisplayChangeLog($day) {
+
+ global $gblFsRoot;
+ if (!file_exists("$gblFsRoot/.changelog")) return;
+ $log=fopen("$gblFsRoot/.changelog","r");
+ $logarr = array();
+ while($line = fgetcsv($log,255,"\t")) {
+ if ($day!=1 || ($day==1 && (time()-$line[0] < 24*60))) {
+ array_unshift($logarr,array($line[0],$line[1],$line[2],$line[3]));
+ }
+ }
+ fclose($log);
+ $cl1=" class=lst"; $cl2="";
+ print "\n";
+ while ($e = array_shift($logarr)) {
+ $cl=$cl1; $cl1=$cl2; $cl2=$cl;
+ $date = date("$GLOBALS[gblDateFmt]", $e[0]);
+ $time = date("$GLOBALS[gblTimeFmt]", $e[0]);
+ $dir = dirname($e[1]);
+ $file = basename($e[1]);
+ print "$date | $time | $dir/$file | $e[2] | $e[3] |
\n";
+ }
+ print "
";
+ print "".GifIcon(up)." Back to front page.
";
+}
+
+//////////////////////////////////////////////////////////////////
+
// MAIN PROGRAM
// ============
// query parameters: capital letters
@@ -1193,10 +1262,11 @@
if (isset($FILENAME)) {
Unlock($target);
}
+ ChangeLog($target,"updated");
break ;
case "SAVE" :
- $path = $gblFsRoot . escapeshellcmd($RELPATH) ;
+ $path = $gblFsRoot . $RELPATH ;
$writable = is_writeable($path) ;
$legaldir = is_writeable(dirname($path)) ;
$exists = (file_exists($path)) ? 1 : 0 ;
@@ -1208,6 +1278,7 @@
fclose($fh) ;
clearstatcache() ;
Logit($path,"saved changes");
+ ChangeLog($path,"saved changes");
break ;
case "CREATE" :
@@ -1238,6 +1309,7 @@
}
$tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ;
header("Location: " . $tstr) ;
+ ChangeLog($target,"created");
exit ;
}
break ;
@@ -1270,7 +1342,7 @@
}
}
else { // delete directory
- if ( ! @rmdir($fsDir) ) {
+ if ( ! @rrmdir($fsDir) ) {
Error("Rmdir failed", $tstr . $fsDir) ;
}
else {
@@ -1335,7 +1407,9 @@
// $A=Ci : checkin file $D/$F
// $A=V : view file (do nothing except log)
// default : display directory $D
-
+
+ $F=stripSlashes($F);
+
switch ($A) {
case "U" :
// upload to $relDir
@@ -1377,6 +1451,16 @@
header("Content-Disposition: attachment; filename=$F" );
Header("Location: ".urlpath("$relDir/$F"));
exit;
+ case "Ch" :
+ StartHTML("(File changes)","All changes chronologicaly...");
+ DisplayChangeLog(0); // all
+ EndHTML() ;
+ exit;
+ case "Ch1" :
+ StartHTML("(File changes)","Changes to files in last day...");
+ DisplayChangeLog(1);
+ EndHTML() ;
+ exit;
}
// default: display directory $relDir