public static function updatePlayerPoints($playerIds, $createdDate) { // tour $db = new Util\Data(); $sql = 'SELECT player_id, SUM(tp.points) as points, COUNT(player_id) as total FROM bus_tournament_player tp JOIN bus_tournament t ON t.id = tp.tournament_id WHERE t.start_date > NOW() - INTERVAL ' . Engine::DAY * 336 . ' HOUR AND tp.points > 0 AND player_id IN (' . implode(',', $playerIds) . ') GROUP BY player_id ORDER BY points DESC'; $result = $db->select($sql); if (count($result) == 0) { return; } while ($row = $result->fetch(\PDO::FETCH_ASSOC)) { if ($row['total'] <= 18) { \Own\Bus\Player\Data::updateTourPointsByPlayerId($row['player_id'], $row['points']); continue; } $sql = 'SELECT SUM(points) as points FROM ( SELECT points FROM bus_tournament_player tp JOIN bus_tournament t ON t.id = tp.tournament_id WHERE player_id = ? AND t.start_date > NOW() - INTERVAL ? HOUR ORDER BY points DESC LIMIT 18 ) AS subquery'; $subRow = $db->selectOne($sql, [$row['player_id'], Engine::DAY * 336]); if (isset($subRow)) { \Own\Bus\Player\Data::updateTourPointsByPlayerId($row['player_id'], $subRow['points']); } } // race $startYearDate = \Own\Bus\Engine::getStartYearDate($createdDate); $sql = 'SELECT player_id, SUM(tp.points) as points, COUNT(player_id) as total FROM bus_tournament_player tp JOIN bus_tournament t ON t.id = tp.tournament_id WHERE t.start_date > \'' . $startYearDate . '\' AND tp.points > 0 AND player_id IN (' . implode(',', $playerIds) . ') GROUP BY player_id ORDER BY points DESC'; $result = $db->execute($sql); if (count($result) == 0) { return; } while ($row = $result->fetch(\PDO::FETCH_ASSOC)) { if ($row['total'] <= 18) { \Own\Bus\Player\Data::updateRacePointsByPlayerId($row['player_id'], $row['points']); continue; } $sql = 'SELECT SUM(points) as points FROM ( SELECT points FROM bus_tournament_player tp JOIN bus_tournament t ON t.id = tp.tournament_id WHERE player_id = ? AND t.start_date > ? ORDER BY points DESC LIMIT 18 ) AS subquery'; $subRow = $db->selectOne($sql, [$row['player_id'], $startYearDate]); if (isset($subRow)) { \Own\Bus\Player\Data::updateRacePointsByPlayerId($row['player_id'], $subRow['points']); } } }