- #!/usr/bin/perl
-
- use DBI;
-
- require Settings;
-
- sub LookUpEprintsMaxID
- # Find out the maximum eprintid for the archive
- {
- my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST", $DB_USER, $DB_PASS);
- my $query = $dbh->prepare("SELECT eprintid FROM archive ORDER BY eprintid DESC");
- $query->execute;
- my $numrows = $query->rows;
-
- my $maxID = 0;
- if ($numrows > 0) {
- @row = $query->fetchrow_array;
- $maxID = $row[0];
- }
-
- $query->finish;
- $dbh->disconnect;
-
- return $maxID;
- }
-
- sub IsAnRHDThesis
- # Determine if an eprint is a RHD thesis or not
- {
- local ($ID, *args) = @_;
- my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST", $DB_USER, $DB_PASS);
- my $query = $dbh->prepare("SELECT thesis_type FROM archive WHERE eprintid ='$ID'");
- $query->execute;
- my $numrows = $query->rows;
-
- my $isathesis = 0;
- if ($numrows > 0) {
- @row = $query->fetchrow_array;
- my $type = "\L$row[0]";
- if (($type =~ "phd") || ($type =~ "rmaster")) {
- $isathesis = 1;
- }
- }
-
- $query->finish;
- $dbh->disconnect;
-
- return $isathesis;
- }
-
- sub LookUpEprintsDate
- # Lookup the year of publication for an eprint with an eprintID of $ID
- {
- local ($ID, *args) = @_;
- my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST", $DB_USER, $DB_PASS);
- my $query = $dbh->prepare("SELECT date_effective FROM archive WHERE eprintid ='$ID'");
- $query->execute;
- my $numrows = $query->rows;
-
- my $year = 0;
- if ($numrows > 0) {
- @row = $query->fetchrow_array;
- $year = $row[0];
- }
- return $year;
- };
-
- require WriteADTpage;
-
- # ------------------MAIN PROCESS-----------------
-
- # If the ADT directory does not exist, create it
- if (!(-e $ADT_DIR)) {
- mkdir($ADT_DIR, 0755) || die "Failed to create adt directory\n";
- }
- chdir($ADT_DIR) || die "Failed to change working directory\n";
-
- my $indexfile = ">" . $ADT_DIR . "/index.html";
- open(INDEXFILEHANDLE, $indexfile) or die "Failed to open/create file: $indexfile\n";
- print INDEXFILEHANDLE "<html><head><title>ADT theses</title></head><body><p> </p>\n";
-
- # Look at all documents - if they exist and are a thesis then create a directory and an index page
- $MaxID = LookUpEprintsMaxID();
- for ($n = 1; $n <= $MaxID; $n++) {
- if (IsAnRHDThesis($n)) {
- $SubmittedDate = LookUpEprintsDate($n);
- $DirName = 'adt-' . $UNI_CODE . $SubmittedDate . '.' . sprintf("%04d", $n);
- # If the Eprint ADT directory does not exist, create it
- if (!(-e $DirName)) {
- mkdir($DirName, 0755) || die "Failed to create adt directory\n";
- }
- $FileName = $DirName . '/index.html';
- $ThesisURL = $BASE_URL . $ADT_URL . "/" . $FileName;
- if (!(WriteADTpage($FileName, $n))) {
- print "Missing metadata for eprint ID: $n\n";
- }
- else {
- print INDEXFILEHANDLE "<p><a href=$ThesisURL>$DirName</a></p>\n";
- }
- }
- }
-
- print INDEXFILEHANDLE "</body></html>\n";
- close INDEXFILEHANDLE;