public function actionBracket()
 {
     $date = new DateTime();
     $today = $date->format('Y-m-d');
     $tournament = Tournament::model()->findAll(array('conditions' => 'started > :started and date = :date', 'params' => array(':started' => 0, ':date' => $today)));
     $this->render('bracket', array('tournament' => $tournament));
 }
Exemplo n.º 2
0
 public function actionQuit()
 {
     $id = Yii::app()->request->getParam('id');
     if (!$this->_userinfo()) {
         $this->json_return(false, 'need_login', '/?refer=' . urlencode($this->createUrl('tournament/detail', array('id' => $id))));
     }
     $tournament = Tournament::model()->findByPk($id);
     if (!$tournament || $tournament->status != 'signing') {
         $this->json_return(false, '只有尚未开始的比赛才能取消报名。');
     }
     $joined = Tournament_join::model()->find("tid={$id} and uid=" . $this->_userinfo()->id);
     if (!$joined) {
         $this->json_return(false, '您还没有报过名。');
     }
     $quit_sn = $joined->t_sn;
     $joined->delete();
     Tournament_join::model()->getDbConnection()->createCommand('update tournament_join set t_sn=t_sn-1 where t_sn>' . $quit_sn . ' and tid=' . $id)->execute();
     TournamentTool::setUpTournament($tournament);
     $this->json_return(true);
 }
Exemplo n.º 3
0
 /**
  * Returns the data model based on the primary key given in the GET variable.
  * If the data model is not found, an HTTP exception will be raised.
  * @param integer the ID of the model to be loaded
  */
 public function loadModel($id)
 {
     $model = Tournament::model()->findByPk($id);
     if ($model === null) {
         throw new CHttpException(404, 'The requested page does not exist.');
     }
     return $model;
 }
Exemplo n.º 4
0
 /**
  * 比赛结束,计算总分和名次,处理比赛状态。
  */
 public static function end_tournament($id)
 {
     $tournament = Tournament::model()->findByPk($id);
     if (!$tournament) {
         return false;
     }
     $total_game = $tournament->player_joined * ($tournament->player_joined - 1);
     if ($tournament->t_kind == 'single') {
         $total_game = $total_game / 2;
     }
     $tour_games = Games::model()->findAll("`status` in ('黑胜','白胜','和棋') and tid={$id}");
     //如果所有比赛都结束了,则处理比赛结束的逻辑。
     if ($total_game == count($tour_games)) {
         $tj = Tournament_join::model()->findAll("tid={$id}");
         $users_score = array();
         foreach ($tj as $v) {
             $users_score[$v->uid] = array('score' => 0, 'win' => 0);
         }
         //遍历game,算分和胜。
         foreach ($tour_games as $g) {
             switch ($g->status) {
                 case '黑胜':
                     $users_score[$g->black_id]['score']++;
                     $users_score[$g->black_id]['win']++;
                     break;
                 case '白胜':
                     $users_score[$g->white_id]['score']++;
                     $users_score[$g->white_id]['win']++;
                     break;
                 case '和棋':
                     $users_score[$g->black_id]['score'] += 0.5;
                     $users_score[$g->white_id]['score'] += 0.5;
                     break;
             }
         }
         foreach ($tj as $v) {
             $v->t_score = $users_score[$v->uid]['score'];
             $v->win_game = $users_score[$v->uid]['win'];
             $v->save();
         }
         //这里就直接按照积分和胜局排顺序了,不考虑直胜问题。
         $tj = Tournament_join::model()->findAll("tid={$id} order by t_score desc,win_game desc");
         foreach ($tj as $k => $v) {
             $v->rating = $k + 1;
             $v->save();
         }
         $tournament->status = 'ended';
         $tournament->save();
     }
     Yii::app()->cache->delete(self::CACHE_PREFIX . $tournament->id);
 }
Exemplo n.º 5
0
/css/styles.css" />

	<title><?php 
echo CHtml::encode($this->pageTitle);
?>
</title>

	<?php 
Yii::app()->bootstrap->register();
?>
</head>

<body>

<?php 
$torneos = Tournament::model()->findAllByAttributes(array('ACTIVE' => 1));
$items = array();
foreach ($torneos as $torneo) {
    $items[] = array('label' => $torneo->NAME, 'url' => array('tournament/manage', 'id' => $torneo->ID));
}
?>

<?php 
$this->widget('bootstrap.widgets.TbNavbar', array('items' => array(array('class' => 'bootstrap.widgets.TbMenu', 'items' => array(array('label' => 'Menu', 'url' => '#', 'items' => array(array('label' => 'Catalogos'), array('label' => 'Torneos', 'url' => array('tournament/admin')), array('label' => 'Equipos', 'url' => array('team/admin')), array('label' => 'Jugadores', 'url' => array('player/admin')), array('label' => 'Canchas', 'url' => array('playGround/admin')), array('label' => 'Arbitros', 'url' => array('referee/admin')), array('label' => 'Documentos', 'url' => array('document/admin')), array('label' => 'Categorias', 'url' => array('category/admin')), array('label' => 'Indicador resultado', 'url' => array('catResult/admin')))), array('label' => 'Torneos', 'url' => '#', 'items' => $items))), array('class' => 'bootstrap.widgets.TbMenu', 'htmlOptions' => array('class' => 'pull-right'), 'items' => array(array('label' => 'Home', 'url' => array('/site/index')), array('label' => 'About', 'url' => array('/site/page', 'view' => 'about')), array('label' => 'Contact', 'url' => array('/site/contact')), array('label' => 'Login', 'url' => array('/site/login'), 'visible' => Yii::app()->user->isGuest), array('label' => 'Logout (' . Yii::app()->user->name . ')', 'url' => array('/site/logout'), 'visible' => !Yii::app()->user->isGuest))))));
?>





<div class="container-fluid" id="page">