/** * Buy gold to a character * @param unknown_type $gold Gold object * @param unknown_type $realmid Realmid * @param unknown_type $char Character object */ public function buyGold($gold, $realmid, $char) { // Start transaction $this->_db->transactionStart(); try { // Update user points $user = JFactory::getUser(); $userid = $user->id; if (!JTrinityCoreUtilities::substractUserPoints($userid, $gold->cost, $this->_db)) { $this->_db->transactionRollback(); return false; } $description = "Gold " . $gold->quantity; $donationtype = DONATIONTYPE_GOLD; // Update order table if (!JTrinityCoreUtilities::insertOrderTable($userid, $gold->id, $description, $gold->cost, $donationtype, $char->guid, $realmid, $this->_db)) { $this->_db->transactionRollback(); return false; } // Update Gold to character // Add gold to character // Get character DB $chardbname = JTrinityCoreUtilities::getCharacterDBName($realmid); $dbtc = JTrinityCoreDBHelper::getDB(); $addmoney = $gold->quantity * 10000; $sql = "UPDATE " . $chardbname . ".characters SET money=money+" . $addmoney . " WHERE guid=" . $char->guid; $dbtc->setQuery($sql); if (!$dbtc->query()) { $this->_db->transactionRollback(); return false; } $this->_db->transactionCommit(); return true; } catch (Exception $e) { JLog::add("Error buygold(): " . $e->getMessage(), JLog::ERROR); $this->_db->transactionRollback(); return false; } }
/** * Send the item purchased to the mailbox character * @param unknown_type $item item object from joomla database * @param unknown_type $realmid the realm of the character * @param unknown_type $character character object */ public function sendItem($item, $realmid, $character) { // Get character DB $chardbname = JTrinityCoreUtilities::getCharacterDBName($realmid); $dbo = JTrinityCoreDBHelper::getDB(); $characterid = $character->guid; $itemid = $item->itemid; //JLog::add("characterid=".$characterid." productid=".$productid." realmid=".$realmid." item name=".$item->name); // Get the mail id to insert // Start transaction $dbo->transactionStart(); try { $ok = true; $sql = "SELECT MAX(id) FROM " . $chardbname . ".mail"; $dbo->setQuery($sql); $id = $dbo->loadResult(); if (!$id) { $id = 0; } $id = $id + 1; $mail = new stdClass(); $mail->id = $id; $mail->messageType = 5; $mail->stationery = 41; $mail->sender = 0; // Should be the admin GM $mail->receiver = $characterid; $mail->has_items = 1; $mail->subject = JText::_('COM_JTRINITYCORE_MAIL_ITEM_SUBJECT'); $mail->body = JText::sprintf('COM_JTRINITYCORE_MAIL_ITEM_BODY', $character->name, $item->name); // Insert into mail table if ($dbo->insertObject($chardbname . '.mail', $mail, 'id')) { // Insert into item instance table $sql = "SELECT MAX(guid) FROM " . $chardbname . ".item_instance"; $dbo->setQuery($sql); $iteminstanceid = $dbo->loadResult(); if (!$iteminstanceid) { $iteminstanceid = 0; } $iteminstanceid = $iteminstanceid + 1; $item_instance = new stdClass(); $item_instance->guid = $iteminstanceid; $item_instance->itemEntry = $item->itemid; $item_instance->owner_guid = $characterid; $item_instance->durability = $this->getMaxDurability($item->itemid, $relmid); // $item->maxdurability; if ($dbo->insertObject($chardbname . '.item_instance', $item_instance, 'guid')) { // Insert into mail_items table $mail_item = new stdClass(); $mail_item->mail_id = $id; $mail_item->item_guid = $iteminstanceid; $mail_item->receiver = $characterid; if (!$dbo->insertObject($chardbname . '.mail_items', $mail_item)) { $ok = false; JLog::add("sendItem(): Error inserting item_instance. ", JLog::ERROR, 'donationshop'); } } else { $ok = false; } } else { $ok = false; JLog::add("sendItem(): Error inserting table mail. ", JLog::ERROR, 'donationshop'); } if (!$ok) { $dbo->transactionRollback(); return false; } $dbo->transactionCommit(); $user = JFactory::getUser(); $cost = $item->cost; // Update the new points to the user if (!JTrinityCoreUtilities::substractUserPoints($user->id, $cost)) { return false; } // Insert into the order table $description = $item->name . " (Level=" . $item->itemlevel . ")"; $donationtype = DONATIONTYPE_ITEM; $userid = $user->id; if (!JTrinityCoreUtilities::insertOrderTable($userid, $item->id, $description, $cost, $donationtype, $characterid, $realmid)) { return false; } return true; } catch (Exception $e) { JLog::add("Error: " . $e->getMessage(), JLog::ERROR, "donationhop->sendItem"); $dbo->transactionRollback(); return false; } }