示例#1
0
 function process()
 {
     global $CONFIG;
     $this->template_name = 'pages/team/ical.tpl';
     $this->smarty->assign('team', $this->team);
     $this->smarty->assign('short_league_name', variable_get('app_org_short_name', 'League'));
     # Our timezone is specified as US/Eastern, but ical wants US-Eastern.  bleh.
     $timezone = preg_replace("!/!", "-", $CONFIG['localization']['local_tz']);
     $this->smarty->assign('timezone', $timezone);
     /*
      * Grab schedule info
      */
     $games = Game::load_many(array('either_team' => $this->team->team_id, 'published' => 1, '_order' => 'g.game_date DESC,g.game_start,g.game_id'));
     // We'll be outputting an ical
     header('Content-type: text/calendar; charset=UTF-8');
     // Prevent caching
     header("Cache-Control: no-cache, must-revalidate");
     // get domain URL for signing games
     $arr = explode('@', variable_get('app_admin_email', "@{$short_league_name}"));
     $this->smarty->assign('domain_url', $arr[1]);
     // date stamp this file
     // MUST be in UTC
     $this->smarty->assign('now', gmstrftime('%Y%m%dT%H%M%SZ'));
     while (list(, $game) = each($games)) {
         $opponent_id = $game->home_id == $this->team->team_id ? $game->away_id : $game->home_id;
         $game->opponent = Team::load(array('team_id' => $opponent_id));
         $game->field = Field::load(array('fid' => $game->fid));
     }
     $this->smarty->assign('games', $games);
 }
示例#2
0
 function __construct($id)
 {
     $this->team = Team::load(array('team_id' => $id));
     if (!$this->team) {
         error_exit("That team does not exist");
     }
     team_add_to_menu($this->team);
 }
示例#3
0
 function process()
 {
     global $lr_session;
     # Nuke HTML just in case
     $team_name = check_form($this->team->name, ENT_NOQUOTES);
     $this->title = "{$team_name} » Move";
     $edit = $_POST['edit'];
     if ($edit['step']) {
         if ($edit['target'] < 1) {
             error_exit("That is not a valid league to move to");
         }
         if (!$lr_session->has_permission('league', 'manage teams', $edit['target'])) {
             error_exit("Sorry, you cannot move teams to leagues you do not coordinate");
         }
         $targetleague = League::load(array('league_id' => $edit['target']));
         if (!$targetleague) {
             error_exit("You must supply a valid league to move to");
         }
         if ($targetleague->league_id == $this->team->league_id) {
             error_exit("You can't move a team to the league it's currently in!");
         }
     }
     if ($edit['swaptarget']) {
         $target_team = Team::load(array('team_id' => $edit['swaptarget']));
         if (!$target_team) {
             error_exit("You must supply a valid target team ID");
         }
         if ($target_team->league_id == $this->team->league_id) {
             error_exit("You can't swap with a team that's already in the same league!");
         }
         if ($target_team->league_id != $targetleague->league_id) {
             error_exit("You can't swap with a team that's not in the league you want to move to!");
         }
         if (!$lr_session->has_permission('league', 'manage teams', $target_team->league_id)) {
             error_exit("Sorry, you cannot move teams to leagues you do not coordinate");
         }
     }
     switch ($edit['step']) {
         case 'perform':
             $sourceleague = League::load(array('league_id' => $this->team->league_id));
             $this->perform($targetleague, $target_team);
             local_redirect(url("league/view/" . $sourceleague->league_id));
         case 'confirm':
             return $this->confirm($targetleague, $target_team);
         case 'swaptarget':
             return $this->choose_swaptarget($targetleague);
         default:
             return $this->choose_league();
     }
     error_exit("Error: This code should never be reached.");
 }
示例#4
0
 function __construct($game_id, $team_id)
 {
     parent::__construct($game_id);
     $this->team = Team::load(array('team_id' => $team_id));
     team_add_to_menu($this->team);
 }
示例#5
0
 function assoc_obj()
 {
     if (!$this->assoc_obj) {
         if ($this->assoc_type == 'person') {
             $this->assoc_obj = Person::load(array('user_id' => $this->assoc_id));
         } elseif ($this->assoc_type == 'team') {
             $this->assoc_obj = Team::load(array('team_id' => $this->assoc_id));
         } else {
             die("Invalid assoc_type of " . $this->assoc_type);
         }
     }
     return $this->assoc_obj;
 }
