forked from science-ation/science-ation
311 lines
8.3 KiB
PHP
311 lines
8.3 KiB
PHP
<?
|
|
require ('../common.inc.php');
|
|
require_once ('../user.inc.php');
|
|
user_auth_required('committee', 'admin');
|
|
require ('../lpdf.php');
|
|
require ('../lcsv.php');
|
|
|
|
if ($_GET['year'])
|
|
$foryear = $_GET['year'];
|
|
else
|
|
$foryear = $config['FAIRYEAR'];
|
|
|
|
if ($_GET['awardtype'] == 'All')
|
|
$awardtype = '';
|
|
else if ($_GET['awardtype'])
|
|
$awardtype = " AND award_types.type='" . $_GET['awardtype'] . "'";
|
|
else
|
|
$awardtype = '';
|
|
|
|
if (get_value_from_array($_GET, 'show_unawarded_awards') == 'on')
|
|
$show_unawarded_awards = 'yes';
|
|
else
|
|
$show_unawarded_awards = 'no';
|
|
|
|
if (get_value_from_array($_GET, 'show_unawarded_prizes') == 'on')
|
|
$show_unawarded_prizes = 'yes';
|
|
else
|
|
$show_unawarded_prizes = 'no';
|
|
|
|
$show_pronunciation = get_value_from_array($_GET, 'show_pronunciation' == 'on') ? TRUE : FALSE;
|
|
$group_by_prize = (get_value_from_array($_GET, 'group_by_prize') == 'on') ? true : false;
|
|
|
|
if (is_array($_GET['show_category'])) {
|
|
$show_category = array();
|
|
foreach ($_GET['show_category'] as $id => $val) {
|
|
$show_category[] = "projects.projectcategories_id='$id'";
|
|
}
|
|
if ($show_unawarded_prizes == 'yes') {
|
|
$show_category[] = 'projects.projectcategories_id IS NULL';
|
|
}
|
|
$and_categories = join(' OR ', $show_category);
|
|
} else {
|
|
$and_categories = '1';
|
|
}
|
|
|
|
$show_criteria = (get_value_from_array($_GET, 'show_criteria') == 'on') ? true : false;
|
|
|
|
$type = $_GET['type'];
|
|
if (!$type)
|
|
$type = 'pdf';
|
|
|
|
$scriptformat = $_GET['scriptformat'];
|
|
if (!$scriptformat)
|
|
$scriptformat = 'default';
|
|
|
|
if ($type == 'pdf') {
|
|
$rep = new lpdf(i18n($config['fairname']),
|
|
i18n('Awards Ceremony Script'),
|
|
$_SERVER['DOCUMENT_ROOT'] . $config['SFIABDIRECTORY'] . '/data/logo-200.gif');
|
|
|
|
$rep->newPage();
|
|
if ($scriptformat == 'default')
|
|
$rep->setFontSize(12);
|
|
if ($scriptformat == 'formatted')
|
|
$rep->setFontSize(14);
|
|
} else if ($type == 'csv') {
|
|
$rep = new lcsv(i18n('Awards Ceremony Script'));
|
|
}
|
|
$q = $pdo->prepare("SELECT
|
|
award_awards.id,
|
|
award_awards.name,
|
|
award_awards.presenter,
|
|
award_awards.description,
|
|
award_awards.criteria,
|
|
award_awards.order AS awards_order,
|
|
award_types.type,
|
|
sponsors.organization
|
|
FROM
|
|
award_awards,
|
|
award_types,
|
|
sponsors
|
|
WHERE
|
|
award_awards.year=?
|
|
AND award_types.year=?
|
|
AND award_awards.award_types_id=award_types.id
|
|
AND award_awards.sponsors_id=sponsors.id
|
|
AND award_awards.excludefromac='0',
|
|
?
|
|
ORDER BY awards_order");
|
|
$q->execute([$foryear,$foryear,$awardtype]);
|
|
|
|
show_pdo_errors_if_any($pdo);
|
|
// echo "<pre>";
|
|
if (!$q->rowCount()) {
|
|
$rep->output();
|
|
exit;
|
|
}
|
|
$awards = array();
|
|
|
|
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
|
|
$pq = $pdo->prepare("SELECT
|
|
award_prizes.prize,
|
|
award_prizes.number,
|
|
award_prizes.id,
|
|
award_prizes.cash,
|
|
award_prizes.scholarship,
|
|
winners.projects_id,
|
|
projects.projectnumber,
|
|
projects.title,
|
|
projects.projectcategories_id,
|
|
projects.registrations_id AS reg_id
|
|
FROM
|
|
award_prizes
|
|
LEFT JOIN winners ON winners.awards_prizes_id=award_prizes.id
|
|
LEFT JOIN projects ON projects.id=winners.projects_id
|
|
WHERE
|
|
award_awards_id=?
|
|
AND award_prizes.year=?
|
|
AND award_prizes.excludefromac='0'
|
|
AND (?)
|
|
ORDER BY
|
|
`order`,
|
|
projects.projectnumber");
|
|
$pq->execute([$r->id,$foryear,$and_categories]);
|
|
show_pdo_errors_if_any($pdo);
|
|
|
|
$r->winners = array();
|
|
$r->awarded_count = 0;
|
|
|
|
while ($w = $pq->fetch(PDO::FETCH_OBJ)) {
|
|
if ($w->projects_id) {
|
|
$r->awarded_count++;
|
|
}
|
|
if ($r->type == 'Divisional' && $group_by_prize == true) {
|
|
/* Search awards for an award name that matches this prize */
|
|
$found = false;
|
|
foreach ($awards as &$p_award) {
|
|
if ($p_award->name == $w->prize) {
|
|
/*
|
|
* Match! Set the prize name to the award name,
|
|
* and add the prize to the award
|
|
*/
|
|
$w->prize = $r->name;
|
|
$p_award->winners[] = $w;
|
|
$found = true;
|
|
// echo "Add to award {$p_award->name}: "; print_r($w);
|
|
break;
|
|
}
|
|
}
|
|
if ($found == false) {
|
|
/* Make a new award and set it equal to the prize name */
|
|
$n = $r->name;
|
|
$new_award = clone ($r);
|
|
$new_award->name = $w->prize;
|
|
/* Now add the prize with the award's name */
|
|
$w->prize = $n;
|
|
$new_award->winners[] = $w;
|
|
$awards[] = $new_award;
|
|
// echo "Create Award:"; print_r($new_award);
|
|
}
|
|
} else {
|
|
// echo "Add non-div winner\n";
|
|
$r->winners[] = $w;
|
|
}
|
|
}
|
|
|
|
if ($show_unawarded_awards == 'no' && $r->awarded_count == 0) {
|
|
/* No winners */
|
|
continue;
|
|
}
|
|
|
|
if ($r->type == 'Divisional' && $group_by_prize == true) {
|
|
/* Do nothing */
|
|
} else {
|
|
$awards[] = $r;
|
|
}
|
|
}
|
|
// echo '<pre>'; print_r($awards);
|
|
|
|
foreach ($awards as $r) {
|
|
if ($scriptformat == 'formatted')
|
|
$rep->newPage();
|
|
|
|
if ($scriptformat == 'default')
|
|
$rep->heading("$r->name ($r->type)");
|
|
if ($scriptformat == 'formatted') {
|
|
$rep->setFontBold();
|
|
$rep->addText("$r->name ($r->type)");
|
|
$rep->setFontNormal();
|
|
}
|
|
if ($r->type != 'Divisional')
|
|
$rep->addText(i18n('Sponsored by: %1', array($r->organization)));
|
|
if ($r->presenter)
|
|
$rep->addText(i18n('Presented by: %1', array($r->presenter)));
|
|
if ($r->description)
|
|
$rep->addText(i18n('Description: %1', array($r->description)));
|
|
if ($show_criteria)
|
|
$rep->addText(i18n('Criteria: %1', array($r->criteria)));
|
|
|
|
if ($scriptformat == 'formatted')
|
|
$rep->nextline();
|
|
|
|
if ($r->awarded_count == 0) {
|
|
$rep->addText('Not awarded');
|
|
}
|
|
|
|
$prevprizeid = -1;
|
|
|
|
foreach ($r->winners as $pr) {
|
|
if ($pr->projectnumber || $show_unawarded_prizes == 'yes') {
|
|
if ($prevprizeid != $pr->id) {
|
|
$prizetext = $pr->prize;
|
|
|
|
if ($pr->cash || $pr->scholarship) {
|
|
$prizetext .= ' (';
|
|
if ($pr->cash && $pr->scholarship)
|
|
$prizetext .= "\$$pr->cash cash / \$$pr->scholarship scholarship";
|
|
else if ($pr->cash)
|
|
$prizetext .= "\$$pr->cash cash";
|
|
else if ($pr->scholarship)
|
|
$prizetext .= "\$$pr->scholarship scholarship";
|
|
$prizetext .= ')';
|
|
}
|
|
if ($scriptformat == 'default')
|
|
$rep->addText($prizetext);
|
|
if ($scriptformat == 'formatted') {
|
|
$rep->setFontBold();
|
|
$rep->addText($prizetext);
|
|
$rep->setFontNormal();
|
|
$rep->nextline();
|
|
}
|
|
|
|
$prevprizeid = $pr->id;
|
|
}
|
|
|
|
if ($pr->projectnumber) {
|
|
if ($scriptformat == 'default')
|
|
$rep->addText(" ($pr->projectnumber) $pr->title");
|
|
|
|
$sq = $pdo->prepare("SELECT students.firstname,
|
|
students.lastname,
|
|
students.pronunciation,
|
|
students.schools_id,
|
|
schools.school
|
|
FROM
|
|
students,
|
|
schools
|
|
WHERE
|
|
students.registrations_id=?
|
|
AND students.schools_id=schools.id
|
|
");
|
|
$sq->execute([$pr->reg_id]);
|
|
|
|
$students = ' Students: ';
|
|
$studnum = 0;
|
|
$pronounce = '';
|
|
$rawpronounce = '';
|
|
while ($studentinfo = $sq->fetch(PDO::FETCH_OBJ)) {
|
|
if ($studnum > 0)
|
|
$students .= ', ';
|
|
$students .= "$studentinfo->firstname $studentinfo->lastname";
|
|
|
|
if ($studnum > 0)
|
|
$pronounce .= ', ';
|
|
$pronounce .= "\"{$studentinfo->pronunciation}\"";
|
|
$rawpronounce .= "{$studentinfo->pronunciation}";
|
|
|
|
$student_winner[$studnum] = "$studentinfo->firstname $studentinfo->lastname";
|
|
$student_win_pronunc[$studnum] = "$studentinfo->pronunciation";
|
|
$student_school[$studnum] = $studentinfo->school;
|
|
$studnum++;
|
|
}
|
|
|
|
if ($scriptformat == 'default') {
|
|
$rep->addText($students);
|
|
if (trim($rawpronounce) != '' && $show_pronunciation == TRUE)
|
|
$rep->addText(" Pronunciation: $pronounce");
|
|
$rep->addText(" School: {$student_school[0]}");
|
|
}
|
|
if ($scriptformat == 'formatted') {
|
|
$rep->addTextX("$pr->projectnumber", 0.5);
|
|
for ($x = 0; $x < $studnum; $x++) {
|
|
$rep->addTextX($student_winner[$x], 1.4);
|
|
$rep->addTextX($student_school[$x], 5.5);
|
|
if ($show_pronunciation == TRUE && $student_win_pronunc[$x]) {
|
|
$rep->nextline();
|
|
$rep->addTextX("({$student_win_pronunc[$x]})", 2.0);
|
|
}
|
|
if ($type == 'pdf')
|
|
$rep->nextline();
|
|
}
|
|
if (($studnum == 1) && ($type == 'csv'))
|
|
$rep->addTextX('');
|
|
if (($studnum == 1) && ($type == 'csv'))
|
|
$rep->addTextX('');
|
|
$rep->addText($pr->title, 'left', 1.4);
|
|
if ($type == 'pdf')
|
|
$rep->nextline();
|
|
$rep->nextline();
|
|
}
|
|
} else {
|
|
$rep->addText(' Prize not awarded');
|
|
}
|
|
}
|
|
}
|
|
$rep->nextLine();
|
|
}
|
|
|
|
$rep->output();
|
|
?>
|