function Agony_init() {
// Get datbase setup - note that both pnDBGetConn() and pnDBGetTables()
// return arrays but we handle them differently. For pnDBGetConn()
// we currently just want the first item, which is the official
// database handle. For pnDBGetTables() we want to keep the entire
// tables array together for easy reference later on
$dbconn = & pnDBGetConn(true);
$pntable = & pnDBGetTables();
// -- Create tables
$agony_eve_skill_table = $pntable['agony_eve_skill'];
$agony_eve_skill_column = & $pntable['agony_eve_skill_column'];
$sql = "CREATE TABLE $agony_eve_skill_table (
$agony_eve_skill_column[id] INTEGER NOT NULL AUTO_INCREMENT UNIQUE,
$agony_eve_skill_column[name] VARCHAR(30) UNIQUE,
PRIMARY KEY ($agony_eve_skill_column[id])
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [21] "Create table Failed: $agony_eve_skill_table";
echo [22] $dbconn->ErrorNo();
return false;
}
$agony_pilot_table = $pntable['agony_pilot'];
$agony_pilot_column = & $pntable['agony_pilot_column'];
$sql = "CREATE TABLE $agony_pilot_table (
$agony_pilot_column[id] INTEGER NOT NULL AUTO_INCREMENT UNIQUE,
$agony_pilot_column[name] VARCHAR(30) NOT NULL,
$agony_pilot_column[birthdate] DATE NOT NULL,
$agony_pilot_column[ticker] VARCHAR(10) NOT NULL,
$agony_pilot_column[pn_uid] INTEGER,
PRIMARY KEY($agony_pilot_column[id])
FOREIGN KEY($agony_pilot_column[pn_uid])
REFERENCES pn_users(pn_uid),
CONSTRAINT agony_ap_c1 UNIQUE($agony_pilot_column[name],
$agony_pilot_column[birthdate])
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [23] "Create table Failed: $agony_pilot_table";
return false;
}
$agony_pilot_buddy_table = $pntable['agony_pilot_buddy'];
$agony_pilot_buddy_column = & $pntable['agony_pilot_buddy_column'];
$sql = "CREATE TABLE $agony_pilot_buddy_table (
$agony_pilot_buddy_column[pilot_id] INTEGER NOT NULL,
$agony_pilot_buddy_column[buddy_id] INTEGER NOT NULL,
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [24] "Create table Failed: $agony_seminar_table";
return false;
}
$agony_seminar_type_table = $pntable['agony_seminar_type'];
$agony_seminar_type_column = & $pntable['$agony_seminar_type_column'];
$sql = "CREATE TABLE $agony_seminar_type_table (
$agony_seminar_type_column[id] INTEGER NOT NULL AUTO_INCREMENT UNIQUE,
$agony_seminar_type_column[name] VARCHAR(30) NOT NULL UNIQUE,
$agony_seminar_type_column[description] VARCHAR(10000) NOT NULL,
$agony_seminar_type_column[forum_id] SMALLINT(5) NOT NULL,
$agony_seminar_type_column[forum_group_id] MEDIUMINT(8) NOT NULL,
FOREIGN KEY($agony_seminar_type_column[forum_group_id])
REFERENCES pn_phpbb_groups(group_id),
FOREIGN KEY($agony_seminar_type_column[forum_id])
REFERENCES pn_phpbb_forums(forum_id)
PRIMARY KEY($agony_seminar_type_column[id])
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [25] "Create table Failed: $agony_eve_skill_table";
return false;
}
$agony_seminar_table = $pntable['agony_seminar'];
$agony_seminar_column = & $pntable['agony_seminar_column'];
$sql = "CREATE TABLE $agony_seminar_table (
$agony_seminar_type_column[id] INTEGER NOT NULL AUTO_INCREMENT UNIQUE,
$agony_seminar_type_column[code] VARCHAR(45) NOT NULL UNIQUE,
$agony_seminar_type_column[seminar_type_id] INTEGER NOT NULL,
$agony_seminar_type_column[cost] INTEGER NOT NULL,
$agony_seminar_type_column[location] VARCHAR(45) NOT NULL,
$agony_seminar_type_column[instructor] INTEGER NOT NULL,
$agony_seminar_type_column[eve_date_time] DATETIME NOT NULL,
$agony_seminar_type_column[duration_hours] DECIMAL(5,2) NOT NULL,
$agony_seminar_type_column[eve_online_thread] VARCHAR(512),
$agony_seminar_type_column[notes] VARCHAR(2000) DEFAULT '' NOT NULL,
$agony_seminar_type_column[created_by] INTEGER NOT NULL,
PRIMARY KEY($agony_seminar_type_column[id]),
FOREIGN KEY($agony_seminar_type_column[seminar_type_id])
REFERENCES $agony_seminar_type_table($agony_seminar_type_column[id]),
FOREIGN KEY($agony_seminar_type_column[instructor])
REFERENCES $agony_pilot_table($agony_pilot_column[id]),
FOREIGN KEY($agony_seminar_type_column[created_by])
REFERENCES pn_users(pn_uid),
CONSTRAINT agony_as_c1 UNIQUE($agony_seminar_type_column[seminar_type_id],
$agony_seminar_type_column[eve_date_time]),
CONSTRAINT agony_as_c2 CHECK($agony_seminar_type_column[cost] < 0)
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [26] "Create table Failed: $agony_seminar_table";
return false;
}
$agony_prereq_skill_table = $pntable['agony_prereq_skill'];
$agony_prereq_skill_column = & $pntable['$agony_prereq_skill_column'];
$sql = "CREATE TABLE $agony_prereq_skill_table (
$agony_prereq_skill_column[seminar_type_id] INTEGER NOT NULL,
$agony_prereq_skill_column[eve_skill_id] INTEGER NOT NULL,
$agony_prereq_skill_column[level] INTEGER DEFAULT 1 NOT NULL,
$agony_prereq_skill_column[required] BOOLEAN DEFAULT 1 NOT NULL,
FOREIGN KEY($agony_prereq_skill_column[seminar_type_id])
REFERENCES $agony_seminar_type_table($agony_seminar_type_column[id]),
FOREIGN KEY($agony_prereq_skill_column[eve_skill_id])
REFERENCES $agony_eve_skill_table($agony_eve_skill_column[id]),
CONSTRAINT agony_apsk_c1 UNIQUE($agony_prereq_skill_column[seminar_type_id],
$agony_prereq_skill_column[eve_skill_id]),
CONSTRAINT agony_apsk_c2 CHECK($agony_prereq_skill_column[level] > 0),
CONSTRAINT agony_apsk_c3 CHECK($agony_prereq_skill_column[level] < 6)
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [27] "Create table Failed: $agony_prereq_skill_table";
return false;
}
$agony_prereq_seminar_table = $pntable['agony_prereq_seminar'];
$agony_prereq_seminar_column = & $pntable['agony_prereq_seminar_column'];
$sql = "CREATE TABLE $agony_prereq_seminar_table (
$agony_prereq_seminar_column[seminar_type_id] INTEGER NOT NULL,
$agony_prereq_seminar_column[prereq_seminar_type_id] INTEGER NOT NULL,
FOREIGN KEY($agony_prereq_seminar_column[seminar_type_id])
REFERENCES $agony_seminar_type_table($agony_seminar_type_column[id])],
FOREIGN KEY($agony_prereq_seminar_column[prereq_seminar_type_id])
REFERENCES $agony_seminar_type_table($agony_seminar_type_column[id]),
CONSTRAINT agony_aps_c1 UNIQUE($agony_prereq_seminar_column[seminar_type_id],
$agony_prereq_seminar_column[prereq_seminar_type_id])
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [28] "Create table Failed: $agony_prereq_seminar_table";
return false;
}
$agony_attending_pilot_table = $pntable['agony_attending_pilot'];
$agony_attending_pilot_column = & $pntable['agony_attending_pilot_column'];
$sql = "CREATE TABLE $agony_attending_pilot_table (
$agony_attending_pilot_column[pilot_id] INTEGER NOT NULL,
$agony_attending_pilot_column[seminar_id] INTEGER NOT NULL,
$agony_attending_pilot_column[paid] BOOLEAN DEFAULT 0 NOT NULL,
$agony_attending_pilot_column[attended] BOOLEAN DEFAULT 0 NOT NULL,
$agony_attending_pilot_column[has_credit] BOOLEAN DEFAULT 0 NOT NULL,
$agony_attending_pilot_column[buddy_id] INTEGER NOT NULL,
$agony_attending_pilot_column[notes] VARCHAR(3000) DEFAULT '',
FOREIGN KEY($agony_attending_pilot_column[pilot_id])
REFERENCES $agony_pilot_table($agony_pilot_column[id]),
FOREIGN KEY($agony_attending_pilot_column[buddy_id])
REFERENCES $agony_pilot_table($agony_pilot_column[id]),
FOREIGN KEY($agony_attending_pilot_column[seminar_id])
REFERENCES $agony_seminar_table($agony_seminar_column[id]),
CONSTRAINT agony_aap_c1 UNIQUE($agony_attending_pilot_column[pilot_id],
$agony_attending_pilot_column[seminar_id])
)";
$dbconn->Execute($sql);
if ($dbconn->ErrorNo() != 0) {
echo [29] "Create table Failed: $agony_attending_pilot_table";
return false;
}
// -- Set up config variables
pnConfigSetVar('Agony', 1);
return true;
}