public static function useItem($user, $item, $quantity, $toUserId = null, $gameId = null, $time = null) { if (empty($time)) { $time = time(); } $result = new FunctionResult(); $result->success = false; if (!empty($user)) { if (!empty($item)) { $userItemLog = new GameUserItemLog(); $userItemLog->setItemId($item->id); $userItemLog->setGameId($gameId); $userItemLog->setTime($time); $userItemLog->setUserId($user->userId); $userItemLog->setCoin($item->coin); $userItemLog->setTo($toUserId); $userItemLog->setQuantity($quantity); $userItemLog->setType(GameUserItemLog::$CONSTANT_ITEM_LOG_TYPE_USED); $userItemLog->setUserLevel($user->userLevelNumber); $userItemLog->setUserCoin($user->coins); //$userItemLog->setUserSpentCoin(GameUserItemLog::$CONSTANT_ITEM_LOG_TYPE_BUY); try { $userItemLog->insertIntoDatabase(DBUtils::getConnection()); } catch (Exception $exc) { error_log($exc->getMessage()); error_log($exc->getTraceAsString()); } $userItem = ItemUtils::getUserItem($toUserId, $item->itemCode); if (empty($userItem)) { $userItem = new GameUserItems(); $userItem->setId(-1); $userItem->setUserId($toUserId); $userItem->setItemCode($item->itemCode); $userItem->setActive(1); $userItem->setQuantity(0); } $userItem->setTime($time); if ($quantity < $userItem->quantity) { $userItem->setQuantity($userItem->quantity - $quantity); } else { $userItem->setQuantity(0); } try { $userItem->updateInsertToDatabase(DBUtils::getConnection()); } catch (Exception $exc) { error_log($exc->getMessage()); error_log($exc->getTraceAsString()); } $result->success = true; $result->data = new stdClass(); $user->items = ItemUtils::getUserItems($user->userId); $result->data->user = $user; $result->data->item = $item; return $result; } else { $result->result = LanguageUtils::getText("LANG_API_TO_ITEM_EMPTY"); return $result; } } else { $result->result = LanguageUtils::getText("LANG_API_USER_EMPTY"); return $result; } }