PHP Code:
case $ACT_GUILD_DONATE :
$in = explode ( ';', $action_extra );
$donation = array (
'silver' => 0,
'mushroom' => 0
);
if ($in [0] == 1)
$donation ['silver'] = ( int ) $in [1];
else{
$donation ['mushroom'] = ( int ) $in [1];
// $ret = array($ERR_GUILD_MUSH_FREE);
// break;
}
// get gold and mush of donor
$qry = $db->prepare ( "SELECT user_data.silver AS silver, user_data.mushroom AS mushroom,
user_data.guild_id, guilds.silver AS gsilver, guilds.mushroom AS gmushroom
FROM user_data
LEFT JOIN guilds ON user_data.guild_id = guilds.guild_id
WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->execute ();
$db_data = $qry->fetchAll ();
$db_data = $db_data [0];
// Jessis Guildcheat workaround
if($donation ['silver'] <= 0)
$donation ['silver'] = 0;
if($donation ['mushroom'] <= 0)
$donation ['mushroom'] = 0;
// end of GC Workaround
// if not enought gold
if ($db_data ['silver'] < $donation ['silver']) {
$ret = array (
$ERR_TOO_EXPENSIVE
);
break;
}
// if not enought silver
if ($db_data ['mushroom'] < $donation ['mushroom']) {
$ret = array (
$ERR_GUILD_LACK_MUSH
);
break;
}
// transfer gold && mushroom
$db_data ['silver'] = $db_data ['silver'] - $donation ['silver'];
$db_data ['mushroom'] = $db_data ['mushroom'] - $donation ['mushroom'];
$db_data ['gsilver'] = $db_data ['gsilver'] + $donation ['silver'];
$db_data ['gmushroom'] = $db_data ['gmushroom'] + $donation ['mushroom'];
// update database
$qry = $db->prepare ( "UPDATE user_data
SET silver = :silver,
mushroom = :shroom
WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->bindParam ( ':silver', $db_data ['silver'] );
$qry->bindParam ( ':shroom', $db_data ['mushroom'] );
$qry->execute ();
$qry = $db->prepare ( "UPDATE guilds SET
silver = :silver,
mushroom = :shroom
WHERE guild_id = :gid" );
$qry->bindParam ( ':gid', $db_data ['guild_id'] );
$qry->bindParam ( ':silver', $db_data ['gsilver'] );
$qry->bindParam ( ':shroom', $db_data ['gmushroom'] );
$qry->execute ();
// var_dump($qry -> errorInfo());
// response
loadDefaultData ();
$ret [0] = $RESP_GUILD_DONATE_SUCCESS . $ret [0];
break;