diff --git a/admin/award_upload.php b/admin/award_upload.php new file mode 100644 index 00000000..cf5cca58 --- /dev/null +++ b/admin/award_upload.php @@ -0,0 +1,256 @@ +<? +/* + 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> + + 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("xml.inc.php"); + require_once("../user.inc.php"); + + require("../common.inc.php"); + require("../projects.inc.php"); + user_auth_required('committee', 'admin'); + send_header("Award Upload", + array('Committee Main' => 'committee_main.php', + 'Administration' => 'admin/index.php', + 'Awards Main' => 'admin/awards.php') + ); + echo "<br />"; + + //function get_cwsf_award_winners() + function get_winners_for_award($awardid) + { + global $config; + $winners=array(); + + $q=mysql_query("SELECT * FROM award_awards WHERE id='$awardid' AND year='".$config['FAIRYEAR']."'"); + if(mysql_num_rows($q)==1) + { + $award=mysql_fetch_object($q); + $pq=mysql_query("SELECT * FROM award_prizes WHERE award_awards_id='$award->id'"); + while($prize=mysql_fetch_object($pq)) + { + $wq=mysql_query("SELECT + projects.id, + projects.projectnumber, + projects.title, + projects.summary, + projects.registrations_id, + projects.projectdivisions_id + + FROM + winners, + projects + WHERE + winners.projects_id=projects.id AND + awards_prizes_id='$prize->id' AND + winners.year='".$config['FAIRYEAR']."'"); + echo mysql_error(); + while($project=mysql_fetch_object($wq)) + { + $sq=mysql_query("SELECT * FROM students WHERE registrations_id='$project->registrations_id' AND year='".$config['FAIRYEAR']."'"); + $students=array(); + while($s=mysql_fetch_object($sq)) + { + $schoolq=mysql_query("SELECT * FROM schools WHERE id='$s->schools_id'"); + $school=array(); + if($schoolr=mysql_fetch_object($schoolq)) { + $school=array( + "xml_type"=>"school", + "schoolname"=>$schoolr->school, + "schoollang"=>$schoolr->schoollang, + "schoollevel"=>$schoolr->schoollevel, + "board"=>$schoolr->board, + "district"=>$schoolr->district, + "phone"=>$schoolr->phone, + "fax"=>$schoolr->fax, + "address"=>$schoolr->address, + "city"=>$schoolr->city, + "province_code"=>$schoolr->province_code, + "postalcode"=>$schoolr->postalcode, + "principal"=>$schoolr->principal, + "schoolemail"=>$schoolr->schoolemail, + "sciencehead"=>$schoolr->sciencehead, + "scienceheademail"=>$schoolr->scienceheademail, + "scienceheadphone"=>$schoolr->scienceheadphone + ); + } + $students[]=array( + "xml_type"=>"student", + "firstname"=>$s->firstname, + "lastname"=>$s->lastname, + "email"=>$s->email, + "gender"=>$s->sex, + "grade"=>$s->grade, + "language"=>$s->lang, + "birthdate"=>$s->dateofbirth, + "address1"=>$s->address, + "address2"=>"", + "city"=>$s->city, + "province"=>$s->province, + "postalcode"=>$s->postalcode, + "phone"=>$s->phone, + "teachername"=>$s->teachername, + "teacheremail"=>$s->teacheremail, + "school"=>$school + ); + + } + $prizewinners[]=array( + "xml_type"=>"project", + "projectid"=>$project->id, + "projectnumber"=>$project->projectnumber, + "title"=>$project->title, + "abstract"=>$project->summary, + "students"=>$students, + ); + } + $winners[]=array( + "xml_type"=>"prize", + "identifier"=>$prize->external_identifier, + "projects"=>$prizewinners + ); + } + //print_r($award); + } + return $winners; + } + + + if($_GET['action']=="send") + { + if(count($_GET['send'])) { + require_once("xml.inc.php"); + foreach($_GET['send'] AS $awardid) { + + + $q=mysql_query("SELECT award_awards.id, + award_awards.name AS awardname, + award_awards.external_identifier, + award_awards.external_postback, + award_sources.name AS sourcename, + award_sources.username, + award_sources.password + FROM + award_awards + JOIN award_sources ON award_awards.award_sources_id=award_sources.id + WHERE award_sources.enabled='yes' + AND award_awards.id='$awardid'"); + + if($r=mysql_fetch_object($q)) { + echo i18n("Sending award winners for %1 to %2...",array($r->awardname,$r->sourcename)); + if(!($r->username && $r->password && $r->external_postback)) { + echo error(i18n("Username, Password or Postback Address missing, cannot send winners for this award")); + continue; + } + $winners=get_winners_for_award($r->id); + echo "<br />"; + if(count($winners)==0) { + echo " ".i18n("No winner(s) selected for this award... reporting no winners")."<br />"; + } + + $reg=array("awardwinners"=>array( + "username"=>$r->username, + "password"=>$r->password, + "identifier"=>$r->external_identifier, + "prizes"=>$winners + ) + ); + + $output=""; + xmlCreateRecurse($reg); + $xmldata=$output; + + $ch = curl_init(); /// initialize a cURL session + curl_setopt ($ch, CURLOPT_URL,$r->external_postback); + 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['xmldata']); /// 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("Response from server:"); + $response=xml_parsexml($datastream); + $keys=array_keys($response); + if($keys[0]=="awardwinnersresponse") { + $status=$response['awardwinnersresponse'][0]['status'][0]; + if($status=="success") + echo happy(i18n("Success")); + else + echo error(ucfirst($status)); //not translated, because it came right from the server! + } + else + echo error(i18n("Invalid XML response. Expecting '%1', received '%2'",array("awardwinnersresponse",$keys[0]))); + } + echo "<br />"; + } + } + } + else + { + if(!function_exists('curl_init')) + { + echo error(i18n("CURL Support Missing")); + echo notice(i18n("Your PHP installation does not support CURL. You will need to have CURL support added by your system administrator before being able to access external award sources")); + $links=false; + } + else + $links=true; + + $q=mysql_query("SELECT award_awards.id, + award_awards.name AS awardname, + award_sources.name AS sourcename + FROM + award_awards + JOIN award_sources ON award_awards.award_sources_id=award_sources.id + WHERE award_sources.enabled='yes' + ORDER BY award_sources.name, award_awards.name"); + echo mysql_error(); + echo "<table class=\"tableview\">"; + echo "<tr><th>".i18n("Award Name")."</th>"; + echo "<th>".i18n("Source Name")."</th>"; + echo "<th>".i18n("Send")."</th>"; + echo "</tr>"; + while($r=mysql_fetch_object($q)) { + echo "<tr>"; + echo "<td>$r->awardname</td>\n"; + echo "<td>$r->sourcename</td>"; + echo "<td align=\"center\">"; + if($links) + echo "<a href=\"award_upload.php?action=send&send[]=$r->id\">".i18n("send")."</a>"; + else + echo "n/a"; + echo "</td>"; + echo "</tr>"; + $sendurl.="&send[]=$r->id"; + } + echo "</table>\n"; + echo "<br />"; + + if($links) + echo "<a href=\"award_upload.php?action=send$sendurl\">".i18n("Send all awards")."</a>"; + + } + send_footer(); +?> diff --git a/admin/awards.php b/admin/awards.php index 8b5e2f56..aef2c39d 100644 --- a/admin/awards.php +++ b/admin/awards.php @@ -42,6 +42,7 @@ echo "<a href=\"award_awardcreatedivisional.php\">".i18n('Create divisional awards for all divisions & categories')."</a><br />"; echo "<br />"; echo "<a href=\"award_download.php\">".i18n('Download awards from external sources')."</a><br />"; + echo "<a href=\"award_upload.php\">".i18n('Upload award winners to external sources')."</a><br />"; send_footer();