예제 #1
0
 function process()
 {
     global $lr_session;
     $this->title = $this->team->name;
     $this->template_name = 'pages/team/view.tpl';
     $this->smarty->assign('team', $this->team);
     if ($this->team->home_field) {
         $field = Field::load(array('fid' => $this->team->home_field));
         $this->smarty->assign('home_field', $field);
     }
     $teamSBF = $this->team->calculate_sbf();
     if ($teamSBF) {
         $this->smarty->assign('team_sbf', $teamSBF);
         $league = League::load(array('league_id' => $this->team->league_id));
         $this->smarty->assign('league_sbf', $league->calculate_sbf());
     }
     if ($lr_session->has_permission('team', 'player shirts', $this->team->team_id)) {
         $this->smarty->assign('display_shirts', true);
     }
     $rosterPositions = Team::get_roster_positions();
     $this->smarty->assign('roster_positions', $rosterPositions);
     $this->team->get_roster();
     $this->team->check_roster_conflict();
     foreach ($this->team->roster as $player) {
         $player->status = $rosterPositions[$player->status];
     }
     $min_roster = $league->min_roster_size;
     if ($this->team->roster_count < $min_roster && ($lr_session->is_captain_of($this->team->team_id) || $lr_session->is_admin()) && $this->team->roster_deadline > 0) {
         $this->smarty->assign('roster_requirement', $min_roster);
         $this->smarty->assign('display_roster_note', true);
     }
     return true;
 }
예제 #2
0
 function process()
 {
     global $lr_session;
     // Using these multiple times, so saving them
     $is_admin = $lr_session->is_admin();
     $is_captain = $lr_session->is_captain_of($this->team->team_id);
     $this->title = "{$this->team->name} &raquo; Roster Status";
     if ($this->team->roster_deadline > 0 && !$lr_session->is_admin() && time() > $this->team->roster_deadline) {
         info_exit('The roster deadline has passed.');
     }
     if (!$this->player) {
         $this->title = "{$this->team->name} &raquo; Add Player";
         if (!($is_admin || $is_captain)) {
             error_exit("You cannot add a person to that team!");
         }
         $new_handler = new person_search();
         $new_handler->smarty =& $this->smarty;
         $new_handler->initialize();
         $new_handler->ops['Add to ' . $this->team->name] = 'team/roster/' . $this->team->team_id;
         $new_handler->process();
         $this->template_name = $new_handler->template_name;
         return true;
     }
     if (!$this->player->is_player()) {
         error_exit('Only registered players can be added to a team.');
     }
     $events = $this->player->is_eligible_for($this->team->team_id);
     if ($events !== true) {
         // Captains and admins can modify players even if they haven't registered for events.
         // That way, the onus is on the player to register, saving captains the hassle.
         // So, only disable the roster change for players
         if (!($is_admin || $is_captain)) {
             $this->smarty->assign('prerequisites', $events);
             $this->smarty->assign('disabled', 'disabled="disabled"');
         }
     }
     $this->positions = Team::get_roster_positions();
     $this->currentStatus = $this->team->get_roster_status($this->player->user_id);
     $this->permittedStates = $this->permitted_roster_states();
     $edit =& $_POST['edit'];
     if ($this->player->status != 'active' && $edit['status'] && $edit['status'] != 'none') {
         error_exit("Inactive players may only be removed from a team.  Please contact this player directly to have them activate their account.");
     }
     if ($edit['step'] != 'perform') {
         $this->smarty->assign('current_status', $this->positions[$this->currentStatus]);
         $this->smarty->assign('player', $this->player);
         $this->smarty->assign('team', $this->team);
         $this->smarty->assign('states', $this->permittedStates);
         return true;
     }
     if (!array_key_exists($edit['status'], $this->permittedStates)) {
         error_exit("You do not have permission to set that status.");
     }
     if (!$this->team->set_roster_status($this->player->user_id, $edit['status'], $this->currentStatus)) {
         error_exit("Could not set roster status for {$this->player->fullname}");
     }
     local_redirect(url("team/view/" . $this->team->team_id));
     return true;
 }
예제 #3
0
 function process()
 {
     $this->title = $this->person->fullname;
     $this->template_name = 'pages/person/view.tpl';
     $this->smarty->assign('person', $this->person);
     /* Display teams */
     // TODO: do at load time?
     $rosterPositions = Team::get_roster_positions();
     $teams = array();
     foreach ($this->person->teams as $team) {
         $team->rendered_position = $rosterPositions[$team->position];
         $teams[] = $team;
     }
     $this->smarty->assign('teams', $teams);
     return true;
 }
