forked from science-ation/science-ation
- Fix the sql database for hte last commit
- move code around in curl for less indentation
This commit is contained in:
parent
62941df880
commit
daf3314c03
@ -31,289 +31,208 @@
|
||||
'Administration' => 'admin/index.php',
|
||||
'Awards Main' => 'admin/awards.php' ));
|
||||
|
||||
function array_remove($needle,&$haystack)
|
||||
{
|
||||
if(in_array($needle,$haystack))
|
||||
unset($haystack[array_search($needle,$haystack)]);
|
||||
}
|
||||
|
||||
function check_source($source)
|
||||
{
|
||||
global $config;
|
||||
$q=mysql_query("SELECT * FROM fairs WHERE id='$source'");
|
||||
$fair=mysql_fetch_assoc($q);
|
||||
if(!($fair['username'] && $fair['password'])) {
|
||||
echo error(i18n("Username and Password are not set for source '%1'. Please set them in the SFIAB Configuration/External Award Sources editor first",array($r->name)));
|
||||
return;
|
||||
}
|
||||
|
||||
echo i18n("Checking %1 for awards...",array($fair['name']));
|
||||
echo "<br />";
|
||||
|
||||
if($fair['type'] == 'ysf') {
|
||||
$req=array("awardrequest"=>array(
|
||||
"username"=>$r->username,
|
||||
"password"=>$r->password,
|
||||
"year"=>$config['FAIRYEAR'],
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$req['getawards'] = array('year'=>$config['FAIRYEAR']);
|
||||
}
|
||||
|
||||
$data = curl_query($fair, $req);
|
||||
|
||||
if($data['error'] != 0) {
|
||||
echo error("Server said: {$data['message']}<br />");
|
||||
send_footer();
|
||||
exit;
|
||||
}
|
||||
echo notice(i18n('Server said: Success'));
|
||||
|
||||
|
||||
$keys=array_keys($data);
|
||||
if(!array_key_exists('awards', $data)) {
|
||||
echo error(i18n("Invalid XML response. Expecting '%1' in '%2'",array("awards",join(',',array_keys($data)))));
|
||||
// echo "response=".print_r($datastream);
|
||||
return;
|
||||
}
|
||||
|
||||
//get a list of all the existing awards for this external source
|
||||
$aq=mysql_query("SELECT * FROM award_awards WHERE award_source_fairs_id='$source' AND year='{$config['FAIRYEAR']}'");
|
||||
$existingawards=array();
|
||||
while($ar=mysql_fetch_object($aq)) {
|
||||
$existingawards[$ar->id] = true;
|
||||
}
|
||||
|
||||
echo "<i>";
|
||||
$ar=$response['awardresponse'][0];
|
||||
$awards = $data['awards'];
|
||||
$postback = $data['postback'];
|
||||
echo i18n("Postback URL: %1",array($postback))." <br />";
|
||||
|
||||
$numawards=is_array($awards) ? count($awards) : 0;
|
||||
echo i18n("Number of Awards: %1",array($numawards))." <br />";
|
||||
|
||||
if($numawards == 0) {
|
||||
echo i18n('No awards to process').'</i> <br />';
|
||||
return;
|
||||
}
|
||||
|
||||
foreach($awards as $award) {
|
||||
$identifier=$award['identifier'];
|
||||
$year=$award['year'];
|
||||
echo i18n("Award Identifier: %1",array($identifier))." ";
|
||||
echo i18n("Award Year: %1",array($year))."<br />";
|
||||
echo i18n("Award Name: %1",array($award['name_en']))."<br />";
|
||||
|
||||
if($year != $config['FAIRYEAR']) {
|
||||
echo error(i18n("Award is not for the current fair year... skipping"));
|
||||
echo '<br />';
|
||||
continue;
|
||||
}
|
||||
|
||||
$tq=mysql_query("SELECT * FROM award_awards WHERE
|
||||
external_identifier='$identifier' AND
|
||||
award_source_fairs_id='$source' AND
|
||||
year='$year'");
|
||||
if(mysql_num_rows($tq) == 0) {
|
||||
/* Award doesn't exist, create it, then update it with the common code below */
|
||||
mysql_query("INSERT INTO award_awards (award_types_id,
|
||||
year, external_identifier,
|
||||
award_source_fairs_id)
|
||||
VALUES (2,'{$year}',
|
||||
'".mysql_escape_string($identifier)."',
|
||||
'$source')");
|
||||
$award_id=mysql_insert_id();
|
||||
} else {
|
||||
echo i18n("Award already exists, updating info")."<br />";
|
||||
$awardrecord=mysql_fetch_object($tq);
|
||||
$award_id = $awardrecord->id;
|
||||
}
|
||||
|
||||
//remove it from the existingawards list
|
||||
unset($existingawards[$award_id]);
|
||||
|
||||
//check if the sponsor exists, if not, add them
|
||||
$sponsor_str = mysql_escape_string($award['sponsor']);
|
||||
$sponsorq=mysql_query("SELECT * FROM sponsors WHERE organization='$sponsor_str'");
|
||||
if($sponsorr=mysql_fetch_object($sponsorq)) {
|
||||
$sponsor_id=$sponsorr->id;
|
||||
} else {
|
||||
mysql_query("INSERT INTO sponsors (organization,year,notes,confirmed)
|
||||
VALUES ('$sponsor_str','$year','".mysql_escape_string("Imported from external source: $r->name")."','yes')");
|
||||
$sponsor_id=mysql_insert_id();
|
||||
}
|
||||
|
||||
mysql_query("UPDATE award_awards SET
|
||||
sponsors_id='$sponsor_id',
|
||||
name='".mysql_escape_string($award['name_en'])."',
|
||||
criteria='".mysql_escape_string($award['criteria_en'])."',
|
||||
external_postback='".mysql_escape_string($postback)."'
|
||||
WHERE
|
||||
id='$award_id'
|
||||
AND external_identifier='".mysql_escape_string($identifier)."'
|
||||
AND year='$year'
|
||||
");
|
||||
echo mysql_error();
|
||||
|
||||
//update the prizes
|
||||
$prizes = $award['prizes'];
|
||||
if(is_array($prizes) && count($prizes) > 0) {
|
||||
echo i18n("Number of prizes: %1",array(count($prizes)))."<br />";
|
||||
$pq=mysql_query("SELECT * FROM award_prizes WHERE award_awards_id='$award_id'");
|
||||
//get a list of all the existing prizes
|
||||
$existingprizes=array();
|
||||
while($pr=mysql_fetch_object($pq)) {
|
||||
$existingprizes[$pr->external_identifier]=$pr;
|
||||
}
|
||||
|
||||
foreach($prizes AS $prize) {
|
||||
//if it doesn't exist, add it
|
||||
if(!array_key_exists($prize['identifier'],$existingprizes)) {
|
||||
/* Add a base entry, then update it below, yes it's two sql queries,
|
||||
* but it's much shorter code, and means changing things in only
|
||||
* one spot */
|
||||
echo " ".i18n("Adding prize %1",array($prize['identifier']))."<br />";
|
||||
mysql_query("INSERT INTO award_prizes (award_awards_id,year,externa_identifier)
|
||||
VALUES ('$award_id','$year',".mysql_escape_string($prize['identifier'])."')");
|
||||
} else {
|
||||
$ep=$existingprizes[$prize['identifier']];
|
||||
echo " ".i18n("Updating prize %1",array($ep->external_identifier))."<br />";
|
||||
}
|
||||
|
||||
if(!array_key_exists($prize['identifier'],$existingprizes)) {
|
||||
$ep=$existingprizes[$prize['identifier']];
|
||||
|
||||
mysql_query("UPDATE award_prizes SET
|
||||
cash='".intval($prize['cash'])."',
|
||||
scholarship='".intval($prize['scholarship'])."',
|
||||
value='".intval($prize['value'])."',
|
||||
prize='".mysql_escape_string($prize['prize_en'])."',
|
||||
number='".intval($prize['number'])."',
|
||||
`order`='".intval($prize['ord'])."'
|
||||
WHERE
|
||||
id='$ep->id'");
|
||||
|
||||
//remove it from the list
|
||||
unset($existingprizes[$ep->external_identifier]);
|
||||
}
|
||||
|
||||
//if an entry exists thats not in the xml -> delete it
|
||||
foreach($existingprizes AS $ep) {
|
||||
echo " ".i18n("Removing prize %1",array($ep->external_identifier))."<br />";
|
||||
mysql_query("DELETE FROM award_prizes WHERE id='$ep->id'");
|
||||
}
|
||||
}
|
||||
//FIXME: update the translations
|
||||
}
|
||||
}
|
||||
echo "<br />";
|
||||
|
||||
|
||||
//remove any awards that are left in the $existingawards array, they must have been removed from the source
|
||||
foreach($existingawards AS $aid) {
|
||||
echo i18n("Removing award id %1 that was removed from external source",array($aid))."<br />";
|
||||
mysql_query("DELETE FROM award_prizes WHERE award_awards_id='$aid'");
|
||||
mysql_query("DELETE FROM award_awards WHERE id='$aid'");
|
||||
}
|
||||
|
||||
echo "</i>";
|
||||
}
|
||||
|
||||
if($_GET['action']=="check") {
|
||||
if(count($_GET['check'])) {
|
||||
foreach($_GET['check'] AS $checksource) {
|
||||
|
||||
$checksource=intval($checksource);
|
||||
$q=mysql_query("SELECT * FROM fairs WHERE id='$checksource'");
|
||||
$fair=mysql_fetch_assoc($q);
|
||||
if(!($fair['username'] && $fair['password'])) {
|
||||
echo error(i18n("Username and Password are not set for source '%1'. Please set them in the SFIAB Configuration/External Award Sources editor first",array($r->name)));
|
||||
continue;
|
||||
|
||||
}
|
||||
echo i18n("Checking %1 for awards...",array($fair['name']));
|
||||
echo "<br />";
|
||||
|
||||
if($fair['type'] == 'ysf') {
|
||||
$req=array("awardrequest"=>array(
|
||||
"username"=>$r->username,
|
||||
"password"=>$r->password,
|
||||
"year"=>$config['FAIRYEAR'],
|
||||
)
|
||||
);
|
||||
} else {
|
||||
$req['getawards'] = array('year'=>$config['FAIRYEAR']);
|
||||
}
|
||||
|
||||
$data = curl_query($fair, $req);
|
||||
|
||||
if($data['error'] != 0) {
|
||||
echo error("Server said: {$data['message']}<br />");
|
||||
send_footer();
|
||||
exit;
|
||||
}
|
||||
echo notice(i18n('Server said: Success'));
|
||||
|
||||
$keys=array_keys($response);
|
||||
if($keys[0]=="awardresponse") {
|
||||
|
||||
//get a list of all the existing awards for this external source
|
||||
$aq=mysql_query("SELECT * FROM award_awards WHERE award_sources_id='$checksource' AND year='".$config['FAIRYEAR']."'");
|
||||
$existingawards=array();
|
||||
while($ar=mysql_fetch_object($aq)) {
|
||||
$existingawards[]=$ar->id;
|
||||
}
|
||||
|
||||
echo "<i>";
|
||||
$ar=$response['awardresponse'][0];
|
||||
$postback=$ar['postback'][0];
|
||||
echo i18n("Postback URL: %1",array($postback))." <br />";
|
||||
if($ar['awards'][0]['award'])
|
||||
$numawards=count($ar['awards'][0]['award']);
|
||||
else
|
||||
$numawards=0;
|
||||
|
||||
echo i18n("Number of Awards: %1",array($numawards))." <br />";
|
||||
if($numawards>0) {
|
||||
|
||||
foreach($ar['awards'][0]['award'] AS $award) {
|
||||
$identifier=$award['identifier'][0];
|
||||
$year=$award['year'][0];
|
||||
echo i18n("Award Identifier: %1",array($identifier))." ";
|
||||
echo i18n("Award Year: %1",array($year))."<br />";
|
||||
echo i18n("Award Name: %1",array($award['name_en'][0]))."<br />";
|
||||
|
||||
if($year==$config['FAIRYEAR']) {
|
||||
$tq=mysql_query("SELECT * FROM award_awards WHERE external_identifier='$identifier' AND award_sources_id='$checksource' AND year='$year'");
|
||||
if($awardrecord=mysql_fetch_object($tq)) {
|
||||
echo i18n("Award already exists, updating info")."<br />";
|
||||
|
||||
//remove it from the existingawards list
|
||||
array_remove($awardrecord->id,$existingawards);
|
||||
|
||||
|
||||
//check if the sponsor exists, if not, add them
|
||||
$sponsorq=mysql_query("SELECT * FROM sponsors WHERE organization='".mysql_escape_string($award['sponsor'][0])."'");
|
||||
if($sponsorr=mysql_fetch_object($sponsorq)) {
|
||||
$sponsor_id=$sponsorr->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
mysql_query("INSERT INTO sponsors (organization,year,notes,confirmed) VALUES ('".mysql_escape_string($award['sponsor'][0])."','$year','".mysql_escape_string("Imported from external source: $r->name")."','yes')");
|
||||
$sponsor_id=mysql_insert_id();
|
||||
}
|
||||
|
||||
mysql_query("UPDATE award_awards SET
|
||||
sponsors_id='$sponsor_id',
|
||||
name='".mysql_escape_string($award['name_en'][0])."',
|
||||
criteria='".mysql_escape_string($award['criteria_en'][0])."',
|
||||
external_postback='".mysql_escape_string($postback)."'
|
||||
WHERE
|
||||
id='$awardrecord->id'
|
||||
AND external_identifier='".mysql_escape_string($identifier)."'
|
||||
AND year='$year'
|
||||
");
|
||||
|
||||
echo mysql_error();
|
||||
//update the prizes
|
||||
if(is_array($award['prizes'][0]) && count($award['prizes'][0]['prize']>0))
|
||||
{
|
||||
$prizes=$award['prizes'][0]['prize'];
|
||||
$numprizes=count($prizes);
|
||||
echo i18n("Number of prizes: %1",array($numprizes))."<br />";
|
||||
$pq=mysql_query("SELECT * FROM award_prizes WHERE award_awards_id='$awardrecord->id'");
|
||||
//get a list of all the existing prizes
|
||||
$existingprizes=array();
|
||||
while($pr=mysql_fetch_object($pq)) {
|
||||
$existingprizes[$pr->external_identifier]=$pr;
|
||||
}
|
||||
|
||||
foreach($prizes AS $prize) {
|
||||
//if it exists -> update it
|
||||
if(array_key_exists($prize['identifier'][0],$existingprizes)) {
|
||||
$ep=$existingprizes[$prize['identifier'][0]];
|
||||
|
||||
echo " ".i18n("Updating prize %1",array($ep->external_identifier))."<br />";
|
||||
mysql_query("UPDATE award_prizes SET
|
||||
cash='".intval($prize['cash'][0])."',
|
||||
scholarship='".intval($prize['scholarship'][0])."',
|
||||
value='".intval($prize['value'][0])."',
|
||||
prize='".mysql_escape_string($prize['prize_en'][0])."',
|
||||
number='".intval($prize['number'][0])."',
|
||||
`order`='".intval($prize['ord'][0])."'
|
||||
WHERE
|
||||
id='$ep->id'");
|
||||
|
||||
//remove it from the list
|
||||
unset($existingprizes[$ep->external_identifier]);
|
||||
}
|
||||
else { //if it doesnt exist -> add it
|
||||
echo " ".i18n("Adding prize %1",array($prize['identifier'][0]))."<br />";
|
||||
|
||||
mysql_query("INSERT INTO award_prizes (
|
||||
award_awards_id,
|
||||
cash,
|
||||
scholarship,
|
||||
value,
|
||||
prize,
|
||||
number,
|
||||
`order`,
|
||||
`year`,
|
||||
external_identifier
|
||||
) VALUES (
|
||||
'$awardrecord->id',
|
||||
'".intval($prize['cash'][0])."',
|
||||
'".intval($prize['scholarship'][0])."',
|
||||
'".intval($prize['value'][0])."',
|
||||
'".mysql_escape_string($prize['prize_en'][0])."',
|
||||
'".intval($prize['number'][0])."',
|
||||
'".intval($prize['ord'][0])."',
|
||||
'$year',
|
||||
'".mysql_escape_string($prize['identifier'][0])."'
|
||||
)");
|
||||
|
||||
}
|
||||
}
|
||||
//if an entry exists thats not in the xml -> delete it
|
||||
foreach($existingprizes AS $ep) {
|
||||
echo " ".i18n("Removing prize %1",array($ep->external_identifier))."<br />";
|
||||
mysql_query("DELETE FROM award_prizes WHERE id='$ep->id'");
|
||||
}
|
||||
}
|
||||
//FIXME: update the translations
|
||||
}
|
||||
else {
|
||||
//check if the sponsor exists, if not, add them
|
||||
$sponsorq=mysql_query("SELECT * FROM sponsors WHERE organization='".mysql_escape_string($award['sponsor'][0])."'");
|
||||
if($sponsorr=mysql_fetch_object($sponsorq)) {
|
||||
$sponsor_id=$sponsorr->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
mysql_query("INSERT INTO sponsors (organization,year,notes,confirmed) VALUES ('".mysql_escape_string($award['sponsor'][0])."','$year','".mysql_escape_string("Imported from external source: $r->name")."','yes')");
|
||||
$sponsor_id=mysql_insert_id();
|
||||
}
|
||||
|
||||
echo i18n("Award does not exists, adding...")."<br />";
|
||||
mysql_query("INSERT INTO award_awards (
|
||||
award_types_id,
|
||||
sponsors_id,
|
||||
name,
|
||||
criteria,
|
||||
year,
|
||||
external_identifier,
|
||||
external_postback,
|
||||
award_sources_id
|
||||
)
|
||||
VALUES (
|
||||
2,
|
||||
$sponsor_id,
|
||||
'".mysql_escape_string($award['name_en'][0])."',
|
||||
'".mysql_escape_string($award['criteria_en'][0])."',
|
||||
'".$year."',
|
||||
'".mysql_escape_string($identifier)."',
|
||||
'".mysql_escape_string($postback)."',
|
||||
'$checksource'
|
||||
)");
|
||||
$award_id=mysql_insert_id();
|
||||
|
||||
//import the prizes
|
||||
if(is_array($award['prizes'][0]) && count($award['prizes'][0]['prize']>0))
|
||||
{
|
||||
$prizes=$award['prizes'][0]['prize'];
|
||||
$numprizes=count($prizes);
|
||||
echo i18n("Number of prizes: %1",array($numprizes))."<br />";
|
||||
foreach($prizes AS $prize) {
|
||||
mysql_query("INSERT INTO award_prizes (
|
||||
award_awards_id,
|
||||
cash,
|
||||
scholarship,
|
||||
value,
|
||||
prize,
|
||||
number,
|
||||
`order`,
|
||||
`year`,
|
||||
external_identifier
|
||||
) VALUES (
|
||||
'$award_id',
|
||||
'".intval($prize['cash'][0])."',
|
||||
'".intval($prize['scholarship'][0])."',
|
||||
'".intval($prize['value'][0])."',
|
||||
'".mysql_escape_string($prize['prize_en'][0])."',
|
||||
'".intval($prize['number'][0])."',
|
||||
'".intval($prize['ord'][0])."',
|
||||
'$year',
|
||||
'".mysql_escape_string($prize['identifier'][0])."'
|
||||
)");
|
||||
}
|
||||
}
|
||||
else
|
||||
echo error(i18n("No prizes associated with this award"));
|
||||
|
||||
//FIXME: import the translations & prize translations
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo error(i18n("Award is not for the current fair year... skipping"));
|
||||
}
|
||||
echo "<br />";
|
||||
|
||||
}
|
||||
}
|
||||
echo "</i>";
|
||||
|
||||
//remove any awards that are left in the $existingawards array, they must have been removed from the source
|
||||
foreach($existingawards AS $aid) {
|
||||
echo i18n("Removing award id %1 that was removed from external source",array($aid))."<br />";
|
||||
mysql_query("DELETE FROM award_prizes WHERE award_awards_id='$aid'");
|
||||
mysql_query("DELETE FROM award_awards WHERE id='$aid'");
|
||||
}
|
||||
}
|
||||
else
|
||||
echo error(i18n("Invalid XML response. Expecting '%1', received '%2'",array("awardresponse",$keys[0])));
|
||||
// echo "response=".print_r($datastream);
|
||||
|
||||
echo "<br />";
|
||||
check_source(intval($checksource));
|
||||
echo "<br />";
|
||||
}
|
||||
}
|
||||
else
|
||||
} else {
|
||||
echo error(i18n("No sources available to check"));
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
} else {
|
||||
|
||||
if(!function_exists('curl_init'))
|
||||
{
|
||||
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
|
||||
} else {
|
||||
$links=true;
|
||||
}
|
||||
|
||||
$q=mysql_query("SELECT * FROM fairs WHERE enable_awards='yes' ORDER BY name");
|
||||
echo "<table class=\"tableview\">";
|
||||
|
@ -52,6 +52,8 @@
|
||||
break;
|
||||
}
|
||||
|
||||
echo "<pre>Curl Send: $str</pre>";
|
||||
|
||||
$ch = curl_init(); /// initialize a cURL session
|
||||
curl_setopt ($ch, CURLOPT_URL, $url);
|
||||
curl_setopt ($ch, CURLOPT_HEADER, 0); /// Header control
|
||||
@ -65,7 +67,7 @@
|
||||
$datastream = curl_exec ($ch); /// execute the curl session and return the output to a variable $datastream
|
||||
curl_close ($ch); /// close the curl session
|
||||
|
||||
// echo "<pre>$datastream</pre>";
|
||||
// echo "<pre>Server Returned: ".urldecode($datastream)."</pre>";
|
||||
|
||||
switch($fair['type']) {
|
||||
case 'sfiab':
|
||||
@ -78,7 +80,7 @@
|
||||
$ret['message'] = $datastream;
|
||||
break;
|
||||
}
|
||||
// echo "ret: ";print_r($ret);echo "<br>";
|
||||
echo "<pre>Server Returned: ";print_r($ret);echo "</pre><br>";
|
||||
return $ret;
|
||||
}
|
||||
?>
|
||||
|
@ -1 +1 @@
|
||||
129
|
||||
130
|
||||
|
4
db/db.update.130.sql
Normal file
4
db/db.update.130.sql
Normal file
@ -0,0 +1,4 @@
|
||||
ALTER TABLE `award_awards` CHANGE `award_sources_id` `award_source_fairs_id` INT( 10 ) UNSIGNED NULL DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `fairs` ADD `award_awards_ids` TEXT NOT NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user