示例#6
0
 function process()
 {
     global $dbh;
     $this->title = 'Team Statistics';
     $rows = array();
     $current_season = variable_get('current_season', 'Summer');
     $sth = $dbh->prepare('SELECT COUNT(*) FROM team');
     $sth->execute();
     $rows[] = array("Number of teams (total):", $sth->fetchColumn());
     $sth = $dbh->prepare('SELECT l.season, COUNT(*) FROM leagueteams t, league l WHERE t.league_id = l.league_id AND l.status = "open" GROUP BY l.season');
     $sth->execute();
     $sub_table = array();
     while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
         $sub_table[] = $row;
     }
     $rows[] = array("Teams by season:", table(null, $sub_table));
     $sth = $dbh->prepare("SELECT t.team_id,t.name, COUNT(r.player_id) as size \n\t\tFROM teamroster r, league l, leagueteams lt\n\t\tLEFT JOIN team t ON (t.team_id = r.team_id) \n\t\tWHERE\n\t\t\tlt.team_id = r.team_id\n\t\t\tAND l.league_id = lt.league_id\n\t\t\t\t\tAND l.status = 'open'\n\t\t\tAND l.schedule_type != 'none'\n\t\t\t\t\tAND l.season = ?\n\t\t\tAND (r.status = 'player' OR r.status = 'captain' OR r.status = 'assistant')\n\t\tGROUP BY t.team_id\n\t\tHAVING size < 12\n\t\tORDER BY size desc, t.name");
     $sth->execute(array($current_season));
     $sub_table = array();
     $sub_sth = $dbh->prepare("SELECT COUNT(*) FROM teamroster r WHERE r.team_id = ? AND r.status = 'substitute'");
     while ($row = $sth->fetch()) {
         if ($row['size'] < 12) {
             $sub_sth->execute(array($row['team_id']));
             $substitutes = $sub_sth->fetchColumn();
             if ($row['size'] + floor($substitutes / 3) < 12) {
                 $sub_table[] = array(l($row['name'], "team/view/" . $row['team_id']), $row['size'] + floor($substitutes / 3));
             }
         }
     }
     $rows[] = array("{$current_season} teams with too few players:", table(null, $sub_table));
     $sth = $dbh->prepare("SELECT t.team_id, t.name, t.rating\n\t\t\tFROM team t, league l, leagueteams lt\n\t\t\tWHERE\n\t\t\t\tlt.team_id = t.team_id\n\t\t\t\tAND l.league_id = lt.league_id\n\t\t\t\tAND l.status = 'open'\n\t\t\t\tAND l.schedule_type != 'none'\n\t\t\t\tAND l.season = ?\n\t\t\tORDER BY t.rating DESC LIMIT 10");
     $sth->execute(array($current_season));
     $sub_table = array();
     while ($row = $sth->fetch()) {
         $sub_table[] = array(l($row['name'], "team/view/" . $row['team_id']), $row['rating']);
     }
     $rows[] = array("Top-rated {$current_season} teams:", table(null, $sub_table));
     $sth = $dbh->prepare("SELECT t.team_id, t.name, t.rating\n\t\t\tFROM team t, league l, leagueteams lt\n\t\t\tWHERE\n\t\t\t\tlt.team_id = t.team_id\n\t\t\t\tAND l.league_id = lt.league_id\n\t\t\t\tAND l.status = 'open'\n\t\t\t\tAND l.schedule_type != 'none'\n\t\t\t\tAND l.season = ?\n\t\t\tORDER BY t.rating ASC LIMIT 10");
     $sth->execute(array($current_season));
     $sub_table = array();
     while ($row = $sth->fetch()) {
         $sub_table[] = array(l($row['name'], "team/view/" . $row['team_id']), $row['rating']);
     }
     $rows[] = array("Lowest-rated {$current_season} teams:", table(null, $sub_table));
     $sth = $dbh->prepare("SELECT COUNT(*) AS num,\n\t\t\t\tIF(s.status = 'home_default',s.home_team,s.away_team) AS team_id\n\t\t\tFROM schedule s, league l\n\t\t\tWHERE\n\t\t\t\ts.league_id = l.league_id\n\t\t\t\tAND l.status = 'open'\n\t\t\t\tAND l.season = ?\n\t\t\t\tAND (s.status = 'home_default' OR s.status = 'away_default')\n\t\t\tGROUP BY team_id ORDER BY num DESC");
     $sth->execute(array($current_season));
     $sub_table = array();
     while ($row = $sth->fetch()) {
         $team = Team::load(array('team_id' => $row['team_id']));
         $sub_table[] = array(l($team->name, "team/view/" . $row['team_id']), $row['num']);
     }
     $rows[] = array("Top defaulting {$current_season} teams:", table(null, $sub_table));
     $sth = $dbh->prepare("SELECT COUNT(*) AS num,\n\t\t\t\tIF(s.approved_by = -3,s.home_team,s.away_team) AS team_id\n\t\t\tFROM schedule s, league l\n\t\t\tWHERE\n\t\t\t\ts.league_id = l.league_id\n\t\t\t\tAND l.status = 'open'\n\t\t\t\tAND l.season = ?\n\t\t\t\tAND (s.approved_by = -2 OR s.approved_by = -3)\n\t\t\tGROUP BY team_id ORDER BY num DESC");
     $sth->execute(array($current_season));
     $sub_table = array();
     while ($row = $sth->fetch()) {
         $team = Team::load(array('team_id' => $row['team_id']));
         $sub_table[] = array(l($team->name, "team/view/" . $row['team_id']), $row['num']);
     }
     $rows[] = array("Top non-score-submitting {$current_season} teams:", table(null, $sub_table));
     $sotg_query = "SELECT\n\t\t\t\tROUND( AVG( s.score_entry_penalty + s.timeliness + s.rules_knowledge + s.sportsmanship + s.rating_overall ), 2) AS avgspirit,\n\t\t\t\ts.tid AS team_id\n\t\t\tFROM league l, leagueteams lt, spirit_entry s\n\t\t\tWHERE\n\t\t\t\tlt.league_id = l.league_id\n\t\t\t\tAND lt.team_id = s.tid\n\t\t\t\tAND l.status = 'open'\n\t\t\t\tAND l.season = ?\n\t\t\tGROUP BY team_id";
     $sth = $dbh->prepare($sotg_query . " ORDER BY avgspirit DESC LIMIT 10");
     $sth->execute(array($current_season));
     $sub_table = array();
     while ($row = $sth->fetch()) {
         $team = Team::load(array('team_id' => $row['team_id']));
         $sub_table[] = array(l($team->name, "team/view/" . $row['team_id']), $row['avgspirit']);
     }
     $rows[] = array("Best spirited {$current_season} teams:", table(null, $sub_table));
     $sth = $dbh->prepare($sotg_query . " ORDER BY avgspirit ASC LIMIT 10");
     $sth->execute(array($current_season));
     $sub_table = array();
     while ($row = $sth->fetch()) {
         $team = Team::load(array('team_id' => $row['team_id']));
         $sub_table[] = array(l($team->name, "team/view/" . $row['team_id']), $row['avgspirit']);
     }
     $rows[] = array("Lowest spirited {$current_season} teams:", table(null, $sub_table));
     $output = "<div class='pairtable'>" . table(null, $rows) . "</div>";
     return form_group("Team Statistics", $output);
 }