예제 #4
0
 function process()
 {
     global $lr_session;
     $this->title = "{$this->team->name} &raquo; Roster Status";
     if ($this->team->roster_deadline > 0 && !$lr_session->is_admin() && time() > $this->team->roster_deadline) {
         error_exit('The roster deadline has passed.');
     }
     if (!$this->player) {
         $this->title = "{$this->team->name} &raquo; Add Player";
         if (!($lr_session->is_admin() || $lr_session->is_captain_of($this->team->team_id))) {
             error_exit("You cannot add a person to that team!");
         }
         $new_handler = new person_search();
         $new_handler->smarty =& $this->smarty;
         $new_handler->initialize();
         $new_handler->ops['Add to ' . $this->team->name] = 'team/roster/' . $this->team->team_id;
         $new_handler->process();
         $this->template_name = $new_handler->template_name;
         return true;
     }
     if (!$this->player->is_player()) {
         error_exit('Only registered players can be added to a team.');
     }
     $this->positions = Team::get_roster_positions();
     $this->currentStatus = $this->team->get_roster_status($this->player->user_id);
     $this->permittedStates = $this->permitted_roster_states();
     $edit =& $_POST['edit'];
     if ($this->player->status != 'active' && $edit['status'] && $edit['status'] != 'none') {
         error_exit("Inactive players may only be removed from a team.  Please contact this player directly to have them activate their account.");
     }
     if ($edit['step'] != 'perform') {
         $this->smarty->assign('current_status', $this->positions[$this->currentStatus]);
         $this->smarty->assign('player', $this->player);
         $this->smarty->assign('team', $this->team);
         $this->smarty->assign('states', $this->permittedStates);
         return true;
     }
     if (!array_key_exists($edit['status'], $this->permittedStates)) {
         error_exit("You do not have permission to set that status.");
     }
     if (!$this->team->set_roster_status($this->player->user_id, $edit['status'], $this->currentStatus)) {
         error_exit("Could not set roster status for {$this->player->fullname}");
     }
     local_redirect(url("team/view/" . $this->team->team_id));
     return true;
 }
예제 #5
0
 function getStatesForAdministrator($current_status)
 {
     return array_keys(Team::get_roster_positions());
 }
예제 #6
0
 function process()
 {
     global $lr_session, $dbh;
     $this->title = $lr_session->attr_get('fullname');
     $this->template_name = 'pages/home.tpl';
     /* Handle display of RSS feed itmes, if enabled */
     $feed_url = variable_get('rss_feed_url', null);
     if ($feed_url) {
         $curl = curl_init();
         curl_setopt($curl, CURLOPT_URL, $feed_url);
         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0);
         # Fetch RSS data
         $xml = curl_exec($curl);
         curl_close($curl);
         if ($xml) {
             $xmlObj = simplexml_load_string($xml);
             $count = 0;
             $limit = variable_get('rss_feed_items', 2);
             $items = array();
             foreach ($xmlObj->channel[0]->item as $item) {
                 $items[] = array('title' => $item->title, 'link' => $item->link);
                 if (++$count >= $limit) {
                     break;
                 }
             }
             if ($count > 0) {
                 $this->smarty->assign('rss_feed_title', variable_get('rss_feed_title', 'OCUA Volunteer Opportunities'));
                 $this->smarty->assign('rss_feed_items', $items);
             }
         }
     }
     /* Display teams */
     $rosterPositions = Team::get_roster_positions();
     $teams = array();
     foreach ($lr_session->user->teams as $team) {
         $team->rendered_position = $rosterPositions[$team->position];
         $teams[] = $team;
     }
     reset($lr_session->user->teams);
     $this->smarty->assign('teams', $teams);
     /* Display leagues */
     // TODO: For each league, need to display # of missing scores,
     // pending scores, etc.
     $this->smarty->assign('leagues', $lr_session->user->leagues);
     /* Display recent and upcoming games */
     $games = array();
     // TODO: query should be moved to person object, or a helper in game.inc
     $sth = $dbh->prepare('SELECT s.game_id, t.team_id, t.status FROM schedule s, gameslot g, teamroster t WHERE s.published AND ((s.home_team = t.team_id OR s.away_team = t.team_id) AND t.player_id = ?) AND g.game_id = s.game_id AND g.game_date < CURDATE() ORDER BY g.game_date desc, g.game_start desc LIMIT 4');
     $sth->execute(array($lr_session->user->user_id));
     while ($row = $sth->fetch(PDO::FETCH_OBJ)) {
         $game = Game::load(array('game_id' => $row->game_id));
         $game->user_team_id = $row->team_id;
         $games[] = $game;
     }
     $games = array_reverse($games);
     $sth = $dbh->prepare('SELECT s.game_id, t.team_id, t.status FROM schedule s, gameslot g, teamroster t WHERE s.published AND ((s.home_team = t.team_id OR s.away_team = t.team_id) AND t.player_id = ?) AND g.game_id = s.game_id AND g.game_date >= CURDATE() ORDER BY g.game_date asc, g.game_start asc LIMIT 4');
     $sth->execute(array($lr_session->user->user_id));
     while ($row = $sth->fetch(PDO::FETCH_OBJ)) {
         $game = Game::load(array('game_id' => $row->game_id));
         $game->user_team_id = $row->team_id;
         $games[] = $game;
     }
     foreach ($games as $game) {
         $score = '';
         if ($game->is_finalized()) {
             $score = "{$game->home_score} - {$game->away_score}";
         } else {
             /* Not finalized yet, so we will either:
              *   - display entered score if present
              *   - display score entry link if game date has passed
              *   - display a blank otherwise
              */
             $entered = $game->get_score_entry($game->user_team_id);
             if ($entered) {
                 // need to match entered score order to displayed team order!
                 if ($entered->team_id == $game->home_id) {
                     $score = "{$entered->score_for} - {$entered->score_against}";
                 } else {
                     $score = "{$entered->score_against} - {$entered->score_for}";
                 }
                 $score .= " (unofficial, waiting for opponent)";
                 $game->score_entered = $score;
             } else {
                 if ($lr_session->has_permission('game', 'submit score', $game) && $game->timestamp < time()) {
                     $game->user_can_submit = true;
                 }
             }
         }
     }
     $this->smarty->assign('games', $games);
     return;
 }