#!/usr/bin/perl


####################################################################
# Copyright @ 1995-1998 University of Rochester
# All Rights Reserved
####################################################################

## profRemoveTmpFiles.pl
## Remove tempory files from .../html/tmp/eps, .../html/tmp/gif

use lib '/ww/webwork/development/'; # mainWeBWorKDirectory;
use CGI qw(:standard);
use Global;
use Auth;
use strict;


# begin Timing code
use Benchmark;
my $beginTime = new Benchmark;
# end Timing code

&CGI::ReadParse;
my %inputs =%main::in;

# get information from CGI inputs  (see also below for additional information)

my $Course 			= $inputs{'course'};
my $User 			= $inputs{'user'};
my $Session_key 	= $inputs{'key'};


# verify that information has been received
unless($Course && $User && $Session_key) {
    &wwerror("$0","The script did not receive the proper input data.","","");
}


# establish environment for this script

&Global::getCourseEnvironment($inputs{'course'});

my $cgiURL   				= getWebworkCgiURL;
my $databaseDirectory 		= getCourseDatabaseDirectory($Course);
my $scriptDirectory   		= getWebworkScriptDirectory;
my $tmpDirectory          	= getCourseTempDirectory($Course);    


require "${scriptDirectory}$Global::DBglue_pl";
require "${scriptDirectory}$Global::FILE_pl";
require "${scriptDirectory}$Global::HTMLglue_pl";
require "${scriptDirectory}$Global::SCRtools_pl";

# log access
&Global::log_info('', query_string);


my $permissionsFile = &Global::getCoursePermissionsFile($inputs{'course'});
my $permissions = &get_permissions($inputs{'user'}, $permissionsFile);
my $keyFile = &Global::getCourseKeyFile($inputs{'course'});


#verify session key
&verify_key($inputs{'user'}, $inputs{'key'}, $keyFile, $inputs{'course'});

# verify permissions are correct
if ($permissions != $Global::instructor_permissions ) {
    print "permissions = $permissions instructor_permissions = $Global::instructor_permissions\n";
    print &html_NO_PERMISSION;
    exit(0);
}

##  clean up eps, html and gif directories.

my $epsDirectory = convertPath("${tmpDirectory}eps");
cleanUpDirectory($epsDirectory);
my $gifDirectory = convertPath("${tmpDirectory}gif");
cleanUpDirectory($gifDirectory);
my $hlDirectory = convertPath("${tmpDirectory}html");
cleanUpDirectory($hlDirectory);
cleanUpDirectory($tmpDirectory);
cleanUpSuccess();
exit;


## subroutines

sub cleanUpDirectory {
    my ($directory) = @_;
    
    return 0 unless (-e $directory);
    
    my ($file, $user, %active, $name);

    ##  We delete all files except
    ## those associated with active users

    my @activeUsers = ();
    my @allfiles = ();
    my @tmpArray = ();
    my @toDeleteFiles = ();

    opendir( DIRHANDLE, "$directory") or
      wwerror($0,"Can't open directory $directory",'','','');
    @allfiles =  grep( !/^\.\.?$/, readdir DIRHANDLE);
    closedir(DIRHANDLE);

    @activeUsers = get_active_users_from_keysDB($keyFile);

    foreach $user (@activeUsers) {$active{$user} =1;}

    foreach $file (@allfiles) {
       $file =~ m!(^[^-\.]*)!;       ##tmp files are named e.g. apizer-123245...
                                   ## or  apizer.123245...
       $name = $1;
       push @tmpArray, $file unless $active{$name};
    }    

    $directory = convertPath("$directory/");  ## add trailing /
    @toDeleteFiles  = map "$directory$_", @tmpArray;

    unlink(@toDeleteFiles);
    1;
}    




sub cleanUpSuccess {
  
  print"content-type:\n\n<H2>Success, tmp files removed. </H2>\n";
  print "The temporary eps, gif, and html files have been removed from 
    $epsDirectory, $gifDirectory and $hlDirectory. <BR>";
  print "Also temporary files have been removed from 
    $tmpDirectory.";
    
    
  print "<FORM METHOD=POST ACTION=\"${cgiURL}profLogin.pl\"><P>";
  print &sessionKeyInputs(\%inputs);
print <<"ENDOFHTML";
<INPUT TYPE=SUBMIT VALUE="Return to Prof Page">
</FORM>
ENDOFHTML
  print &htmlBOTTOM("profRemoveTmpFiles.pl", \%inputs);
}
































