[LON-CAPA-cvs] cvs: loncom /cgi thumbnail.gif

www lon-capa-cvs@mail.lon-capa.org
Wed, 29 May 2002 22:12:11 -0000


www		Wed May 29 18:12:11 2002 EDT

  Modified files:              
    /loncom/cgi	thumbnail.gif 
  Log:
  Can now find existing thumbnails and will ship them if younger than original.
  
  
Index: loncom/cgi/thumbnail.gif
diff -u loncom/cgi/thumbnail.gif:1.1 loncom/cgi/thumbnail.gif:1.2
--- loncom/cgi/thumbnail.gif:1.1	Wed May 29 16:57:16 2002
+++ loncom/cgi/thumbnail.gif	Wed May 29 18:12:11 2002
@@ -33,8 +33,30 @@
 
 # Example usage: /cgi-bin/thumbnail.gif?url=...
 
+
 use strict;
 
+sub filelocation {
+  my ($dir,$file) = @_;
+  my $location;
+  $file=~ s/^\s*(\S+)\s*$/$1/; ## strip off leading and trailing spaces
+  if ($file=~m:^/~:) { # is a contruction space reference
+    $location = $file;
+    $location =~ s:/~(.*?)/(.*):/home/$1/public_html/$2:;
+  } else {
+    $file=~s/\/home\/httpd\/html//;
+    $file=~s:^/*res::;
+    if ( !( $file =~ m:^/:) ) {
+      $location = $dir. '/'.$file;
+    } else {
+      $location = '/home/httpd/html/res'.$file;
+    }
+  }
+  $location=~s://+:/:g; # remove duplicate /
+  while ($location=~m:/\.\./:) {$location=~ s:/[^/]+/\.\./:/:g;} #remove dir/..
+  return $location;
+}
+
 $|=1;   # Autoflush after each print/write
 foreach (split(/&/,$ENV{'QUERY_STRING'})) {
     my ($name, $value) = split(/=/,$_);
@@ -45,13 +67,45 @@
     }
 }
 
+
+my $ofn=&filelocation('',$ENV{'form.url'});
+my $fn=$ofn.'.thumbnail';
+
+my $exists=1;
+my $generate=0;
+
+if (-e $ofn) {
+   my ($dev,$ino,$mode,$nlink,
+       $uid,$gid,$rdev,$size,
+       $atime,$omtime,$ctime,
+       $blksize,$blocks)=stat($ofn);
+   if (-e $fn) {
+       my ($dev,$ino,$mode,$nlink,
+           $uid,$gid,$rdev,$size,
+           $atime,$mtime,$ctime,
+           $blksize,$blocks)=stat($fn);
+       if ($omtime>$mtime) { $generate=1; }
+   } else {
+       $generate=1;
+   }
+} else {
+    $exists=0;
+}
+
+# FIXME: generate thumbnail instead
+if ($generate) { $exists=0; }
+
+
+unless ($exists) {
+   $fn='/home/httpd/html/res/adm/pages/nothumb.gif';
+}
+
 # Tell the server we are sending a gif graphic
 print <<END;
 Content-type: image/gif
 
 END
 
-my $fn='/home/httpd/html/res/adm/pages/nothumb.gif';
 open (IN,$fn);
 binmode(STDOUT);
 print join('',<IN>); # output image