forked from science-ation/science-ation
Update admin index to include One-Click Affiliation Stats
Factor XML functiosn out of cwsfregister into separate xml.inc.php Add xml functionality to ysfstats, and fudge the male/female stats to include "not specificed" genders Add submit functionality to ysfstats to actually send data to YSF
This commit is contained in:
parent
29f545f80f
commit
dbcd4e955f
@ -21,57 +21,7 @@
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
function xmlCreateRecurse($d)
|
||||
{
|
||||
global $indent;
|
||||
global $output;
|
||||
foreach($d AS $key=>$val)
|
||||
{
|
||||
if(is_numeric($key))
|
||||
{
|
||||
if($val['xml_type'])
|
||||
{
|
||||
for($x=0;$x<$indent;$x++) $output.=" ";
|
||||
$output.="<".$val['xml_type'].">\n";
|
||||
$indent++;
|
||||
xmlCreateRecurse($val);
|
||||
$indent--;
|
||||
for($x=0;$x<$indent;$x++) $output.=" ";
|
||||
$output.="</".$val['xml_type'].">\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
for($x=0;$x<$indent;$x++) $output.=" ";
|
||||
$output.="<$key>\n";
|
||||
$indent++;
|
||||
xmlCreateRecurse($val);
|
||||
$indent--;
|
||||
for($x=0;$x<$indent;$x++) $output.=" ";
|
||||
$output.="</$key>\n";
|
||||
|
||||
}
|
||||
}
|
||||
else if(is_array($val))
|
||||
{
|
||||
for($x=0;$x<$indent;$x++) $output.=" ";
|
||||
$output.="<$key>\n";
|
||||
$indent++;
|
||||
xmlCreateRecurse($val);
|
||||
$indent--;
|
||||
for($x=0;$x<$indent;$x++) $output.=" ";
|
||||
$output.="</$key>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if($key!="xml_type" && $key!="projectid" && $key!="projectdivisions_id")
|
||||
{
|
||||
for($x=0;$x<$indent;$x++) $output.=" ";
|
||||
$output.="<$key>$val</$key>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
include "xml.inc.php";
|
||||
|
||||
function get_cwsf_award_winners()
|
||||
{
|
||||
|
@ -42,6 +42,7 @@ if($config['tours_enable'] == 'yes') {
|
||||
echo "<hr />";
|
||||
echo "<a href=\"winners.php\">".i18n("Enter Winning Projects")."</a> <br />";
|
||||
echo "<a href=\"cwsfregister.php\">".i18n("One-Click CWSF Registration")."</a> <br />";
|
||||
echo "<a href=\"ysfstats.php\">".i18n("One-Click YSF Affiliation")."</a> <br />";
|
||||
echo "<hr />";
|
||||
echo "<a href=\"communication.php\">".i18n("Communication (Send Emails)")."</a> <br />";
|
||||
|
||||
|
@ -23,22 +23,90 @@
|
||||
<?
|
||||
require("../common.inc.php");
|
||||
auth_required('admin');
|
||||
include "xml.inc.php";
|
||||
|
||||
send_header("YSF Regional Affiliation Stats");
|
||||
|
||||
if($_POST['action']=="register" && $_POST['xml'])
|
||||
{
|
||||
if(function_exists('curl_init'))
|
||||
{
|
||||
$ch = curl_init(); /// initialize a cURL session
|
||||
curl_setopt ($ch, CURLOPT_URL,"https://secure.ysf-fsj.ca/registration/xmlaffiliation.php");
|
||||
curl_setopt ($ch, CURLOPT_HEADER, 0); /// Header control
|
||||
curl_setopt ($ch, CURLOPT_POST, 1); /// tell it to make a POST, not a GET
|
||||
curl_setopt ($ch, CURLOPT_POSTFIELDS, "xml=".$_POST['xml']); /// put the query string here starting with "?"
|
||||
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); /// This allows the output to be set into a variable $datastream
|
||||
curl_setopt ($ch, CURLOPT_POSTFIELDSIZE, 0);
|
||||
curl_setopt ($ch, CURLOPT_TIMEOUT, 360);
|
||||
curl_setopt ($ch, CURLOPT_SSLVERSION, 3);
|
||||
$datastream = curl_exec ($ch); /// execute the curl session and return the output to a variable $datastream
|
||||
$datastream = str_replace(" standalone=\"yes\"","",$datastream);
|
||||
// echo "curl close <br />";
|
||||
curl_close ($ch); /// close the curl session
|
||||
|
||||
echo i18n("The YSF Registration Server said:")."<br />";
|
||||
echo notice($datastream);
|
||||
}
|
||||
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");
|
||||
}
|
||||
send_footer();
|
||||
exit;
|
||||
}
|
||||
|
||||
$ok=true;
|
||||
//make sure we have the ysf_region_id and ysf_region_password
|
||||
if(!$config['ysf_region_id'])
|
||||
{
|
||||
echo error(i18n("You have not yet specified your YSF Region ID. Go to the Configuration Variables page to set it"));
|
||||
$ok=false;
|
||||
}
|
||||
if(!$config['ysf_region_password'])
|
||||
{
|
||||
echo error(i18n("You have not yet specified your YSF Region Password. Go to the Configuration Variables page to set it"));
|
||||
$ok=false;
|
||||
}
|
||||
|
||||
if($_GET['year']) $year=$_GET['year'];
|
||||
else if($_POST['year']) $POST=$_GET['year'];
|
||||
else $year=$config['FAIRYEAR'];
|
||||
|
||||
echo "<form name=\"yearselect\" action=\"ysfstats.php\" method=\"get\">";
|
||||
$q=mysql_query("SELECT DISTINCT(year) AS year FROM config WHERE year>0 ORDER BY year");
|
||||
echo "<select name=\"year\" onchange=\"document.forms.yearselect.submit()\">";
|
||||
echo "<option value=\"\">".i18n("Choose a year")."</option>\n";
|
||||
while($r=mysql_fetch_object($q)) {
|
||||
if($year==$r->year) $sel="selected=\"selected\""; else $sel="";
|
||||
echo "<option $sel value=\"$r->year\">$r->year</option>\n";
|
||||
}
|
||||
echo "</select>\n";
|
||||
echo "</form>";
|
||||
|
||||
if($year)
|
||||
{
|
||||
|
||||
echo i18n("The following information is collected by YSF Canada each year for all affiliated regions");
|
||||
echo "<br />";
|
||||
echo "<br />";
|
||||
|
||||
$stats=array();
|
||||
|
||||
//number of schools
|
||||
$q=mysql_query("SELECT COUNT(id) AS num FROM schools WHERE year='$year'");
|
||||
$r=mysql_fetch_object($q);
|
||||
$numberofschools=$r->num;
|
||||
echo i18n("Number of schools: %1",array($numberofschools))."<br />";
|
||||
$stats["numschoolstotal"]=$numberofschools;
|
||||
|
||||
//number of schools
|
||||
$q=mysql_query("SELECT DISTINCT(students.schools_id) AS sid FROM students,registrations WHERE students.registrations_id=registrations.id AND students.year='$year' AND registrations.year='$year' AND (registrations.status='complete' OR registrations.status='paymentpending')");
|
||||
echo mysql_error();
|
||||
$numberofactiveschools=mysql_num_rows($q);
|
||||
echo i18n("Number of active schools: %1",array($numberofactiveschools))."<br />";
|
||||
$stats["numschoolsactive"]=$numberofactiveschools;
|
||||
|
||||
//total number of students:
|
||||
$q=mysql_query("SELECT COUNT(students.id) AS num FROM students,registrations WHERE students.registrations_id=registrations.id AND students.year='$year' AND registrations.year='$year' AND (registrations.status='complete' OR registrations.status='paymentpending')");
|
||||
@ -46,6 +114,7 @@
|
||||
$numberofstudents=$r->num;
|
||||
echo i18n("Number of students: %1",array($numberofstudents))."<br />";
|
||||
echo mysql_error();
|
||||
$stats["numstudents"]=$numberofstudents;
|
||||
|
||||
//number of students per grade per gender
|
||||
$q=mysql_query("SELECT COUNT(students.id) AS num, students.grade, students.sex FROM students,registrations WHERE students.registrations_id=registrations.id AND students.year='$year' AND registrations.year='$year' AND (registrations.status='complete' OR registrations.status='paymentpending') GROUP BY students.grade, students.sex");
|
||||
@ -60,6 +129,7 @@
|
||||
else if($r->grade>10)
|
||||
$nums["11up"][$r->sex]+=$r->num;
|
||||
}
|
||||
echo "<br />";
|
||||
echo "Student participation (by age group/gender)<br />";
|
||||
echo i18n("K-6 Male: %1",array($nums["6down"]["male"]?$nums["6down"]["male"]:0))."<br />";
|
||||
echo i18n("K-6 Female: %1",array($nums["6down"]["female"]?$nums["6down"]["female"]:0))."<br />";
|
||||
@ -85,6 +155,50 @@
|
||||
echo i18n("11 up Unknown: %1",array($nums["11up"][""]?$nums["11up"][""]:0))."<br />";
|
||||
echo "<br />";
|
||||
|
||||
$stats["numk6m"]=$nums["6down"]["male"]?$nums["6down"]["male"]:0;
|
||||
$stats["numk6f"]=$nums["6down"]["female"]?$nums["6down"]["female"]:0;
|
||||
//add on unknown genders split evenly
|
||||
if($nums["6down"][""]>0)
|
||||
{
|
||||
$m=ceil($nums["6down"][""]/2);
|
||||
$f=$nums["6down"][""]-$m;
|
||||
$stats["numk6m"]+=$m;
|
||||
$stats["numk6f"]+=$f;
|
||||
}
|
||||
|
||||
$stats["num78m"]=$nums["78"]["male"]?$nums["78"]["male"]:0;
|
||||
$stats["num78f"]=$nums["78"]["female"]?$nums["78"]["female"]:0;
|
||||
if($nums["78"][""]>0)
|
||||
{
|
||||
$m=ceil($nums["78"][""]/2);
|
||||
$f=$nums["78"][""]-$m;
|
||||
$stats["num78m"]+=$m;
|
||||
$stats["num78f"]+=$f;
|
||||
}
|
||||
|
||||
|
||||
$stats["num910m"]=$nums["910"]["male"]?$nums["910"]["male"]:0;
|
||||
$stats["num910f"]=$nums["910"]["female"]?$nums["910"]["female"]:0;
|
||||
if($nums["910"][""]>0)
|
||||
{
|
||||
$m=ceil($nums["910"][""]/2);
|
||||
$f=$nums["910"][""]-$m;
|
||||
$stats["num910m"]+=$m;
|
||||
$stats["num910f"]+=$f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$stats["num11upm"]=$nums["11up"]["male"]?$nums["11up"]["male"]:0;
|
||||
$stats["num11upf"]=$nums["11up"]["female"]?$nums["11up"]["female"]:0;
|
||||
if($nums["11up"][""]>0)
|
||||
{
|
||||
$m=ceil($nums["11up"][""]/2);
|
||||
$f=$nums["11up"][""]-$m;
|
||||
$stats["num11upm"]+=$m;
|
||||
$stats["num11upf"]+=$f;
|
||||
}
|
||||
|
||||
|
||||
//number of students per grade per gender
|
||||
$q=mysql_query("SELECT MAX(students.grade) grade FROM students,registrations,projects WHERE students.registrations_id=registrations.id AND projects.registrations_id=registrations.id AND students.year='$year' AND registrations.year='$year' AND projects.year='$year' AND (registrations.status='complete' OR registrations.status='paymentpending') GROUP BY projects.id");
|
||||
@ -107,19 +221,56 @@
|
||||
echo i18n("11 up: %1",array($projs["11up"]?$projs["11up"]:0))."<br />";
|
||||
echo "<br />";
|
||||
|
||||
$stats["projk6"]=$projs["6down"]?$projs["6down"]:0;
|
||||
$stats["proj78"]=$projs["78"]?$projs["78"]:0;
|
||||
$stats["proj910"]=$projs["910"]?$projs["910"]:0;
|
||||
$stats["proj11up"]=$projs["11up"]?$projs["11up"]:0;
|
||||
|
||||
$q=mysql_query("SELECT COUNT(id) AS num FROM committees_members WHERE deleted='N'");
|
||||
$r=mysql_fetch_object($q);
|
||||
$numcommittee=$r->num;
|
||||
echo i18n("Committee Members: %1 (note: this is CURRENT number of active committee members as of right now! There is no way to extract committee member numbers from previous years)",array($r->num));
|
||||
echo "<br />";
|
||||
$stats["committee"]=$numcommittee;
|
||||
|
||||
$q=mysql_query("SELECT COUNT(id) AS num FROM judges,judges_years WHERE judges_years.judges_id=judges.id AND judges_years.year='$year' AND judges.complete='yes' AND judges.deleted='no'");
|
||||
$r=mysql_fetch_object($q);
|
||||
$numjudges=$r->num;
|
||||
echo i18n("Judges: %1",array($r->num));
|
||||
$stats["judges"]=$numjudges;
|
||||
echo "<br />";
|
||||
|
||||
if($ok)
|
||||
{
|
||||
|
||||
$affil=array("affiliation"=>array(
|
||||
"ysf_region_id"=>$config['ysf_region_id'],
|
||||
"ysf_region_password"=>$config['ysf_region_password'],
|
||||
"year"=>$year,
|
||||
"stats"=>$stats
|
||||
)
|
||||
);
|
||||
|
||||
$output="";
|
||||
xmlCreateRecurse($affil);
|
||||
$xmldata=$output;
|
||||
|
||||
echo "<h3>".i18n("The following data will be sent to YSF")."</h3>";
|
||||
echo "<form method=\"post\" action=\"ysfstats.php\">";
|
||||
echo "<input type=\"hidden\" name=\"action\" value=\"register\">";
|
||||
echo "<textarea rows=\"15\" cols=\"80\" name=\"xml\">";
|
||||
echo $xmldata;
|
||||
echo "</textarea>";
|
||||
echo "<br />";
|
||||
echo "<br />";
|
||||
echo i18n("Warning! You can only use this feature once, and it will send whatever data is listed above. If you try to submit this data a second time to YSF it will not work. So please make sure everything is correct before submitting!");
|
||||
echo "<br />";
|
||||
echo "<br />";
|
||||
echo "<input type=\"submit\" value=\"".i18n("Send Affiliation Stats to YSF")."\">";
|
||||
echo "</form>";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
send_footer();
|
||||
?>
|
||||
|
Loading…
Reference in New Issue
Block a user