science-ation/register_participants_spawards.php
2025-02-22 02:29:51 +00:00

218 lines
7.3 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');
include 'register_participants.inc.php';
include 'projects.inc.php';
global $pdo;
// authenticate based on email address and registration number from the SESSION
if (!$_SESSION['email']) {
header('Location: register_participants.php');
exit;
}
if (!$_SESSION['registration_number']) {
header('Location: register_participants.php');
exit;
}
$q = $pdo->prepare('SELECT registrations.id AS regid, students.id AS studentid, students.firstname FROM registrations,students '
. 'WHERE students.email=?'
. 'AND registrations.num=?'
. 'AND registrations.id=?'
. 'AND students.registrations_id=registrations.id '
. 'AND registrations.year=?'
. 'AND students.year=?');
$q->execute([$_SESSION['email'], $_SESSION['registration_number'], $_SESSION['registration_id'], $config['FAIRYEAR'], $config['FAIRYEAR']]);
show_pdo_errors_if_any($pdo);
if ($q->rowCount() == 0) {
header('Location: register_participants.php');
exit;
}
$authinfo = $q->fetch(PDO::FETCH_OBJ);
$q = $pdo->prepare('SELECT * FROM projects WHERE registrations_id=?');
$q->execute([$_SESSION['registration_id']]);
$project = $q->fetch(PDO::FETCH_OBJ);
// send the header
send_header('Participant Registration - Self-Nomination for Special Awards');
?>
<script language="javascript" type="text/javascript">
function checkboxclicked(b)
{
max=<?= $config['maxspecialawardsperproject']; ?>;
num=0;
df=document.forms["specialawards"];
for (i=0; i<df.elements.length; i++) {
if (df[i].type=="checkbox" && df[i].name=="spaward[]") {
if (df[i].checked==true) {
num++;
}
}
}
if(num>max)
{
b.checked=false;
alert('<?= i18n('You can only self-nominate for up to %1 special awards', array($config['maxspecialawardsperproject'])) ?>');
}
}
</script>
<?
echo '<a href="register_participants_main.php">&lt;&lt; ' . i18n('Back to Participant Registration Summary') . '</a><br />';
echo '<br />';
if ($config['specialawardnomination'] == 'date') {
echo notice(i18n('Special award self-nomination is only available from %1 to %2. Please make sure you complete your nominations between these dates.', array($config['dates']['specawardregopen'], $config['dates']['specawardregclose'])));
$q = $pdo->prepare('SELECT (NOW()>? AND NOW()<?) AS datecheck');
$q->execute([$config['dates']['specawardregopen'], $config['dates']['specawardregclose']]);
$r = $q->fetch(PDO::FETCH_OBJ);
// this will return 1 if its between the dates, 0 otherwise.
if ($r->datecheck == 1)
$readonly = false;
else
$readonly = true;
} else {
/* Never make the awards readonly, when registration closes, so do the awards */
$readonly = false;
}
echo notice(i18n('You may apply to a maximum of %1 special awards.', array($config['maxspecialawardsperproject'])));
if ($_POST['action'] == 'save') {
// this will return 1 if its between the dates, 0 otherwise.
if (!$readonly) {
$splist = array();
$noawards = false;
if (is_array($_POST['spaward']))
$splist = $_POST['spaward'];
/* If all they've selected is they don't want to self nominate, then erase all other selections */
if (in_array(-1, $splist)) {
$splist = array(-1);
$noawards = true;
}
$num = count($splist);
if ($num > $config['maxspecialawardsperproject']) {
echo error(i18n('You can only apply to %1 special awards. You have selected %2', array($config['maxspecialawardsperproject'], $num)));
} else {
try {
$stmt = $pdo->prepare('DELETE FROM project_specialawards_link WHERE projects_id=? AND year=?');
$stmt->execute([$project->id, $config['FAIRYEAR']]);
foreach ($splist AS $spaward) {
$stmt = $pdo->prepare('INSERT INTO project_specialawards_link (award_awards_id,projects_id,year) VALUES (
?,
?,
?)');
$stmt->execute([$spaward, $project->id, $config['FAIRYEAR']]);
show_pdo_errors_if_any($pdo);
}
if ($num) {
if ($noawards == true)
echo happy(i18n('Successfully registered for no special awards'));
else
echo happy(i18n('Successfully registered for %1 special awards', array($num)));
}
} catch (PDOException $exception) {
error(happy(i18n('Failed to register your settings for special awards')));
error_log($exception);
}
}
} else {
echo error(i18n('Special award self-nomination is only available from %1 to %2', array($config['dates']['specawardregopen'], $config['dates']['specawardregclose'])));
}
}
// output the current status
$newstatus = spawardStatus();
if ($newstatus != 'complete') {
echo error(i18n('Special Awards Self-Nomination Incomplete'));
} else if ($newstatus == 'complete') {
echo happy(i18n('Special Awards Self-Nomination Complete'));
}
echo "<form name=\"specialawards\" method=\"post\" action=\"register_participants_spawards.php\">\n";
echo "<input type=\"hidden\" name=\"action\" value=\"save\">\n";
echo "<table>\n";
$eligibleawards = getSpecialAwardsEligibleForProject($project->id);
$nominatedawards = getSpecialAwardsNominatedForProject($project->id);
$eligibleawards = array_merge(array(array('id' => -1,
'name' => i18n('I do not wish to self-nominate for any special awards'),
'criteria' => i18n('Select this option if you do not wish to self-nominate you project for any special awards.') . '<hr>',
'self_nominate' => 'yes')),
$eligibleawards);
/* See if they have the -1 award selected */
$noawards = getNominatedForNoSpecialAwardsForProject($project->id);
if ($noawards == true) {
$nominatedawards = array_merge(array(array('id' => '-1')), $nominatedawards);
}
/*
* echo "eligible awards <br>";
* echo nl2br(print_r($eligibleawards,true));
* echo "nominated awards <br>";
* echo nl2br(print_r($nominatedawards,true));
*/
$nominatedawards_list = array();
foreach ($nominatedawards AS $naward) {
$nominatedawards_list[] = $naward['id'];
}
echo '<table>';
foreach ($eligibleawards AS $eaward) {
if ($eaward['self_nominate'] == 'no')
continue;
echo '<tr><td rowspan="2">';
if (in_array($eaward['id'], $nominatedawards_list))
$ch = 'checked="checked"';
else
$ch = '';
echo "<input onclick=\"checkboxclicked(this)\" $ch type=\"checkbox\" name=\"spaward[]\" value=\"" . $eaward['id'] . '" />';
echo '</td><td>';
echo '<b>' . i18n($eaward['name']) . '</b>';
echo '</td></tr>';
echo '<tr><td>';
echo i18n($eaward['criteria']);
if ($eaward['id'] != -1)
echo '<br /><br />';
echo '</td></tr>';
}
echo '</table>';
if (!$readonly)
echo '<input type="submit" value="' . i18n('Save Special Award Nominations') . "\" />\n";
echo '</form>';
send_footer();
?>