#/usr/bin/perl -w
###############################################################################
# Perl-skripti harjoitustyon ottamiseksi WWW:sta tai laittamiseksi sinne
#
#  Kutsun syntaksi:
#
#    luedemon.pl oppilastiedosto tuloshakemisto alihakemisto kurssi n|s [hakusana]
#
#  Esim:
#
#    luedemo.pl k:\demowww.txt n:\kurssit\cpp\demot\demo01 demo1 ohj n
#
#  luedemo siirtyy ensin hakemistoon (luo tarvittaessa)
#    n:\kurssit\cpp\demot\demo01\demo1
#  rupeaa lukemaan tiedostoa k:\demowww.txt
#  siirtyy/luo jokaisen opiskelijan kohdalla oman hakemiston 
#    n:\kurssit\cpp\demot\demo01\demo1\mattim
#  hakee oppilaan +DemoWWW hakemistosta tiedoston files.txt
#  ja tämän perusteella hakee oppilaan vastaukset hakemistoon
#    n:\kurssit\cpp\demot\demo01\demo1\mattim
#  (tarvittaessa myös alihakemistot)
#  Jos parametri salattu on n (no), niin haetaa ei-salaiset, jos s, niin
#  haetaan salaiset 
#
#  Tiedoston DemoWWW.txt muoto (erottimina tab-merkki):
# OpiskelijaID	Sukunimi	Etunimet	Email	      +DemoWWW	+Salattu
# 688	Lappalainen	Vesa Tapani	vesal@mit.jyu.fi	abc123	SALATTU  
#
# Jos +DemoWWW on tyhjä, haetaan opiskelijan files.txt-tiedostoa (ks. lue.pl)
# osoitteesta: http://www.it.jyu.fi/users/vesal/ohj/demo1
# Jos +DemoWWW ei sisällä erikoismerkkejä, niin silloin haetaan
# osoitteesta: http://www.it.jyu.fi/users/vesal/ohj/abc123/demo1
# Jos +DemoWWW sisältää yhdenkin /-merkin, niin silloin se tulkitaan
# täydelliseksi URLiksi ja sen perään katenoidaan demo1
#
# Jos hakusana on annettu, käsitellään vain ne oppilaat, joilla
# sukunimi + " " + etunimi + " " + email sisältää hakusanan
#
# Vesa Lappalainen 
#  13.1.2001
#
###############################################################################

use strict;

###############################################################################
sub trim($) { # merkkijono => merkkijono
  my($s) = @_;
# Poistetaan merkkijonosta alkutyhjat, lopputyhjat ja rivinvaihdot (lopusta)
# Esim. "   kissa istuu\n   "  => "kissa istuu"
  $s =~ s/^\s*//;      # alkutyhjat
  $s =~ s/\s*$//;      # lopputyhjat (myös rivinvaihdot)
# s/^\s*(.*?)\s*$/\1/;
  return $s;
}


###############################################################################
# Pääohjelma
###############################################################################
my $studentfile = $ARGV[0];
my $outputdir   = $ARGV[1];
my $demoname    = $ARGV[2];
my $course      = $ARGV[3];
my $getsecret   = $ARGV[4];
my $searchword  = $ARGV[5];

print "$studentfile $outputdir $demoname $course $getsecret $searchword\n";

open(STUDENTFILE,$studentfile) or die("File not found: $studentfile!\n");

mkdir $outputdir;
chdir $outputdir;
mkdir $demoname;
chdir $demoname;

my $row=<STUDENTFILE>;

while ( $row = trim(<STUDENTFILE>) ) {
  if ( $row eq "" ) { next; }
  my ($stunr,$lastname,$firstnames,$email,$demowww,$secret,$demoryhma) = split("\t",$row,7);
  my ($firstname,$rest) = split(" ",$firstnames,2);
  my ($user) = split("@",$email); 


  if (!( "$lastname $firstname $email" =~ /$searchword/i ) ) { next; }


  if ( ( $getsecret ne "s" ) && ( $secret eq "SALATTU" ) ) { print "SALATTU\n"; next; }
  if ( ( $getsecret eq "s" ) && ( $secret ne "SALATTU" ) ) { next;                    }

  $demowww = trim($demowww);
  mkdir $user;
  chdir $user;
  print "$stunr $lastname $firstname $user !$demowww!\n";

  my $www = "www.it.jyu.fi/users/$user/$course";

  if ( $demowww ne "" ) {
    $www = "$www/$demowww";
    if ( $demowww =~ /\// ) { $www = $demowww; }  # if / in demowww then this is the
                                                  # total path  
  }

  system("perl n:\\bin\\lue.pl GET files.txt $www/$demoname");

  chdir "..";
}
