Exemplo n.º 1
0
 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());
     }
 }
Exemplo n.º 2
0
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;
}