public static function getFacebookGiftRequest($user, $requestIds)
 {
     if (!empty($user) && !empty($requestIds)) {
         $day = intval(GameConstantUtil::getConstant(FacebookRequestUtils::$CONSTANT_REQUEST_GIFT_TIME));
         if ($day <= 0) {
             $day = 7;
         }
         $coin = intval(GameConstantUtil::getConstant(FacebookRequestUtils::$CONSTANT_REQUEST_GIFT_COIN));
         if ($day <= 0) {
             $day = FacebookRequestUtils::$CONSTANT_REQUEST_GIFT_COIN_DEFAULT;
         }
         $SQL = "SELECT * FROM " . TBL_GAME_FB_REQUEST . " WHERE  `to`='" . DBUtils::mysql_escape($user->facebookId) . "' AND used=0 AND type='" . FacebookRequestUtils::$CONSTANT_REQUEST_TYPE_GIFT . "' AND requestId IN (" . $requestIds . ") ORDER BY `time` DESC";
         $fbRequests = GameFbRequest::findBySql(DBUtils::getConnection(), $SQL);
         $userArray = array();
         if (!empty($fbRequests) && sizeof($fbRequests) > 0) {
             for ($i = sizeof($fbRequests) - 1; $i >= 0; $i--) {
                 $req = $fbRequests[$i];
                 $req->coin = $coin;
                 if (!empty($req)) {
                     $usrArr = $userArray[$req->userId];
                     if (empty($usrArr)) {
                         $usrArr = array();
                         array_push($usrArr, $req);
                     } else {
                         $last = $usrArr[sizeof($usrArr) - 1];
                         if (intval(date("Ymd", $req->time)) - intval(date("Ymd", $last->time)) >= 7) {
                             array_push($usrArr, $req);
                         } else {
                             GameFbRequest::useRequest($req->getId(), 2);
                         }
                     }
                     $userArray[$req->userId] = $usrArr;
                 }
             }
         }
         unset($fbRequests);
         $result = array();
         foreach ($userArray as $userReq) {
             if (!empty($userReq) && sizeof($userReq) > 0) {
                 try {
                     $coin = 0;
                     $obj = new stdClass();
                     $tmp = GameUsers::findById(DBUtils::getConnection(), $userReq[0]->userId);
                     if (!empty($tmp)) {
                         $obj->user = new stdClass();
                         $obj->user->userId = $tmp->userId;
                         $obj->user->userName = $tmp->userName;
                         $obj->user->userFirstname = $tmp->userFirstname;
                         $obj->user->userLastname = $tmp->userLastname;
                         $obj->user->facebookId = $tmp->facebookId;
                         $obj->user->userXP = $tmp->userXP;
                         $obj->user->userLevelNumber = $tmp->userLevelNumber;
                         $obj->user->coins = $tmp->coins;
                         $ids = "";
                         foreach ($userReq as $req) {
                             if (!empty($req)) {
                                 GameFbRequest::useRequest($req->getId());
                                 $coin = $coin + intval($req->coin);
                                 if (!empty($ids)) {
                                     $ids = $ids . "," . $req->requestId;
                                 } else {
                                     $ids = $ids . "" . $req->requestId;
                                 }
                             }
                         }
                         $obj->coin = $coin;
                         $obj->ids = $ids;
                         $obj->type = FacebookRequestUtils::$CONSTANT_REQUEST_TYPE_GIFT;
                         array_push($result, $obj);
                     }
                 } catch (Exception $exc) {
                     error_log($exc->getTraceAsString());
                 }
             }
         }
         unset($userArray);
         foreach ($result as $value) {
             if (!empty($value)) {
                 $time = time();
                 $user->setCoins($user->getCoins() + $value->coin);
                 $user->updateToDatabase(DBUtils::getConnection());
                 $userCoinLog = new GameUserCoinLog();
                 $userCoinLog->setUserId($user->userId);
                 $userCoinLog->setCoin($user->getCoins());
                 $userCoinLog->setDifCoin($value->coin);
                 $userCoinLog->setTime($time);
                 $userCoinLog->setType(FacebookRequestUtils::$CONSTANT_REQUEST_TYPE_GIFT);
                 $userCoinLog->setAdd(1);
                 $userCoinLog->setResult(FacebookRequestUtils::$CONSTANT_REQUEST_TYPE_GIFT . "->" . $value->user->userId . "->" . $value->ids);
                 $userCoinLog->setOpponentId($value->user->userId);
                 $userCoinLog->setUserLevel($user->userLevelNumber);
                 //$userCoinLog->setUserSpentCoin($user->opponentId);
                 try {
                     $userCoinLog->insertIntoDatabase(DBUtils::getConnection());
                 } catch (Exception $exc) {
                     error_log($exc->getTraceAsString());
                 }
                 Queue::addUserLeaderBoard($user->userId, $value->coin, $time);
             }
         }
     }
     return base64_encode(json_encode($requestIds));
 }
 /**
  * get single GameUserCoinLog instance from a DOMElement
  *
  * @param DOMElement $node
  * @return GameUserCoinLog
  */
 public static function fromDOMElement(DOMElement $node)
 {
     $o = new GameUserCoinLog();
     $o->assignByHash(self::domNodeToHash($node, self::$FIELD_NAMES, self::$DEFAULT_VALUES, self::$FIELD_TYPES));
     $o->notifyPristine();
     return $o;
 }
