public static function getUserDailyBonus($userId) { $result = array(); if (!empty($userId)) { try { $SQL = "SELECT * FROM " . TBL_GAME_USER_LOGIN_LOG . " WHERE userId=" . DBUtils::mysql_escape($userId, 1) . " GROUP BY date ORDER BY date DESC LIMIT 0,7"; $dailies = GameUserLoginLog::findBySql(DBUtils::getConnection(), $SQL); $dailyBonusConstants = BonusUtils::getDailyBonusConstants(); $good = 1; if (!empty($dailies) && sizeof($dailies) > 1) { for ($i = 1; $i < sizeof($dailies); $i++) { $current = $dailies[$i]; $prev = $dailies[$i - 1]; if (!empty($current) && !empty($prev)) { $diffs = UtilFunctions::dateDiff(intval($prev->time), intval($current->time)); if ($diffs['year'] > 0 || $diffs['month'] > 0 || $diffs['month'] > 0 || $diffs['day'] > 1) { break; } else { $currentD = date("d", $current->time); $prevD = date("d", $prev->time); if ($diffs['day'] == 1 && $diffs["hour"] <= 0 && $diffs["minute"] <= 0 && $diffs["second"] <= 0) { $good++; } else { if ($currentD != $prevD) { $good++; } else { break; } } } } else { break; } } } for ($i = 0; $i < 7; $i++) { $dailybonus = new stdClass(); if (!empty($dailyBonusConstants) && sizeof($dailyBonusConstants) > $i) { $tmp = $dailyBonusConstants[$i]; if (!empty($tmp)) { $dailybonus = $tmp; } } else { $dailybonus->order = $i + 1; $dailybonus->coin = ($i + 1) * 100; } if ($i < $good) { $dailybonus->active = true; } else { $dailybonus->active = false; } array_push($result, $dailybonus); } } catch (Exception $exc) { error_log($exc->getTraceAsString()); } } return $result; }