function tournamentTable()
 {
     global $smarty;
     global $template_dir;
     global $config;
     $size = pow(2, $this->roundCount() - 1);
     for ($i = 0; $i < $size; $i++) {
         for ($j = 0; $j < $this->roundCount(); $j++) {
             if ($i % pow(2, $j) == 0) {
                 $encId = $i / pow(2, $j);
                 $curEnc = new EliminationEncounter($this->tournamentId, $j, $encId);
                 if ($curEnc->getPlayer1id() == -1) {
                     $player1 = newDummy();
                 }
                 if ($curEnc->getPlayer2id() == -1) {
                     $player2 = newDummy();
                 }
                 if ($curEnc->getPlayer1id() == 0) {
                     $player1 = newUnknown();
                 }
                 if ($curEnc->getPlayer2id() == 0) {
                     $player2 = newUnknown();
                 }
                 foreach ($this->participants as $participant) {
                     if ($participant->getId() == $curEnc->getPlayer1id()) {
                         $player1 = $participant;
                     }
                     if ($participant->getId() == $curEnc->getPlayer2id()) {
                         $player2 = $participant;
                     }
                 }
                 $field[$i][$j]['round'] = $j;
                 $field[$i][$j]['encNr'] = $i + 1;
                 $field[$i][$j]['rowspan'] = pow(2, $j);
                 if ($curEnc->getPlayer1id() > 0 && $curEnc->getPlayer2id() > 0) {
                     $field[$i][$j]['link'] = makeUrl('tournament', array('tournamentid' => $this->tournamentId, 'encid' => $encId, 'roundid' => $j, 'mode' => 'view'));
                 }
                 $field[$i][$j]['p1name'] = $player1->getName();
                 $field[$i][$j]['p1url'] = $player1->getUrl();
                 $field[$i][$j]['p2name'] = $player2->getName();
                 $field[$i][$j]['p2url'] = $player2->getUrl();
                 $field[$i][$j]['timestatus'] = $curEnc->getEncTimeState();
                 if ($curEnc->isFinished()) {
                     $field[$i][$j]['p1points'] = $curEnc->getPoints1();
                     $field[$i][$j]['p2points'] = $curEnc->getPoints2();
                     $field[$i][$j]['winner'] = $curEnc->winner();
                 }
             }
         }
     }
     if ($this->thirdplayoff) {
         $thirdplayoff = array();
         $curEnc = new EliminationEncounter($this->tournamentId, $this->roundCount() - 1, 1);
         if ($curEnc->getPlayer1id() == -1) {
             $player1 = newDummy();
         }
         if ($curEnc->getPlayer2id() == -1) {
             $player2 = newDummy();
         }
         if ($curEnc->getPlayer1id() == 0) {
             $player1 = newUnknown();
         }
         if ($curEnc->getPlayer2id() == 0) {
             $player2 = newUnknown();
         }
         foreach ($this->participants as $participant) {
             if ($participant->getId() == $curEnc->getPlayer1id()) {
                 $player1 = $participant;
             }
             if ($participant->getId() == $curEnc->getPlayer2id()) {
                 $player2 = $participant;
             }
         }
         $thirdplayoff['round'] = $this->roundCount() - 1;
         $thirdplayoff['encNr'] = $curEnc->getId() + 1;
         if ($curEnc->getPlayer1id() > 0 && $curEnc->getPlayer2id() > 0) {
             $thirdplayoff['link'] = makeUrl('tournament', array('tournamentid' => $this->tournamentId, 'encid' => $curEnc->getId(), 'roundid' => $this->roundCount() - 1, 'mode' => 'view'));
         }
         $thirdplayoff['p1name'] = $player1->getName();
         $thirdplayoff['p1url'] = $player1->getUrl();
         $thirdplayoff['p2name'] = $player2->getName();
         $thirdplayoff['p2url'] = $player2->getUrl();
         $thirdplayoff['timestatus'] = $curEnc->getEncTimeState();
         $thirdplayoff['tdnbsp'] = ($this->roundCount() - 1) * 2;
         if ($curEnc->isFinished()) {
             $thirdplayoff['p1points'] = $curEnc->getPoints1();
             $thirdplayoff['p2points'] = $curEnc->getPoints2();
             $thirdplayoff['winner'] = $curEnc->winner();
         }
         $smarty->assign('thirdplayoff', $thirdplayoff);
     }
     $smarty->assign('roundsandmaps', $this->getRoundsAndMaps($this->roundCount()));
     $smarty->assign('path', $template_dir . '/singleelimination.tpl');
     $smarty->assign('field', $field);
     $smarty->assign('encounterWidth', $config->get('tournament', 'tree-encounter-width'));
     $smarty->assign('encTempl', $template_dir . '/eliminationencounter.tpl');
 }
 function tournamentTable()
 {
     global $smarty;
     global $template_dir;
     global $db;
     global $config;
     $encList = $db->selectList('tournamentencounters', '*', "`tournamentid`=" . $this->tournamentId, "`roundid` ASC, `encounterid` ASC");
     foreach ($encList as $encounter) {
         $y = $encounter['roundid'];
         $x = $encounter['encounterid'];
         $curEnc = new EliminationEncounter($this->tournamentId, $y, $x);
         $finalList[$x][$y]['round'] = $x;
         $finalList[$x][$y]['encid'] = $y;
         foreach ($this->participants as $participant) {
             if ($participant->getId() == $curEnc->getPlayer1id()) {
                 $player1 = $participant;
             }
             if ($participant->getId() == $curEnc->getPlayer2id()) {
                 $player2 = $participant;
             }
         }
         // Only player 2 (in the last enc) could be a dummy
         if ($curEnc->getPlayer2id() == -1) {
             $player2 = newDummy();
         }
         if ($curEnc->getPlayer1id() == 0) {
             $player1 = newUnknown();
         }
         if ($curEnc->getPlayer2id() == 0) {
             $player2 = newUnknown();
         }
         if ($curEnc->getPlayer1id() > 0 && $curEnc->getPlayer2id() > 0) {
             $finalList[$x][$y]['link'] = makeUrl('tournament', array('tournamentid' => $this->tournamentId, 'encid' => $x, 'roundid' => $y, 'mode' => 'view'));
         }
         $finalList[$x][$y]['p1name'] = $player1->getName();
         $finalList[$x][$y]['p1url'] = $player1->getUrl();
         $finalList[$x][$y]['p2name'] = $player2->getName();
         $finalList[$x][$y]['p2url'] = $player2->getUrl();
         $finalList[$x][$y]['timestatus'] = $curEnc->getEncTimeState();
         if ($curEnc->isFinished()) {
             $finalList[$x][$y]['p1points'] = $curEnc->getPoints1();
             $finalList[$x][$y]['p2points'] = $curEnc->getPoints2();
             $finalList[$x][$y]['winner'] = $curEnc->winner();
         }
     }
     $smarty->assign('roundsandmaps', $this->getRoundsAndMaps($y + 1));
     $smarty->assign('table', $finalList);
     $smarty->assign('encounterWidth', $config->get('tournament', 'tree-encounter-width'));
     $smarty->assign('encTempl', $template_dir . '/kothencounter.tpl');
     $smarty->assign('path', $template_dir . '/koth.tpl');
 }
 private function addEncounter(&$field, $i, $j, $enc, $noLinkToArrow = false)
 {
     if ($enc->getPlayer1id() == -1) {
         $player1 = newDummy();
     }
     if ($enc->getPlayer2id() == -1) {
         $player2 = newDummy();
     }
     if ($enc->getPlayer1id() == 0) {
         $player1 = newUnknown();
     }
     if ($enc->getPlayer2id() == 0) {
         $player2 = newUnknown();
     }
     foreach ($this->participants as $participant) {
         if ($participant->getId() == $enc->getPlayer1id()) {
             $player1 = $participant;
         }
         if ($participant->getId() == $enc->getPlayer2id()) {
             $player2 = $participant;
         }
     }
     $field[$i][$j]['round'] = $j + 1;
     $field[$i][$j]['encNr'] = $enc->getId() + 1;
     if ($i < $this->numberOfEncounters(1, DOUBLEELIMINATION_UPPER)) {
         if ($j >= $this->lastRound() - 2) {
             $field[$i][$j]['rowspan'] = $this->numberOfEncounters(1, DOUBLEELIMINATION_UPPER) * 2;
         } else {
             $field[$i][$j]['rowspan'] = pow(2, floor(($j + 1) / 2));
         }
         if ($j == 0 || $j >= $this->lastRound() - 2) {
             $field[$i][$j]['colspan'] = 1;
         } else {
             $field[$i][$j]['colspan'] = 3;
         }
     } else {
         $field[$i][$j]['colspan'] = 1;
         $field[$i][$j]['rowspan'] = pow(2, floor(($j + 1) / 2));
         if ($j % 2 == 1) {
             $field[$i][$j]['haslink'] = 2;
             $field[$i][$j]['linktext'] = 'L' . ($j + 1) . '.' . floor(($i - $this->numberOfEncounters(1, DOUBLEELIMINATION_UPPER)) / ($j + 1) + 1);
         } else {
             $field[$i][$j]['fromlink'] = TRUE;
         }
     }
     $field[$i][$j]['timestatus'] = $enc->getEncTimeState();
     if ($player1->getId() > 0 && $player2->getId() > 0) {
         $field[$i][$j]['link'] = makeUrl('tournament', array('tournamentid' => $this->tournamentId, 'encid' => $enc->getId(), 'roundid' => $j + 1, 'mode' => 'view'));
     } else {
         $field[$i][$j]['link'] = null;
     }
     $field[$i][$j]['p1name'] = $player1->getName();
     $field[$i][$j]['p1url'] = $player1->getUrl();
     $field[$i][$j]['p2name'] = $player2->getName();
     $field[$i][$j]['p2url'] = $player2->getUrl();
     $field[$i][$j]['nolink'] = $noLinkToArrow;
     if ($enc->isFinished()) {
         $field[$i][$j]['p1points'] = $enc->getPoints1();
         $field[$i][$j]['p2points'] = $enc->getPoints2();
         $field[$i][$j]['winner'] = $enc->winner();
     }
 }