science-ation/winners.php

316 lines
9.4 KiB
PHP

<?
/*
* This file is part of the 'Science Fair In A Box' project
* SFIAB Website: http://www.sfiab.ca
*
* Copyright (C) 2005 Sci-Tech Ontario Inc <info@scitechontario.org>
* Copyright (C) 2005 James Grant <james@lightbox.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation, version 2.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
?>
<?
require ('common.inc.php');
require ('projects.inc.php');
require_once ('helper.inc.php');
global $pdo;
send_header('Winners');
if (get_value_from_array($_GET, 'edit'))
$edit = $_GET['edit'];
if (get_value_from_array($_POST, 'edit'))
$edit = $_POST['edit'];
if (get_value_from_array($_GET, 'action'))
$action = $_GET['action'];
if (get_value_from_array($_POST, 'action'))
$action = $_POST['action'];
if (get_value_from_array($_GET, 'year') && get_value_from_array($_GET, 'type')) {
$show_unawarded_awards = 'no';
$show_unawarded_prizes = 'no';
$year = intval($_GET['year']);
$type = $_GET['type'];
echo '<h2>' . i18n('%1 ' . $type . ' Award Winners', array($_GET['year'])) . '</h2>';
$ok = true;
// first, lets make sure someone isnt tryint to see something that they arent allowed to!
// but only if the year they want is the FAIRYEAR. If they want a past year, thats cool
if ($_GET['year'] >= $config['FAIRYEAR']) {
$q = $pdo->prepare('SELECT (NOW()>?) AS test');
$q->execute([$config['dates']['postwinners']]);
$r = $q->fetch(PDO::FETCH_OBJ);
if ($r->test != 1) {
echo error(i18n('Crystal ball says future is very hard to see!'));
$ok = false;
}
}
if ($ok) {
$q = $pdo->prepare('SELECT
award_awards.id,
award_awards.name,
award_awards.order AS awards_order,
award_types.type
FROM
award_awards,
award_types
WHERE
award_awards.year=?
AND award_awards.award_types_id=award_types.id
AND award_types.type=?
AND award_types.year=?
ORDER BY
awards_order');
$q->execute([$year, $type, $year]);
show_pdo_errors_if_any($pdo);
if ($q->rowCount()) {
echo '<a href="winners.php">' . i18n('Back to Winners main page') . '</a>';
echo '<br />';
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.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='$r->id '
AND award_prizes.year='$year'
ORDER BY
`order`");
$pq->execute();
show_pdo_errors_if_any($pdo);
$awarded_count = 0;
if ($show_unawarded_awards == 'no') {
while ($pr = $pq->fetch(PDO::FETCH_OBJ)) {
if ($pr->projectnumber) {
$awarded_count++;
}
}
$pq->fetch(PDO::FETCH_ORI_ABS, 0);
}
$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.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='$r->id'
AND award_prizes.year='$year'
ORDER BY
`order`");
$pq->execute();
if ($show_unawarded_awards == 'yes' || $awarded_count > 0) {
echo '<h3>' . i18n($r->name) . "</h3> \n";
}
$prevprizeid = -1;
while ($pr = $pq->fetch(PDO::FETCH_OBJ)) {
if (!($pr->projectnumber) && $show_unawarded_prizes == 'no') {
continue;
}
if ($prevprizeid != $pr->id) {
echo '&nbsp;';
echo '&nbsp;';
echo '<b>';
echo i18n($pr->prize);
if (($pr->cash || $pr->scholarship) && $config['winners_show_prize_amounts'] == 'yes') {
echo ' (';
if ($pr->cash && $pr->scholarship)
echo i18n('$%1 cash / $%2 scholarship', array($pr->cash, $pr->scholarship), array('Cash dollar value', 'Scholarship dollar value'));
else if ($pr->cash)
echo i18n('$%1 cash', array($pr->cash), array('Cash dollar value'));
else if ($pr->scholarship)
echo i18n('$%1 scholarship', array($pr->scholarship), array('Scholarship dollar value'));
echo ')';
}
echo '</b>';
echo '<br />';
$prevprizeid = $pr->id;
}
if ($pr->projectnumber) {
echo '&nbsp&nbsp;&nbsp;&nbsp;';
echo "($pr->projectnumber) " . htmlspecialchars($pr->title);
$sq = $pdo->prepare('SELECT students.firstname,
students.lastname,
students.schools_id,
students.webfirst,
students.weblast,
students.webphoto,
schools.school
FROM
students,
schools
WHERE
students.registrations_id=?
AND students.schools_id=schools.id
');
$sq->execute([$pr->reg_id]);
$studnum = 0;
$students = '';
$schools = array();
while ($studentinfo = $sq->fetch(PDO::FETCH_OBJ)) {
if ($studnum > 0 && $prev)
$students .= ', ';
if ($studentinfo->webfirst == 'yes')
$students .= "$studentinfo->firstname ";
if ($studentinfo->weblast == 'yes')
$students .= "$studentinfo->lastname ";
if ($r->studentinfo->webfirst == 'yes' || $studentinfo->weblast == 'yes')
$prev = true;
else
$prev = false;
// $students.="$studentinfo->firstname $studentinfo->lastname";
$studnum++;
// we will assume that they are coming from the same school, so lets just grab the last students school
// and use it.
if (!in_array($studentinfo->school, $schools))
$schools[] = $studentinfo->school;
// $school=$studentinfo->school;
}
echo '<br />';
echo '&nbsp&nbsp;&nbsp;&nbsp;';
echo '&nbsp&nbsp;&nbsp;&nbsp;';
if ($studnum > 1)
echo i18n('Students') . ': ' . htmlspecialchars($students);
else
echo i18n('Student') . ': ' . htmlspecialchars($students);
echo '<br />';
echo '&nbsp&nbsp;&nbsp;&nbsp;';
echo '&nbsp&nbsp;&nbsp;&nbsp;';
echo i18n('School') . ': ';
$schoollist = '';
foreach ($schools AS $school)
$schoollist .= $school . ', ';
$schoollist = substr($schoollist, 0, -2);
echo $schoollist;
echo '<br />';
} else {
echo '&nbsp&nbsp;&nbsp;&nbsp;';
echo i18n('Prize not awarded');
echo '<br />';
}
echo '<br />';
}
}
}
}
} else {
$q = $pdo->prepare("SELECT
DISTINCT(winners.year) AS year,
dates.date
FROM
winners,
dates
WHERE
winners.year=dates.year
AND dates.name='postwinners'
AND dates.date<=NOW()
ORDER BY
year DESC");
$q->execute();
$first = true;
if ($q->rowCount()) {
while ($r = $q->fetch(PDO::FETCH_OBJ)) {
if ($first && $r->year != $config['FAIRYEAR']) {
list($d, $t) = explode(' ', $config['dates']['postwinners']);
echo '<h2>' . i18n('%1 Winners', array($config['FAIRYEAR'])) . '</h2>';
echo i18n('Winners of the %1 %2 will be posted here on %3 at %4', array($config['FAIRYEAR'], $config['fairname'], format_date($d), format_time($t)));
echo "<br />\n";
echo "<br />\n";
$first = false;
}
// get the "winnersposted" date for the year, and make
echo '<h2>' . i18n('%1 Winners', array($r->year)) . '</h2>';
// do this each time, because each year the names of the award types could change, along with what is actually given out.
//
$tq = $pdo->prepare('SELECT
DISTINCT(award_types.type) AS type
FROM
winners,
award_types,
award_awards,
award_prizes
WHERE
award_awards.award_types_id=award_types.id
AND winners.awards_prizes_id=award_prizes.id
AND award_prizes.award_awards_id=award_awards.id
AND winners.year=?
ORDER BY
award_types.order
');
$tq->execute([$r->year]);
$errorInfo = $pdo->errorInfo();
if ($errorInfo[0] != '00000') {
// If there's an error (the SQLSTATE isn't '00000', which means no error)
echo 'Error: ' . $errorInfo[2]; // The third element contains the error message
}
while ($tr = $tq->fetch(PDO::FETCH_OBJ)) {
echo "&nbsp;&nbsp;<a href=\"winners.php?year=$r->year&type=$tr->type\">" . i18n("%1 $tr->type award winners", array($r->year)) . '</a><br />';
}
echo '<br />';
$first = false;
}
} else {
list($d, $t) = explode(' ', $config['dates']['postwinners']);
echo '<h2>' . i18n('%1 Winners', array($config['FAIRYEAR'])) . '</h2>';
echo i18n('Winners of the %1 %2 will be posted here on %3 at %4', array($config['FAIRYEAR'], $config['fairname'], format_date($d), format_time($t)));
}
}
send_footer();
?>