science-ation/fair_stats.php

370 lines
14 KiB
PHP

<?
/*
* This file is part of the 'Science Fair In A Box' project
* SFIAB Website: http://www.sfiab.ca
*
* Copyright (C) 2007 James Grant <james@lightbox.org>
* Copyright (C) 2009 David Grant <dave@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_once ('common.inc.php');
require_once ('user.inc.php');
require_once ('admin/stats.inc.php');
/* Sort out who we're editting */
if (get_value_from_array($_POST, 'users_id'))
$eid = intval($_POST['users_id']); /* From a save form */
else if (array_key_exists('embed_edit_id', $_SESSION))
$eid = $_SESSION['embed_edit_id']; /* From the embedded editor */
else
$eid = $_SESSION['users_id']; /* Regular entry */
if ($eid != $_SESSION['users_id']) {
/*
* Not editing ourself, we had better be
* a committee member
*/
user_auth_required('committee', 'admin');
}
$u = user_load($eid);
switch (get_value_from_array($_GET, 'action')) {
case 'save':
$stats = $_POST['stats'];
$year = intval($_POST['year']);
foreach ($stats as $k => $v) {
$stats[$k] = $stats[$k];
}
// $str = join(',',$stats);
$keys = '`fairs_id`,`year`,`' . join('`,`', array_keys($stats)) . '`';
$vals = "'{$u['fairs_id']}','$year','" . join("','", array_values($stats)) . "'";
$stmt = $pdo->prepare('DELETE FROM fairs_stats WHERE fairs_id = :fairs_id AND year = :year');
$stmt->execute([
':fairs_id' => $u['fairs_id'],
':year' => $year
]);
$stmt = $pdo->prepare("INSERT INTO fairs_stats (`id`,?) VALUES ('',?)");
$stmt->execute([$keys,$vals]);
happy_('Fair Information Saved.');
exit;
}
if (get_value_from_array($_SESSION, 'embed') == true) {
echo '<br/>';
display_messages();
echo '<h3>' . i18n('Fair Information and Statistics') . '</h3>';
echo '<br/>';
} else {
send_header('Fair Information and Statistics',
array('Fair Main' => 'fair_main.php'),
'fair_stats');
}
?>
<script type="text/javascript">
function stats_save()
{
$("#debug").load("<?= $config['SFIABDIRECTORY'] ?>/fair_stats.php?action=save", $("#stats_form").serializeArray());
return false;
}
</script>
<?
/*
* This was the remote upload code, seems silly to change the config names. server_config really isn't
* from the server here, it's just our local name
*/
/* SFIAB config options server side */
$server_config = array();
$server_config['participation'] = false;
$server_config['schools_ext'] = false;
$server_config['minorities'] = false;
$server_config['guests'] = false;
$server_config['sffbc_misc'] = false;
$server_config['info'] = false;
$server_config['next_chair'] = false;
$server_config['scholarships'] = false;
$server_config['delegates'] = false;
$server_any_stats = false;
$year = intval(get_value_from_array($_POST, 'year'));
if ($year < 1900)
$year = $config['FAIRYEAR'];
/* Get the stats we want from this fair */
$q = $pdo->prepare('SELECT * FROM fairs WHERE id = :fairs_id');
$q->execute([
':fairs_id' => $u['fairs_id']
]);
$fair = $q->fetch(PDO::FETCH_ASSOC);
$s = explode(',', $fair['gather_stats']);
foreach ($s as $k) {
if (trim($k) == '')
continue;
$server_config[$k] = true;
$server_any_stats = true;
}
/*
* $s = ($_SESSION['embed'] == true) ? $_SESSION['embed_submit_url'] : 'fair_stats.php';
* echo "<form id=\"year_form\" name=\"year_form\" method=\"post\" action=\"$s\">";
* echo i18n('Select Year').": ";
* $q = mysql_query("SELECT DISTINCT year FROM config WHERE year>1000 ORDER BY year DESC");
* echo "<select name=\"year\" id=\"year\" onchange=\"this.form.submit()\">";
* while($i = mysql_fetch_assoc($q)) {
* $y = $i['year'];
* $sel = ($config['FAIRYEAR'] == $y) ? 'selected=\"selected\"' : '';
* echo "<option value=\"$y\" $sel>$y</option>";
* }
* echo "</select>";
* echo "</form>";
*/
echo '<br />';
/* Load stats */
$q = $pdo->prepare('SELECT * FROM fairs_stats WHERE fairs_id = :fairs_id AND year = :year');
$q->execute([
':fairs_id' => $u['fairs_id'],
':year' => $year
]);
$stats = $q->fetch(PDO::FETCH_ASSOC);
/* Print stats */
/* Print all blocks the server requests */
echo '<form id="stats_form" name="stats_form">';
echo "<input type=\"hidden\" name=\"year\" value=\"$year\" />";
if ($server_config['info']) {
echo '<h3>' . i18n('%1 Fair information', array($year)) . '</h3>';
echo '<table>';
echo '<tr><td>' . i18n('Fair Start Date') . ':</td>';
echo "<td><input type=\"text\" size=\"12\" name=\"stats[start_date]\" value=\"{$stats['start_date']}\">(YYYY-MM-DD)</td></tr>";
echo '<tr><td>' . i18n('Fair End Date') . ':</td>';
echo "<td><input type=\"text\" size=\"12\" name=\"stats[end_date]\" value=\"{$stats['end_date']}\">(YYYY-MM-DD)</td></tr>";
echo '<tr><td>' . i18n('Fair Location/Address') . ':</td>';
echo '<td><textarea name="address" rows="4" cols="60">' . htmlspecialchars($stats['address']) . '</textarea></td>';
echo '<tr><td>' . i18n('Fair Budget') . ':</td>';
echo "<td>\$<input type=text name=\"stats[budget]\" value=\"{$stats['budget']}\"></td></tr>";
echo '<tr><td>' . i18n('Youth Science Canada Affiliation Complete') . '?</td>';
echo '<td><select name="ysf_affiliation_complete">';
$sel = $stats['ysf_affiliation_complete'] == 'N' ? 'selected="selected"' : '';
echo " <option value=\"N\" $sel >No</option>";
$sel = $stats['ysf_affiliation_complete'] == 'Y' ? 'selected="selected"' : '';
echo " <option value=\"Y\" $sel >Yes</option>";
echo '</select></td></tr>';
echo '<tr><td>' . i18n('Charity Number or Information') . '?</td>';
echo "<td><input type=text size=\"40\" name=\"stats[charity]\" value=\"{$stats['charity']}\"></td></tr>";
echo '</table>';
echo '<br />';
echo '<br />';
}
if ($server_config['next_chair']) {
echo '<h3>' . i18n('%1 - %2 Chairperson (if known)', array($year, $year + 1)) . '</h3>';
echo '<table>';
echo '<tr><td>' . i18n('Name') . ': </td>';
echo "<td><input type=text name=\"stats[next_chair_name]\" value=\"{$stats['next_chair_name']}\"></td>";
echo '<td>' . i18n('Email') . ': </td>';
echo "<td><input type=text name=\"stats[next_chair_email]\" value=\"{$stats['next_chair_email']}\"></td></tr>";
echo '<tr><td>' . i18n('Tel. Bus') . ': </td>';
echo "<td><input type=text name=\"stats[next_chair_bphone]\" value=\"{$stats['next_chair_bphone']}\"></td>";
echo '<td>' . i18n('Tel. Home') . ': </td>';
echo "<td><input type=text name=\"stats[next_chair_hphone]\" value=\"{$stats['next_chair_hphone']}\"></td></tr>";
echo '<tr><td>' . i18n('Fax') . ': </td>';
echo "<td><input type=text name=\"stats[next_chair_fax]\" value=\"{$stats['next_chair_fax']}\"></td>";
echo '</tr>';
echo '</table>';
echo '<br /><br />';
}
if ($server_config['delegates']) {
echo '<h3>' . i18n('%1 CWSF Delegates and Alternatives', array($year)) . '</h3>';
echo '<table>';
echo '<tr><td>' . i18n('Delegate Name(s)') . '</td><td>' . i18n('Email') . '</td><td>' . i18n('Jacket Size') . '<td></tr>';
for ($x = 1; $x <= 3; $x++) {
$sizes = array('small' => 'Small', 'medium' => 'Medium', 'large' => 'Large', 'xlarge' => 'X-Large');
echo "<td><input type=text size=\"25\" name=\"delegate$x\" value=\"{$stats["delegate$x"]}\"></td>";
echo "<td><input type=text size=\"25\" name=\"delegate{$x}_email\" value=\"{$stats["delegate{$x}_email"]}\"></td>";
echo "<td><select name=\"delegate{$x}_size\">";
$sz = $stats["delegate{$x}_size"];
foreach ($sizes as $s => $t) {
$sel = ($sz == $s) ? 'selected="selected"' : '';
echo " <option value=\"$s\" $sel >" . i18n($t) . '</option>';
}
echo '</select></td></tr>';
}
echo '</table>';
echo i18n('Remember, the jackets fit smaller than normal sizes.');
echo '<br /><br />';
}
if ($server_config['scholarships']) {
echo '<h3>' . i18n('%1 Scholarships', array($year)) . '</h3>';
echo 'How many university/college scholarships are available at your fair? (use a format like: <br /><b>6 - University of British Columbia - Entrance Scholarships</b><br />';
echo '<textarea name="stats[scholarships]" rows="4\" cols="80">' . htmlspecialchars($stats['scholarships']) . '</textarea>';
echo '<br /><br />';
}
if ($server_config['participation']) {
$rangemap = array(1 => '1-3', 4 => '4-6', 7 => '7-8', 9 => '9-10', 11 => '11-12');
echo '<h3>' . i18n('%1 Fair participation', array($year)) . '</h3>';
echo '<br />';
echo i18n('Number of students') . ': ';
echo "<input type=text name=\"stats[students_total]\" size=\"5\" value=\"{$stats['students_total']}\">";
echo '<table><tr><td></td><td></td><td></td><td align=\"center\">' . i18n('Grade') . '</td><td></td><td></td></tr>';
echo '<tr><td></td>';
foreach ($rangemap as $k => $v)
echo "<td align=\"center\" width=\"50px\" >$v</td>";
echo '</tr><tr>';
echo '<td>' . i18n('Male') . '</td>';
foreach ($rangemap as $k => $v)
echo "<td align=\"right\"><input type=text size=\"4\" name=\"stats[male_$k]\" value=\"{$stats["male_$k"]}\"></td>";
echo '</tr><tr>';
echo '<td>' . i18n('Female') . '</td>';
foreach ($rangemap as $k => $v)
echo "<td align=\"right\"><input type=text size=\"4\" name=\"stats[female_$k]\" value=\"{$stats["female_$k"]}\"></td>";
echo '</tr><tr>';
echo '<td>' . i18n('Projects') . '</td>';
foreach ($rangemap as $k => $v)
echo "<td align=\"right\"><input type=text size=\"4\" name=\"stats[projects_$k]\" value=\"{$stats["projects_$k"]}\"></td>";
echo '</tr>';
echo '</table>';
echo '<br />';
echo i18n('Number of schools') . ": <input type=text size=\"5\" name=\"stats[schools_total]\" value=\"{$stats['schools_total']}\">";
echo '<br />';
echo i18n('Number of active schools') . ": <input type=text size=\"5\" name=\"stats[schools_active]\" value=\"{$stats['schools_active']}\">";
echo '<br />';
echo '<br />';
echo i18n('Number of committee members') . ": <input type=text size=\"5\" name=\"stats[committee_members]\" value=\"{$stats['committee_members']}\">";
echo '<br />';
echo i18n('Number of judges') . ": <input type=text size=\"5\" name=\"stats[judges]\" value=\"{$stats['judges']}\">";
echo '<br />';
echo '<br />';
echo '<br />';
}
if ($server_config['schools_ext']) {
echo '<h3>' . i18n('%1 Extended School/Participant data', array($year)) . '</h3>';
echo '<br />';
?>
<table><tr>
<td><?= i18n('Public schools') ?>:</td>
<td><input type=text size="5" name="stats[schools_public]" value="<?= $stats['schools_public'] ?>"></td>
<td><?= i18n('Public school Students') ?>:</td>
<td><input type=text size="5" name="stats[students_public]" value="<?= $stats['students_public'] ?>"></td>
</tr><tr>
<td><?= i18n('Private/Independent schools') ?>:</td>
<td><input type=text size="5" name="stats[schools_private]" value="<?= $stats['schools_private'] ?>"></td>
<td><?= i18n('Private/Independent school Students') ?>:</td>
<td><input type=text size="5" name="stats[students_private]" value="<?= $stats['students_private'] ?>"></td>
</tr><tr>
<td><?= i18n('At-risk/inner city schools') ?>:</td>
<td><input type=text size="5" name="stats[schools_atrisk]" value="<?= $stats['schools_atrisk'] ?>"></td>
<td><?= i18n('At-risk/inner city school Students') ?>:</td>
<td><input type=text size="5" name="stats[students_atrisk]" value="<?= $stats['students_atrisk'] ?>"></td>
</tr><tr>
<td><?= i18n('Number of school boards/distrcits') ?>:</td>
<td><input type=text size="5" name="stats[schools_districts]" value="<?= $stats['schools_districts'] ?>"></td>
<td></td><td></td>
</tr></table>
<br /> <br /> <br />
<?
}
if ($server_config['minorities']) {
echo '<h3>' . i18n('%1 Data on minority groups', array($year)) . '</h3>';
echo '<br />';
echo '<table>';
echo '<tr><td>' . i18n('Number of First Nations students');
echo ": </td><td><input type=\"text\" name=\"stats[firstnations]\" value=\"{$stats['firstnations']}\" size=\"5\" />";
echo '</td></tr>';
echo '</table>';
echo '<br />';
echo '<br />';
}
if ($server_config['guests']) {
echo '<h3>' . i18n('%1 Guests visiting the fair', array($year)) . '</h3>';
echo '<br />';
echo '<table>';
echo '<tr><td>' . i18n('Number of Students that visited the fair (tours, etc.)');
echo ": </td><td><input type=\"text\" name=\"stats[studentsvisiting]\" value=\"{$stats['studentsvisiting']}\" size=\"5\" />";
echo '</td></tr>';
echo '<tr><td>' . i18n('Number of Public Guests that visited the fair');
echo ": </td><td><input type=\"text\" name=\"stats[publicvisiting]\" value=\"{$stats['publicvisiting']}\" size=\"5\" />";
echo '</td></tr>';
echo '</table>';
echo '<br />';
echo '<br />';
}
if ($server_config['sffbc_misc']) {
echo '<h3>' . i18n('%1 Misc. SFFBC Questions', array($year)) . '</h3>';
echo '<br />';
echo '<table>';
echo '<tr><td>' . i18n('Number of Teachers supporting student projects');
echo ": </td><td><input type=\"text\" name=\"stats[teacherssupporting]\" value=\"{$stats['teacherssupporting']}\" size=\"5\" />";
echo '</td></tr>';
echo '<tr><td>' . i18n('Number of Students indicating increased interest in science & technology');
echo ": </td><td><input type=\"text\" name=\"stats[increasedinterest]\" value=\"{$stats['increasedinterest']}\" size=\"5\" />";
echo '</td></tr>';
echo '<tr><td>' . i18n('Number of Students considering careers in science & technology');
echo ": </td><td><input type=\"text\" name=\"stats[consideringcareer]\" value=\"{$stats['consideringcareer']}\" size=\"5\" />";
echo '</td></tr>';
echo '</table>';
echo '<br />';
echo '<br />';
}
if ($server_any_stats == false) {
/* Every condition below will fail, tell the user something */
echo i18n('No stats to gather. Contact the admins if you believe this is an error.');
} else {
echo '<input type="submit" onClick="stats_save(); return false;"value="' . i18n('Save Fair Information') . '" />';
}
echo '</form>';
echo '<br />';
echo '<br />';
/*
* echo "<hr /><pre>";
* print_r($fair);
* print_r($server_config);
* print_r($stats);
* echo "</pre>";
*/
if (get_value_from_array($_SESSION, 'embed') != true) {
send_footer();
}
?>