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)); }
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); }
/** * 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; }
/** * 比赛结束,计算总分和名次,处理比赛状态。 */ 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); }
/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">