示例#7
0
 function get_home_team_object()
 {
     if (is_null($this->_home_team_object)) {
         if ($this->home_id) {
             $this->_home_team_object = Team::load(array('team_id' => $this->home_id));
         } else {
             return null;
         }
     }
     return $this->_home_team_object;
 }
示例#8
0
 function perform($edit)
 {
     global $lr_session;
     if (!$this->can_edit) {
         error_exit("You do not have permission to edit this game");
     }
     $s = new Spirit();
     $home_spirit = $s->as_formbuilder();
     $away_spirit = $s->as_formbuilder();
     if ($_POST['spirit_home']) {
         $home_spirit->bulk_set_answers($_POST['spirit_home']);
     }
     if ($_POST['spirit_away']) {
         $away_spirit->bulk_set_answers($_POST['spirit_away']);
     }
     $dataInvalid = $this->isDataInvalid($edit);
     if ($edit['status'] == 'normal') {
         $dataInvalid .= $home_spirit->answers_invalid();
         $dataInvalid .= $away_spirit->answers_invalid();
     }
     if ($dataInvalid) {
         error_exit($dataInvalid . "<br>Please use your back button to return to the form, fix these errors, and try again");
     }
     // store the old info:
     $oldgameresults['home_score'] = $this->game->home_score;
     $oldgameresults['away_score'] = $this->game->away_score;
     // Now, finalize score.
     $this->game->set('home_score', $edit['home_score']);
     $this->game->set('away_score', $edit['away_score']);
     $this->game->set('status', $edit['status']);
     $this->game->set('approved_by', $lr_session->attr_get('user_id'));
     // For a normal game, save spirit entries.
     if ($edit['status'] == 'normal') {
         # TODO: don't need to do this unless there are changes.
         if (!$s->store_spirit_entry($this->game, $this->game->home_id, $lr_session->attr_get('user_id'), $home_spirit->bulk_get_answers())) {
             error_exit("Error saving spirit entry for " . $this->game->home_name);
         }
         if (!$s->store_spirit_entry($this->game, $this->game->away_id, $lr_session->attr_get('user_id'), $away_spirit->bulk_get_answers())) {
             error_exit("Error saving spirit entry for " . $this->game->away_name);
         }
     }
     switch ($edit['status']) {
         // for defaults, have to prepare both home and away spirit scores!
         case 'normal':
         default:
             break;
     }
     // load the teams in order to be able to save their current rating
     $home_team = Team::load(array('team_id' => $this->game->home_id));
     $away_team = Team::load(array('team_id' => $this->game->away_id));
     // only save the current team ratings if we didn't already save them
     if ($this->game->rating_home == null || $this->game->rating_home == "" && $this->game->rating_away == null || $this->game->rating_away == "") {
         // save the current snapshot of each team's rating:
         $this->game->set('rating_home', $home_team->rating);
         $this->game->set('rating_away', $away_team->rating);
     }
     if (!$this->game->save()) {
         error_exit("Could not successfully save game results");
     }
     return true;
 }