- Remove the XML print from the stats upload, we can add that back in later as

something like "view/edit xml".
- Add a master list of all the stats we understand
- Map stats into YSF stats, so this file can be used as the YSF uploader too
  (going to need to convert the $config options into a fair user entry)
- Enable downloading manual entry stats, so it all appears seamless.  (note, we
  don't download auto-generated stats, like the number of students, well, we
  do, but we just overwrite it with what's in the local SFIAB, it would be a lot of work
  to keep it separate if it changes).
This commit is contained in:
dave 2009-05-03 06:31:03 +00:00
parent 3d15473906
commit 0f450e4426
2 changed files with 156 additions and 44 deletions

View File

@ -26,6 +26,49 @@
require_once('../user.inc.php');
user_auth_required('committee', 'admin');
require_once('xml.inc.php');
require_once('stats.inc.php');
function stats_to_xml($fair, $stats)
{
global $output;
if($fair['type'] == 'ysf') {
/* Map data into YSF tags */
$y=array();
$y["numschoolstotal"]=$stats['schools_total'];
$y["numschoolsactive"]=$stats['schools_active'];
$y["numstudents"]=$stats['students_total'];
$y["numk6m"]=$stats['male_1'] + $stats['male_4'];
$y["numk6f"]=$stats['female_1'] + $stats['female_4'];
$y["num78m"]=$stats['male_7'];
$y["num78f"]=$stats['female_7'];
$y["num910m"]=$stats['male_9'];
$y["num910f"]=$stats['female_9'];
$y["num11upm"]=$stats['male_11'];
$y["num11upf"]=$stats['female_11'];
$y["projk6"]=$stats['projects_1'] + $stats['projects_4'];
$y["proj78"]=$stats['projects_7'];
$y["proj910"]=$stats['projects_9'];
$y["proj11up"]=$stats['projects_11'];
$y["committee"]=$stats['committee_members'];
$y["judges"]=$stats['judges'];
$xmldata=array("affiliation"=>array(
"ysf_region_id"=>$fair['username'],
"ysf_region_password"=>$fair['password'],
"year"=>$year,
"stats"=>$y)
);
} else {
$xmldata=array("sfiab"=>array(
"username"=>$fair['username'],
"password"=>$fair['password'],
"stats"=>$stats));
}
$output="";
xmlCreateRecurse($xmldata);
return $output;
}
send_header("Fair Stats",
array('Committee Main' => 'committee_main.php',
@ -90,17 +133,24 @@
$fair = mysql_fetch_assoc($q);
}
$action = $_POST['action'];
if($action == 'sendstats') {
foreach(array_keys($stats_data) as $k) {
$stats[$k] = $_POST[$k];
}
$stats['year'] = $year;
$xml = stats_to_xml($fair, $stats);
if($_POST['action']=="sendstats" && $_POST['xml']) {
if(function_exists('curl_init')) {
$r = curl_query($fair, $_POST['xml']);
$r = curl_query($fair, $xml);
if($r['error'][0] == 0)
echo happy(i18n("The %1 Server said:", array($fair['name'])).' '.$r['message'][0]);
else
echo error(i18n("The %1 Server said:", array($fair['name'])).' '.$r['message'][0]);
$fairs_id = -1;
$year = $config['FAIRYEAR'];
// $fairs_id = -1;
// $year = $config['FAIRYEAR'];
} else {
echo error("CURL Support Missing");
echo i18n("Your PHP installation does not support CURL. You will need to login to the YSF system as the regional coodinator and upload the XML data manually");
@ -139,9 +189,8 @@
exit;
}
echo i18n('This server has requested the following stats:');
echo '<br /><br />';
echo notice(i18n('Getting statistics request and existing stats data from server %1', array($fair['url'])));
/* Query the server to see what stats we need */
$xmldata=array("sfiab"=>array(
"username"=>$fair['username'],
@ -160,6 +209,11 @@
exit;
}
echo notice(i18n('Server said: Success'));
echo '<hr />';
echo i18n('This server has requested the following stats:');
echo '<br /><br />';
foreach($server_config as $k=>$v) {
$server_config[$k] = $data['statconfig'][0][$k][0];
}
@ -174,6 +228,7 @@
$stats[$k] = $v[0];
}
}
// print_r($data['stats'][0]);
/* And now, overwrite all the stuff we pulled down with stats we can compute */
@ -283,36 +338,42 @@
$stats['judges'] = $r->num;
/* Print all blocks the server requests */
/* All stats have been gathered, print them */
/* Print all blocks the server requests */
echo "<form method=\"POST\" action=\"$PHPSELF\">";
echo "<input type=\"hidden\" name=\"action\" value=\"sendstats\" />";
$manual_stats = array();
if($server_config['fair_stats_participation'] == 'yes') {
$rangemap = array(1=>'1-3', 4=>'4-6', 7=>'7-8', 9=>'9-10', 11=>'11-12');
echo '<b>'.i18n('Fair participation').'</b><br />';
echo '<br />';
echo i18n("Number of students: %1", array($stats['students_total']));
echo i18n("Number of students").": <b>{$stats['students_total']}</b>";
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\">{$stats["male_$k"]}</td>";
foreach($rangemap as $k=>$v) echo "<td align=\"right\"><b>{$stats["male_$k"]}</b></td>";
echo '</tr><tr>';
echo '<td>'.i18n('Female').'</td>';
foreach($rangemap as $k=>$v) echo "<td align=\"right\">{$stats["female_$k"]}</td>";
foreach($rangemap as $k=>$v) echo "<td align=\"right\"><b>{$stats["female_$k"]}</b></td>";
echo '</tr><tr>';
echo '<td>'.i18n('Projects').'</td>';
foreach($rangemap as $k=>$v) echo "<td align=\"right\">{$stats["projects_$k"]}</td>";
foreach($rangemap as $k=>$v) echo "<td align=\"right\"><b>{$stats["projects_$k"]}</b></td>";
echo '</tr>';
echo '</table>';
echo '<br />';
echo i18n("Number of schools: %1",array($stats['schools_total']));
echo i18n("Number of schools").": <b>{$stats['schools_total']}</b>";
echo '<br />';
echo i18n("Number of active schools: %1",array($stats['schools_active']));
echo i18n("Number of active schools").": <b>{$stats['schools_active']}</b>";
echo '<br />';
echo '<br />';
echo i18n("Number of committee members: %1 (note: this is number of committee members who logged in to SFIAB for the year, anyone who was active but didn't log in to SFIAB will NOT be counted)",array($stats['committee_members']));
echo i18n("Number of committee members: <b>%1</b> (note: this is number of committee members who logged in to SFIAB for the year, anyone who was active but didn't log in to SFIAB will NOT be counted)",array($stats['committee_members']));
echo '<br />';
echo i18n("Number of judges: %1",array($stats['judges']));
echo i18n("Number of judges").": <b>{$stats['judges']}</b>";
echo '<br />';
echo '<br />';
echo '<br />';
@ -321,16 +382,16 @@
if($server_config['fair_stats_schools_ext'] == 'yes') {
echo '<b>'.i18n('Extended School/Participant data').'</b><br />';
echo '<br />';
echo i18n('Public schools: %1 (%2 students).',array(
echo i18n('Public schools: <b>%1</b> (<b>%2</b> students).',array(
$stats['schools_public'], $stats['students_public']));
echo '<br />';
echo i18n('Private/Independent schools: %1 (%2 students).',array(
echo i18n('Private/Independent schools: <b>%1</b> (<b>%2</b> students).',array(
$stats['schools_private'], $stats['students_private']));
echo '<br />';
echo i18n('At-risk/inner city schools: %1 (%2 students).',array(
echo i18n('At-risk/inner city schools: <b>%1</b> (<b>%2</b> students).',array(
$stats['schools_atrisk'], $stats['students_atrisk']));
echo '<br />';
echo i18n('Number of school boards/distrcits: %1',array(
echo i18n('Number of school boards/distrcits: <b>%1</b>',array(
$stats['schools_districts']));
echo '<br />';
echo '<br />';
@ -368,41 +429,33 @@
echo '<b>'.i18n('Misc. SFFBC Questions').'</b><br />';
echo '<br />';
echo '<table>';
echo '<tr><td>'.i18n('Number of Teachers supporting student projects: ');
echo '<tr><td>'.i18n('Number of Teachers supporting student projects');
echo ": </td><td><input type=\"text\" name=\"teacherssupporting\" value=\"{$stats['teacherssupporting']}\" size=\"5\" />";
echo '</td></tr>';
echo '<tr><td>'.i18n('Number of Students indicating increased interest in science & technology: ');
echo '<tr><td>'.i18n('Number of Students indicating increased interest in science & technology');
echo ": </td><td><input type=\"text\" name=\"increasedinterest\" value=\"{$stats['increasedinterest']}\" size=\"5\" />";
echo '</td></tr>';
echo '<tr><td>'.i18n('Number of Students considering careers in science & technology: ');
echo '<tr><td>'.i18n('Number of Students considering careers in science & technology');
echo ": </td><td><input type=\"text\" name=\"consideringcareer\" value=\"{$stats['consideringcareer']}\" size=\"5\" />";
echo '</td></tr>';
echo '</table>';
echo '<br />';
echo '<br />';
/*Number of Teachers supporting student projects:
Number of Students indicating increased interest in science & technology:
Number of Students considering careers in science & technology:
*/
}
echo "<br />";
$keys = array_keys($stats_data);
foreach($keys as $k) {
if($stats_data[$k]['manual'] == true) continue;
echo "<input type=\"hidden\" name=\"$k\" value=\"{$stats[$k]}\" />";
}
echo "<input type=\"submit\" value=\"".i18n('Send stats to')." {$fair['name']}\">";
echo '</form>';
echo "<br />";
echo "<br />";
/* Format XML output, and print it, last chance for the user to edit it */
if($fair['type'] == 'ysf') {
/* Map data into YSF tags */
} else {
$xmldata=array("sfiab"=>array(
"username"=>$fair['username'],
"password"=>$fair['password'],
"stats"=>$stats));
}
$output="";
xmlCreateRecurse($xmldata);
$xml=$output;
/*
$xml = stats_to_xml($fair, $stats);
echo '<hr />';
echo "<h3>".i18n("The following data will be sent to")." {$fair['name']}</h3>";
@ -416,16 +469,13 @@ Number of Students considering careers in science & technology:
echo "<br />";
echo "<input type=\"submit\" value=\"".i18n("Send stats to")." {$fair['name']}\">";
echo "</form>";
*/
echo "<hr /><pre>";
print_r($fair);
print_r($server_config);
print_r($stats);
echo "</pre>";
send_footer();
?>

62
admin/stats.inc.php Normal file
View File

@ -0,0 +1,62 @@
<?
$stats_data = array(
'start_date' => array(),
'end_date' => array(),
'address' => array(),
'budget' => array(),
'ysf_affiliation_complete' => array(),
'charity' => array(),
'male_1' => array(),
'male_4' => array(),
'male_7' => array(),
'male_9' => array(),
'male_11' => array(),
'female_1' => array(),
'female_4' => array(),
'female_7' => array(),
'female_9' => array(),
'female_11' => array(),
'projects_1' => array(),
'projects_4' => array(),
'projects_7' => array(),
'projects_9' => array(),
'projects_11' => array(),
'students_total' => array(),
'schools_total' => array(),
'schools_active' => array(),
'students_public' => array(),
'schools_public' => array(),
'students_private' => array(),
'schools_private' => array(),
'schools_districts' => array(),
'studentsvisiting' => array('manual' => true),
'publicvisiting' => array('manual' => true),
'firstnations' => array('manual' => true),
'students_atrisk' => array(),
'schools_atrisk' => array(),
'teacherssupporting' => array('manual' => true),
'increasedinterest' => array('manual' => true),
'consideringcareer' => array('manual' => true),
'committee_members' => array(),
'judges' => array(),
'next_chair_name' => array(),
'next_chairemail' => array(),
'next_chair_hphone' => array(),
'next_chair_bphone' => array(),
'next_chair_fax' => array(),
'scholarships' => array(),
'delegate1' => array(),
'delegate2' => array(),
'delegate3' => array(),
'delegate4' => array(),
'delegate1_email' => array(),
'delegate2_email' => array(),
'delegate3_email' => array(),
'delegate4_email' => array(),
'delegate1_size' => array(),
'delegate2_size' => array(),
'delegate3_size' => array(),
'delegate4_size' => array(),
);
?>