Exemplo n.º 3
0
 public static function getDailyBonusPrice($user)
 {
     if (!empty($user) && !empty($user->userId)) {
         $start = strtotime(date("Y-m-d") . " 00:00:00");
         $end = strtotime(date("Y-m-d") . " 00:00:00 +1 day");
         $SQL = "SELECT * FROM " . TBL_GAME_USER_COIN_LOG . " WHERE userId=" . DBUtils::mysql_escape($user->userId, 1) . " AND type='" . GameUserXpLog::$CONSTANT_LOG_TYPE_DAILYBONUS . "' AND time<" . $end . " AND time>" . $start;
         $coinLog = null;
         try {
             $coinLog = GameUserCoinLog::findBySql(DBUtils::getConnection(), $SQL);
         } catch (Exception $exc) {
             error_log($exc->getTraceAsString());
         }
         if (empty($coinLog) || sizeof($coinLog) < 1) {
             $gain = 0;
             $order = 0;
             $bonuses = BonusUtils::getUserDailyBonus($user->userId);
             if (!empty($bonuses) && sizeof($bonuses) > 0) {
                 for ($i = 0; $i < sizeof($bonuses); $i++) {
                     $bonus = $bonuses[$i];
                     if (!empty($bonus) && !empty($bonus->coin)) {
                         if ($gain < $bonus->coin && !empty($bonus->active)) {
                             $gain = $bonus->coin;
                             $order = $bonus->order;
                         }
                     }
                 }
             }
             if ($gain > 0) {
                 $time = time();
                 $user->setCoins($user->getCoins() + $gain);
                 $user->updateToDatabase(DBUtils::getConnection());
                 $userCoinLog = new GameUserCoinLog();
                 $userCoinLog->setUserId($user->userId);
                 $userCoinLog->setCoin($user->getCoins());
                 $userCoinLog->setDifCoin($gain);
                 $userCoinLog->setTime($time);
                 $userCoinLog->setType(GameUserXpLog::$CONSTANT_LOG_TYPE_DAILYBONUS);
                 $userCoinLog->setAdd(1);
                 $userCoinLog->setResult(GameUserXpLog::$CONSTANT_LOG_TYPE_DAILYBONUS . "->" . $order);
                 $userCoinLog->setUserLevel($user->userLevelNumber);
                 //$userCoinLog->setUserSpentCoin($user->opponentId);
                 try {
                     $userCoinLog->insertIntoDatabase(DBUtils::getConnection());
                 } catch (Exception $exc) {
                     error_log($exc->getTraceAsString());
                 }
                 Queue::addUserLeaderBoard($user->userId, $gain, $time);
                 return true;
             }
         }
     }
     return false;
 }
 public function log()
 {
     $log = KLogger::instance(KLOGGER_PATH . "processors/", KLogger::DEBUG);
     $log->logInfo("usercoinlog > log > start userId : " . $this->userId . " coin : " . $this->coin . " type : " . $this->type . " add : " . $this->add . " time : " . $this->time . " gameId : " . $this->gameId . " result : " . $this->result . " opponentId : " . $this->opponentId);
     if (!empty($this->userId)) {
         $userCoinLog = new GameUserCoinLog();
         $userCoinLog->setUserId($this->userId);
         $userCoinLog->setCoin($this->coin);
         $userCoinLog->setDifCoin($this->difCoin);
         $userCoinLog->setTime($this->time);
         $userCoinLog->setType($this->type);
         $userCoinLog->setAdd($this->add);
         $userCoinLog->setGameId($this->gameId);
         $userCoinLog->setResult($this->result);
         $userCoinLog->setOpponentId($this->opponentId);
         try {
             $user = GameUsers::getGameUserById($this->userId);
             if (!empty($user)) {
                 $userCoinLog->setUserLevel($user->userLevelNumber);
                 //$userCoinLog->setUserSpentCoin($user->opponentId);
             }
         } catch (Exception $exc) {
             $log->logError("usercoinlog > log > User Error : " . $exc->getTraceAsString());
         }
         try {
             $userCoinLog->insertIntoDatabase(DBUtils::getConnection());
             $log->logInfo("usercoinlog > log > Success");
         } catch (Exception $exc) {
             $log->logError("usercoinlog > log > Error : " . $exc->getTraceAsString());
         }
     } else {
         $log->logError("usercoinlog > log > user Id is empty ");
     }
 }