Ejemplo n.º 1
0
 /**
  * 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;
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
     }
 }