science-ation/scripts/conv_db_awards.inc.php
2025-02-12 02:22:50 +00:00

145 lines
4.5 KiB
PHP

<?php
require_once('awards.inc.php');
$awards_map = array();
$prizes_map = array();
function conv_awards($mysqli, $old_prefix, $year)
{
global $sponsors_map, $awards_map, $prizes_map;
print("Convert Awards for $year...\n");
/* Delete existing old awards and prizes for the year */
$mysqli->query("DELETE FROM award_prizes WHERE award_id IN ( SELECT id FROM awards WHERE year='$year' )");
$mysqli->query("DELETE FROM awards WHERE year='$year'");
$awards = array();
/* Load the old awards, and save to a new award array */
$q = $mysqli->query("SELECT * FROM {$old_prefix}award_awards WHERE year='$year'");
while($a = $q->fetch_assoc()) {
$a['prizes'] = array();
$aid = $a['id'];
$q1 = $mysqli->query("SELECT * FROM {$old_prefix}award_prizes WHERE award_awards_id='$aid'");
while($p = $q1->fetch_assoc()) {
$a['prizes'][] = $p;
}
$a['categories'] = array();
$q1 = $mysqli->query("SELECT * FROM {$old_prefix}award_awards_projectcategories WHERE award_awards_id='$aid'");
while($c =$q1->fetch_assoc()) {
$a['categories'][] = $c['projectcategories_id'];
}
$awards[] = $a;
}
$award_types = array('divisional','special','grand','other');
/* Load award types and try to map to the static types */
$q = $mysqli->query("SELECT * FROM {$old_prefix}award_types WHERE year='$year'");
while($t = $q->fetch_assoc()) {
$n = strtolower($t['type']);
$type_map[(int)$t['id']] = 'other';
foreach($award_types as $new_t) {
if(strstr($n, $new_t) !== false) {
$type_map[(int)$t['id']] = $new_t;
}
}
}
/* Insert awards into db */
foreach($awards as $old_a) {
$aid = award_create($mysqli, $year);
$a = award_load($mysqli, $aid);
$a['name'] = $old_a['name'];
// print($a['name'] . "\n");
$a['s_desc'] = $old_a['description'];
$a['j_desc'] = $old_a['criteria'];
$a['presenter'] = $old_a['presenter'];
$a['notes'] = '';
$a['include_in_script'] = ($old_a['excludefromac'] == 1) ? 0 : 1;
$a['self_nominate'] = ($old_a['self_nominate'] == 'yes') ? 1 : 0;
$a['schedule_judges'] = ($old_a['schedule_judges'] == 'yes') ? 1 : 0;
$a['sponsor_uid'] = get_or_create_sponsor_uid_for_year($mysqli, (int)$old_a['sponsors_id'], $year);
/* Category IDs are the same, no need to map them */
$a['categories'] = $old_a['categories'];
$a['order'] = $old_a['order'];
$a['type'] = $type_map[(int)$old_a['award_types_id']];
foreach($old_a['prizes'] as &$old_p) {
$pid = prize_create($mysqli, $a);
$a['prizes'][$pid] = prize_load($mysqli, $pid);
$p = &$a['prizes'][$pid];
$p['name'] = $old_p['prize'];
// print(" ".$p['name'] . "\n");
$p['cash'] = $old_p['cash'];
$p['scholarship'] = $old_p['scholarship'];
$p['value'] = $old_p['value'];
$p['trophies'] = array();
if($old_p['trophystudentkeeper'] == 1) $p['trophies'] [] = 'keeper';
if($old_p['trophystudentreturn'] == 1) $p['trophies'] [] = 'return';
if($old_p['trophyschoolkeeper'] == 1) $p['trophies'] [] = 'school_keeper';
if($old_p['trophyschoolreturn'] == 1) $p['trophies'] [] = 'school_return';
$p['order'] = (int)$old_p['order'];
$p['number'] = (int)$old_p['number'];
if($p['number'] == 0) $p['number'] = 1;
// print_r($old_p);
if($old_p['excludefromac'] == 0) $a['include_in_script'] = 1;
$prizes_map[(int)$old_p['id']] = $pid;
}
award_save($mysqli, $a);
$awards_map[(int)$old_a['id']] = $aid;
}
}
function conv_winners($mysqli, $old_prefix, $year)
{
global $prizes_map, $projects_map, $fairs_map;
print("Convert Winners for $year...\n");
// print_r($prizes_map);
/* Delete existing old awards and prizes for the year */
$mysqli->query("DELETE FROM winners WHERE year='$year'");
/* Load the old awards, and save to a new award array */
$q = $mysqli->query("SELECT * FROM {$old_prefix}winners WHERE year='$year'");
while($w = $q->fetch_assoc()) {
$prize_id = (int)$w['awards_prizes_id'];
if(!array_key_exists($prize_id, $prizes_map)) {
$q1 = $mysqli->query("SELECT * FROM {$old_prefix}award_prizes WHERE id=$prize_id");
if($q1->num_rows == 0) {
print(" Old Prize ID $prize_id doesn't exist, but is awarded. Skipping.\n");
continue;
}
$r1 = $q1->fetch_assoc();
print(" Old Prize ID $prize_id doesn't exist in map, but is awarded, and exists: \n");
print_r($r1);
exit();
}
$prize_id = $prizes_map[(int)$w['awards_prizes_id']];
$pid = $projects_map[(int)$w['projects_id']];
$fair_id = (int)$w['fairs_id'];
$mysqli->query("INSERT INTO winners (`award_prize_id`,`pid`,`year`,`fair_id`)
VALUES('$prize_id','$pid','$year','$fair_id')");
}
}
?>