function forwardPlayers($enc, $roundId, $encId) { global $db; if ($roundId + 1 >= $this->numberOfRounds) { // Check if everygame is finished $openenc = $db->num_rows('tournamentencounters', "`tournamentid`=" . $this->tournamentId . " AND `roundid`=" . ($this->numberOfRounds - 1) . " AND `state`=0"); if (isset($openenc) && $openenc == 0) { // Close the tournament global $notify; global $lang; $notify->add($lang->get('tournament'), $lang->get('ntfy_end_game')); return $db->update('tournamentlist', "`state`=3", "`tournamentid`=" . $this->tournamentId); } return false; } $encounters = $db->selectList('tournamentencounters', '*', "`tournamentid`=" . $this->tournamentId . " AND `roundid`=" . ($roundId + 1), "`encounterid` ASC"); $encountercount = $db->num_rows('tournamentencounters', "`tournamentid`=" . $this->tournamentId . " AND `roundid`=" . $roundId); // First Winner - make next round encounters if (count($encounters) == null) { for ($i = 0; $i < $encountercount; $i++) { $curEnc = new EliminationEncounter($this->tournamentId, $roundId + 1, $i, true); $curEnc->setPlayers(0, 0); } $this->setEncTimes($curEnc->getRoundId()); } $winnerid = $enc->winner() == 1 ? $enc->getPlayer1id() : $enc->getPlayer2id(); $looserid = $enc->winner() == 1 ? $enc->getPlayer2id() : $enc->getPlayer1id(); // Top Game - winner stays(top left) looser goes one lower left if ($encId == 0) { $winEnc = new EliminationEncounter($this->tournamentId, $roundId + 1, 0); $winEnc->setPlayer1id($winnerid); $losEnc = new EliminationEncounter($this->tournamentId, $roundId + 1, 1); $losEnc->setPlayer1id($looserid); } else { if ($encId == $encountercount - 1) { $losEnc = new EliminationEncounter($this->tournamentId, $roundId + 1, $encountercount - 1); $losEnc->setPlayer2id($looserid); $winEnc = new EliminationEncounter($this->tournamentId, $roundId + 1, $encountercount - 2); $winEnc->setPlayer2id($winnerid); } else { $winEnc = new EliminationEncounter($this->tournamentId, $roundId + 1, $enc->getId() - 1); $winEnc->setPlayer2id($winnerid); $losEnc = new EliminationEncounter($this->tournamentId, $roundId + 1, $enc->getId() + 1); $losEnc->setPlayer1id($looserid); } } // Check if the bottom game has a bye $bottomgame = new EliminationEncounter($this->tournamentId, $roundId + 1, $encountercount - 1); if (@$bottomgame->getPlayer2id() == -1 && $bottomgame->getPlayer1id() > 0) { $bottomgame->setPoints(0, 0); $this->forwardPlayers($bottomgame, $roundId + 1, $bottomgame->getId()); } }
function getAllNextEncounters() { global $db; global $lang; $tournaments = $db->selectList("tournamentlist", "*", "`state`=2"); $allNextEncs = array(); foreach ($tournaments as $tourney) { switch ($tourney['mode']) { // Single Elimination case 1: // Double Elimination // Double Elimination case 2: // KotH // KotH case 6: $allEnc = $db->selectList("tournamentencounters", "*", "`tournamentid`=" . $tourney['tournamentid'] . " AND `state`=0 AND (`player1id`>0 OR `player2id`>0)"); require_once "mod/default/tournament/tournament.eliminationencounter.class.php"; foreach ($allEnc as $enc) { $curEnc = new EliminationEncounter($enc['tournamentid'], $enc['roundid'], $enc['encounterid']); $allNextEncs[] = array('time' => $curEnc->getEncTimeState(), 'round' => makeRoundNr($curEnc->getRoundId(), $tourney['mode']), 'encounterid' => $curEnc->getId(), 'player1id' => makePlayerUrl($curEnc->getPlayer1Id(), $tourney['playerperteam'] == 1), 'player2id' => makePlayerUrl($curEnc->getPlayer2Id(), $tourney['playerperteam'] == 1), 'title' => $tourney['title']); } break; // Groups // Groups case 3: $allEnc = $db->selectList("tournamentgroupenc", "*", "`tournamentid`=" . $tourney['tournamentid'] . " GROUP BY `round`, `group` HAVING MIN(rank)=0"); foreach ($allEnc as $enc) { $participants = $db->selectList("tournamentgroupenc", "*", "`tournamentid`=" . $enc['tournamentid'] . " AND `round`=" . $enc['round'] . " AND `group`=" . $enc['group']); $allParticipants = array(); foreach ($participants as $participant) { $allParticipants[] = makePlayerUrl($participant['participantid']); } $encounterUrl = makeHTMLUrl($lang->get('group') . " " . chr(65 + $enc['group']), makeURL('tournament', array('mode' => 'table', 'tournamentid' => $enc['tournamentid'], 'action' => 'submit', 'group' => $enc['group'], 'round' => $enc['round']))); $allNextEncs[] = array('time' => '', 'round' => makeRoundNr($enc['round'] - 1, $tourney['mode']), 'encounterid' => $enc['group'], 'player1id' => $encounterUrl, 'player2id' => '', 'title' => $tourney['title'], 'participants' => $allParticipants); } break; // Points // Points case 4: break; // Randomize // Randomize case 5: break; } } usort($allNextEncs, "sortNextEncounters"); return $allNextEncs; }