public static function updateXP(GameUsers $user, GameUsers $opponent, $roomGroupId, $action, $gameId = null, $double = 0, $normal = true, $type = null, $time = null)
 {
     $result = new FunctionResult();
     $result->success = false;
     if (!empty($user) && !empty($action)) {
         $gain = 0;
         $xp = $user->getUserXP();
         if ($action == GameUtils::$GAME_RESULT_ACTION_WIN) {
             $gain = (int) GameConstantUtil::getConstant(GameUtils::$CONSTANT_WIN_XP_GAIN);
             if (!$normal) {
                 $gain = $gain * 2;
             }
         } else {
             if ($action == GameUtils::$GAME_RESULT_ACTION_LOST) {
                 if ($type == GameUtils::$GAME_RESULT_ACTION_TYPE_QUIT) {
                     $gain = (int) GameConstantUtil::getConstant(GameUtils::$CONSTANT_QUIT_XP_GAIN);
                 } else {
                     if ($type == GameUtils::$GAME_RESULT_ACTION_TYPE_LEFT || $type == GameUtils::$GAME_RESULT_ACTION_TYPE_TIMESUP) {
                         $gain = (int) GameConstantUtil::getConstant(GameUtils::$CONSTANT_CONN_LOST_XP_GAIN);
                     } else {
                         $gain = (int) GameConstantUtil::getConstant(GameUtils::$CONSTANT_LOSE_XP_GAIN);
                     }
                 }
             } else {
                 $xp = -1;
             }
         }
         if ($xp >= 0) {
             $gameResult = $action . "_" . $normal . "_" . $double . "_" . $type;
             $oppId = null;
             if (!empty($opponent)) {
                 $oppId = $opponent->getUserId();
             }
             if (empty($time)) {
                 $time = time();
             }
             Queue::addUserXPLog($user->userId, $gain, $time, GameUserXpLog::$CONSTANT_LOG_TYPE_GAME, $gameId, $gameResult, $oppId);
             $xp = $xp + $gain;
             $user->setUserXP($xp);
             $userLevel = GameUserLevel::getUserLevel($xp);
             $user->userLevel = $userLevel;
             if (!empty($userLevel) && !empty($userLevel->levelNumber)) {
                 $user->setUserLevelNumber($userLevel->levelNumber);
             }
             $result->success = true;
         } else {
             $result->success = false;
             $result->result = "Action unknown";
         }
     }
     return $result;
 }
 public static function createFromSQL($db_field)
 {
     if (!empty($db_field)) {
         $user = new GameUsers();
         if (isset($db_field["userId"])) {
             $user->setUserId($db_field["userId"]);
         }
         if (isset($db_field["userName"])) {
             $user->setUserName($db_field["userName"]);
         }
         if (isset($db_field["userMail"])) {
             $user->setUserMail($db_field["userMail"]);
         }
         if (isset($db_field["userFirstname"])) {
             $user->setUserFirstname($db_field["userFirstname"]);
         }
         if (isset($db_field["userLastname"])) {
             $user->setUserLastname($db_field["userLastname"]);
         }
         if (isset($db_field["registerDate"])) {
             $user->setRegisterDate($db_field["registerDate"]);
         }
         if (isset($db_field["lastLoginDate"])) {
             $user->setLastLoginDate($db_field["lastLoginDate"]);
         }
         if (isset($db_field["loginCount"])) {
             $user->setLoginCount($db_field["loginCount"]);
         }
         if (isset($db_field["birtday"])) {
             $user->setBirtday($db_field["birtday"]);
         }
         if (isset($db_field["birthday_date"])) {
             $user->setBirthdayDate($db_field["birthday_date"]);
         }
         if (isset($db_field["facebookId"])) {
             $user->setFacebookId($db_field["facebookId"]);
         }
         if (isset($db_field["oauthToken"])) {
             $user->setOauthToken($db_field["oauthToken"]);
         }
         if (isset($db_field["gender"])) {
             $user->setGender($db_field["gender"]);
         }
         if (isset($db_field["password"])) {
             $user->setPassword($db_field["password"]);
         }
         if (isset($db_field["userXP"])) {
             $user->setUserXP($db_field["userXP"]);
         }
         if (isset($db_field["winGameCount"])) {
             $user->setWinGameCount($db_field["winGameCount"]);
         }
         if (isset($db_field["lostGameCount"])) {
             $user->setLostGameCount($db_field["lostGameCount"]);
         }
         if (isset($db_field["coins"])) {
             $user->setCoins($db_field["coins"]);
         }
         if (isset($db_field["winCountQuitGame"])) {
             $user->setWinCountQuitGame($db_field["winCountQuitGame"]);
         }
         if (isset($db_field["winCountConnectionLostGame"])) {
             $user->setWinCountConnectionLostGame($db_field["winCountConnectionLostGame"]);
         }
         if (isset($db_field["winCountDoubleGame"])) {
             $user->setWinCountDoubleGame($db_field["winCountDoubleGame"]);
         }
         if (isset($db_field["lostCountQuitGame"])) {
             $user->setLostCountQuitGame($db_field["lostCountQuitGame"]);
         }
         if (isset($db_field["lostCountConnectionLostGame"])) {
             $user->setLostCountConnectionLostGame($db_field["lostCountConnectionLostGame"]);
         }
         if (isset($db_field["lostCountDoubleGame"])) {
             $user->setLostCountDoubleGame($db_field["lostCountDoubleGame"]);
         }
         if (isset($db_field["language"])) {
             $user->setLanguage($db_field["language"]);
         }
         if (isset($db_field["socialBonusLike"])) {
             $user->setSocialBonusLike($db_field["socialBonusLike"]);
         }
         if (isset($db_field["userLevelNumber"])) {
             $user->setUserLevelNumber($db_field["userLevelNumber"]);
         }
         if (isset($db_field["active"])) {
             $user->setActive($db_field["active"]);
         }
         if (isset($db_field["profilePicture"])) {
             $user->setProfilePicture($db_field["profilePicture"]);
         }
         return $user;
     }
     return null;
 }