#!/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;