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,29 +31,16 @@
|
|||||||
'Administration' => 'admin/index.php',
|
'Administration' => 'admin/index.php',
|
||||||
'Awards Main' => 'admin/awards.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)
|
function check_source($source)
|
||||||
{
|
{
|
||||||
|
global $config;
|
||||||
}
|
$q=mysql_query("SELECT * FROM fairs WHERE id='$source'");
|
||||||
|
|
||||||
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);
|
$fair=mysql_fetch_assoc($q);
|
||||||
if(!($fair['username'] && $fair['password'])) {
|
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)));
|
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;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo i18n("Checking %1 for awards...",array($fair['name']));
|
echo i18n("Checking %1 for awards...",array($fair['name']));
|
||||||
echo "<br />";
|
echo "<br />";
|
||||||
|
|
||||||
@ -77,74 +64,98 @@
|
|||||||
}
|
}
|
||||||
echo notice(i18n('Server said: Success'));
|
echo notice(i18n('Server said: Success'));
|
||||||
|
|
||||||
$keys=array_keys($response);
|
|
||||||
if($keys[0]=="awardresponse") {
|
$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
|
//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']."'");
|
$aq=mysql_query("SELECT * FROM award_awards WHERE award_source_fairs_id='$source' AND year='{$config['FAIRYEAR']}'");
|
||||||
$existingawards=array();
|
$existingawards=array();
|
||||||
while($ar=mysql_fetch_object($aq)) {
|
while($ar=mysql_fetch_object($aq)) {
|
||||||
$existingawards[]=$ar->id;
|
$existingawards[$ar->id] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<i>";
|
echo "<i>";
|
||||||
$ar=$response['awardresponse'][0];
|
$ar=$response['awardresponse'][0];
|
||||||
$postback=$ar['postback'][0];
|
$awards = $data['awards'];
|
||||||
|
$postback = $data['postback'];
|
||||||
echo i18n("Postback URL: %1",array($postback))." <br />";
|
echo i18n("Postback URL: %1",array($postback))." <br />";
|
||||||
if($ar['awards'][0]['award'])
|
|
||||||
$numawards=count($ar['awards'][0]['award']);
|
|
||||||
else
|
|
||||||
$numawards=0;
|
|
||||||
|
|
||||||
|
$numawards=is_array($awards) ? count($awards) : 0;
|
||||||
echo i18n("Number of Awards: %1",array($numawards))." <br />";
|
echo i18n("Number of Awards: %1",array($numawards))." <br />";
|
||||||
if($numawards>0) {
|
|
||||||
|
|
||||||
foreach($ar['awards'][0]['award'] AS $award) {
|
if($numawards == 0) {
|
||||||
$identifier=$award['identifier'][0];
|
echo i18n('No awards to process').'</i> <br />';
|
||||||
$year=$award['year'][0];
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($awards as $award) {
|
||||||
|
$identifier=$award['identifier'];
|
||||||
|
$year=$award['year'];
|
||||||
echo i18n("Award Identifier: %1",array($identifier))." ";
|
echo i18n("Award Identifier: %1",array($identifier))." ";
|
||||||
echo i18n("Award Year: %1",array($year))."<br />";
|
echo i18n("Award Year: %1",array($year))."<br />";
|
||||||
echo i18n("Award Name: %1",array($award['name_en'][0]))."<br />";
|
echo i18n("Award Name: %1",array($award['name_en']))."<br />";
|
||||||
|
|
||||||
if($year==$config['FAIRYEAR']) {
|
if($year != $config['FAIRYEAR']) {
|
||||||
$tq=mysql_query("SELECT * FROM award_awards WHERE external_identifier='$identifier' AND award_sources_id='$checksource' AND year='$year'");
|
echo error(i18n("Award is not for the current fair year... skipping"));
|
||||||
if($awardrecord=mysql_fetch_object($tq)) {
|
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 />";
|
echo i18n("Award already exists, updating info")."<br />";
|
||||||
|
$awardrecord=mysql_fetch_object($tq);
|
||||||
|
$award_id = $awardrecord->id;
|
||||||
|
}
|
||||||
|
|
||||||
//remove it from the existingawards list
|
//remove it from the existingawards list
|
||||||
array_remove($awardrecord->id,$existingawards);
|
unset($existingawards[$award_id]);
|
||||||
|
|
||||||
|
|
||||||
//check if the sponsor exists, if not, add them
|
//check if the sponsor exists, if not, add them
|
||||||
$sponsorq=mysql_query("SELECT * FROM sponsors WHERE organization='".mysql_escape_string($award['sponsor'][0])."'");
|
$sponsor_str = mysql_escape_string($award['sponsor']);
|
||||||
|
$sponsorq=mysql_query("SELECT * FROM sponsors WHERE organization='$sponsor_str'");
|
||||||
if($sponsorr=mysql_fetch_object($sponsorq)) {
|
if($sponsorr=mysql_fetch_object($sponsorq)) {
|
||||||
$sponsor_id=$sponsorr->id;
|
$sponsor_id=$sponsorr->id;
|
||||||
}
|
} else {
|
||||||
else
|
mysql_query("INSERT INTO sponsors (organization,year,notes,confirmed)
|
||||||
{
|
VALUES ('$sponsor_str','$year','".mysql_escape_string("Imported from external source: $r->name")."','yes')");
|
||||||
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();
|
$sponsor_id=mysql_insert_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
mysql_query("UPDATE award_awards SET
|
mysql_query("UPDATE award_awards SET
|
||||||
sponsors_id='$sponsor_id',
|
sponsors_id='$sponsor_id',
|
||||||
name='".mysql_escape_string($award['name_en'][0])."',
|
name='".mysql_escape_string($award['name_en'])."',
|
||||||
criteria='".mysql_escape_string($award['criteria_en'][0])."',
|
criteria='".mysql_escape_string($award['criteria_en'])."',
|
||||||
external_postback='".mysql_escape_string($postback)."'
|
external_postback='".mysql_escape_string($postback)."'
|
||||||
WHERE
|
WHERE
|
||||||
id='$awardrecord->id'
|
id='$award_id'
|
||||||
AND external_identifier='".mysql_escape_string($identifier)."'
|
AND external_identifier='".mysql_escape_string($identifier)."'
|
||||||
AND year='$year'
|
AND year='$year'
|
||||||
");
|
");
|
||||||
|
|
||||||
echo mysql_error();
|
echo mysql_error();
|
||||||
|
|
||||||
//update the prizes
|
//update the prizes
|
||||||
if(is_array($award['prizes'][0]) && count($award['prizes'][0]['prize']>0))
|
$prizes = $award['prizes'];
|
||||||
{
|
if(is_array($prizes) && count($prizes) > 0) {
|
||||||
$prizes=$award['prizes'][0]['prize'];
|
echo i18n("Number of prizes: %1",array(count($prizes)))."<br />";
|
||||||
$numprizes=count($prizes);
|
$pq=mysql_query("SELECT * FROM award_prizes WHERE award_awards_id='$award_id'");
|
||||||
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
|
//get a list of all the existing prizes
|
||||||
$existingprizes=array();
|
$existingprizes=array();
|
||||||
while($pr=mysql_fetch_object($pq)) {
|
while($pr=mysql_fetch_object($pq)) {
|
||||||
@ -152,51 +163,36 @@ echo mysql_error();
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach($prizes AS $prize) {
|
foreach($prizes AS $prize) {
|
||||||
//if it exists -> update it
|
//if it doesn't exist, add it
|
||||||
if(array_key_exists($prize['identifier'][0],$existingprizes)) {
|
if(!array_key_exists($prize['identifier'],$existingprizes)) {
|
||||||
$ep=$existingprizes[$prize['identifier'][0]];
|
/* 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 />";
|
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
|
mysql_query("UPDATE award_prizes SET
|
||||||
cash='".intval($prize['cash'][0])."',
|
cash='".intval($prize['cash'])."',
|
||||||
scholarship='".intval($prize['scholarship'][0])."',
|
scholarship='".intval($prize['scholarship'])."',
|
||||||
value='".intval($prize['value'][0])."',
|
value='".intval($prize['value'])."',
|
||||||
prize='".mysql_escape_string($prize['prize_en'][0])."',
|
prize='".mysql_escape_string($prize['prize_en'])."',
|
||||||
number='".intval($prize['number'][0])."',
|
number='".intval($prize['number'])."',
|
||||||
`order`='".intval($prize['ord'][0])."'
|
`order`='".intval($prize['ord'])."'
|
||||||
WHERE
|
WHERE
|
||||||
id='$ep->id'");
|
id='$ep->id'");
|
||||||
|
|
||||||
//remove it from the list
|
//remove it from the list
|
||||||
unset($existingprizes[$ep->external_identifier]);
|
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
|
//if an entry exists thats not in the xml -> delete it
|
||||||
foreach($existingprizes AS $ep) {
|
foreach($existingprizes AS $ep) {
|
||||||
echo " ".i18n("Removing prize %1",array($ep->external_identifier))."<br />";
|
echo " ".i18n("Removing prize %1",array($ep->external_identifier))."<br />";
|
||||||
@ -205,86 +201,9 @@ echo mysql_error();
|
|||||||
}
|
}
|
||||||
//FIXME: update the translations
|
//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 "<br />";
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
echo "</i>";
|
|
||||||
|
|
||||||
//remove any awards that are left in the $existingawards array, they must have been removed from the source
|
//remove any awards that are left in the $existingawards array, they must have been removed from the source
|
||||||
foreach($existingawards AS $aid) {
|
foreach($existingawards AS $aid) {
|
||||||
@ -292,28 +211,28 @@ echo mysql_error();
|
|||||||
mysql_query("DELETE FROM award_prizes WHERE award_awards_id='$aid'");
|
mysql_query("DELETE FROM award_prizes WHERE award_awards_id='$aid'");
|
||||||
mysql_query("DELETE FROM award_awards WHERE 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 "</i>";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($_GET['action']=="check") {
|
||||||
|
if(count($_GET['check'])) {
|
||||||
|
foreach($_GET['check'] AS $checksource) {
|
||||||
|
check_source(intval($checksource));
|
||||||
echo "<br />";
|
echo "<br />";
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
echo error(i18n("No sources available to check"));
|
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 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"));
|
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;
|
$links=false;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
$links=true;
|
$links=true;
|
||||||
|
}
|
||||||
|
|
||||||
$q=mysql_query("SELECT * FROM fairs WHERE enable_awards='yes' ORDER BY name");
|
$q=mysql_query("SELECT * FROM fairs WHERE enable_awards='yes' ORDER BY name");
|
||||||
echo "<table class=\"tableview\">";
|
echo "<table class=\"tableview\">";
|
||||||
|
@ -52,6 +52,8 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
echo "<pre>Curl Send: $str</pre>";
|
||||||
|
|
||||||
$ch = curl_init(); /// initialize a cURL session
|
$ch = curl_init(); /// initialize a cURL session
|
||||||
curl_setopt ($ch, CURLOPT_URL, $url);
|
curl_setopt ($ch, CURLOPT_URL, $url);
|
||||||
curl_setopt ($ch, CURLOPT_HEADER, 0); /// Header control
|
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
|
$datastream = curl_exec ($ch); /// execute the curl session and return the output to a variable $datastream
|
||||||
curl_close ($ch); /// close the curl session
|
curl_close ($ch); /// close the curl session
|
||||||
|
|
||||||
// echo "<pre>$datastream</pre>";
|
// echo "<pre>Server Returned: ".urldecode($datastream)."</pre>";
|
||||||
|
|
||||||
switch($fair['type']) {
|
switch($fair['type']) {
|
||||||
case 'sfiab':
|
case 'sfiab':
|
||||||
@ -78,7 +80,7 @@
|
|||||||
$ret['message'] = $datastream;
|
$ret['message'] = $datastream;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// echo "ret: ";print_r($ret);echo "<br>";
|
echo "<pre>Server Returned: ";print_r($ret);echo "</pre><br>";
|
||||||
return $ret;
|
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