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; }
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} » 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} » 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; }
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; }
function process() { global $lr_session; $this->title = "{$this->team->name} » 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} » 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; }
function getStatesForAdministrator($current_status) { return array_keys(Team::get_roster_positions()); }
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; }