--- docman.php 2000/09/06 10:49:15 1.13
+++ docman.php 2000/09/13 08:08:22 1.20
@@ -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);
@@ -1100,6 +1105,62 @@
//////////////////////////////////////////////////////////////////
+// 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 && ($line[0]-time() < 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 "
";
+}
+
+//////////////////////////////////////////////////////////////////
+
// MAIN PROGRAM
// ============
// query parameters: capital letters
@@ -1193,10 +1254,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 +1270,7 @@
fclose($fh) ;
clearstatcache() ;
Logit($path,"saved changes");
+ ChangeLog($path,"saved changes");
break ;
case "CREATE" :
@@ -1238,6 +1301,7 @@
}
$tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ;
header("Location: " . $tstr) ;
+ ChangeLog($target,"created");
exit ;
}
break ;
@@ -1270,7 +1334,7 @@
}
}
else { // delete directory
- if ( ! @rmdir($fsDir) ) {
+ if ( ! @rrmdir($fsDir) ) {
Error("Rmdir failed", $tstr . $fsDir) ;
}
else {
@@ -1377,6 +1441,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