function OnPostback() { # get object $this->team = $this->edit->GetDataObject(); # Check user has permission to edit this team. Authentication for team owners is based on the URI # so make sure we get that from the database, not untrusted user input. if ($this->team->GetId() and !AuthenticationManager::GetUser()->Permissions()->HasPermission(PermissionType::MANAGE_TEAMS)) { $this->team_manager->ReadById(array($this->team->GetId())); $check_team = $this->team_manager->GetFirst(); $this->team->SetShortUrl($check_team->GetShortUrl()); } if ($this->team->GetId() and !AuthenticationManager::GetUser()->Permissions()->HasPermission(PermissionType::MANAGE_TEAMS, $this->team->GetLinkedDataUri()) or !$this->team->GetId() and !AuthenticationManager::GetUser()->Permissions()->HasPermission(PermissionType::MANAGE_TEAMS)) { $this->GetAuthenticationManager()->GetPermission(); } # save data if valid if ($this->IsValid()) { $i_id = $this->team_manager->SaveTeam($this->team); $this->team->SetId($i_id); $this->Redirect($this->team->GetNavigateUrl()); } }
/** * @return void * @desc Re-build from data posted by this control the data object this control is editing */ function BuildPostedDataObject() { $team = new Team($this->GetSettings()); if (isset($_POST['item'])) { $team->SetId($_POST['item']); } if (isset($_POST['name'])) { $team->SetName($_POST['name']); } $team->SetWebsiteUrl($_POST['websiteUrl']); $team->SetIsActive(isset($_POST['playing'])); $team->SetIntro(ucfirst(trim($_POST['intro']))); $team->SetPlayingTimes($_POST['times']); $team->SetCost($_POST['yearCost']); $team->SetContact($_POST['contact']); $team->SetPrivateContact($_POST['private']); $ground = new Ground($this->GetSettings()); $ground->SetId($_POST['ground']); $team->SetGround($ground); if (isset($_POST['team_type'])) { $team->SetTeamType($_POST['team_type']); if ($team->GetTeamType() == Team::SCHOOL_YEARS) { $team->SetSchoolYears(array(1 => isset($_POST['year1']), 2 => isset($_POST['year2']), 3 => isset($_POST['year3']), 4 => isset($_POST['year4']), 5 => isset($_POST['year5']), 6 => isset($_POST['year6']), 7 => isset($_POST['year7']), 8 => isset($_POST['year8']), 9 => isset($_POST['year9']), 10 => isset($_POST['year10']), 11 => isset($_POST['year11']), 12 => isset($_POST['year12']))); } } if ($this->is_admin) { $team->SetShortUrl($_POST[$this->GetNamingPrefix() . 'ShortUrl']); $team->SetPlayerType($_POST['playerType']); if (isset($_POST['club']) and is_numeric($_POST['club'])) { $club = new Club($this->GetSettings()); $club->SetId($_POST['club']); $team->SetClub($club); } } $this->SetDataObject($team); }
/** * Populates the collection of business objects from raw data * * @return bool * @param MySqlRawData $o_result */ protected function BuildItems(MySqlRawData $o_result) { # use CollectionBuilder to handle duplicates $o_ground_builder = new CollectionBuilder(); $o_ground = null; while ($row = $o_result->fetch()) { # check whether this is a new ground if (!$o_ground_builder->IsDone($row->ground_id)) { # store any exisiting ground if ($o_ground != null) { $this->Add($o_ground); } # create the new ground $o_ground = new Ground($this->o_settings); $o_ground->SetId($row->ground_id); $o_ground->SetDirections($row->directions); $o_ground->SetParking($row->parking); $o_ground->SetFacilities($row->facilities); $o_ground->SetShortUrl($row->short_url); $o_ground->SetDateUpdated($row->date_changed); if (isset($row->update_search) and $row->update_search == 1) { $o_ground->SetSearchUpdateRequired(); } $o_address = $o_ground->GetAddress(); $o_address->SetSaon($row->saon); $o_address->SetPaon($row->paon); $o_address->SetStreetDescriptor($row->street_descriptor); $o_address->SetLocality($row->locality); $o_address->SetTown($row->town); $o_address->SetAdministrativeArea($row->administrative_area); $o_address->SetPostcode($row->postcode); if (isset($row->latitude)) { $o_address->SetGeoLocation($row->latitude, $row->longitude, $row->geo_precision); } $o_ground->SetAddress($o_address); } if (isset($row->team_name)) { $team = new Team($this->GetSettings()); $team->SetName($row->team_name); $team->SetShortUrl($row->team_short_url); $team->SetPlayerType($row->player_type_id); $o_ground->Teams()->Add($team); } } # store final ground if ($o_ground != null) { $this->Add($o_ground); } }
/** * @access public * @return void * @param int[] $a_ids * @desc Delete from the db the Teams matching the supplied ids */ public function Delete($a_ids) { # check parameter $this->ValidateNumericArray($a_ids); if (!count($a_ids)) { throw new Exception('No teams to delete'); } $s_ids = join(', ', $a_ids); # Get more information on the teams $teams = array(); $s_sql = "SELECT team_id, short_url, owner_role_id FROM nsa_team WHERE team_id IN ({$s_ids})"; $result = $this->GetDataConnection()->query($s_sql); while ($row = $result->fetch()) { $team = new Team($this->GetSettings()); $team->SetId($row->team_id); $team->SetShortUrl($row->short_url); $team->SetOwnerRoleId($row->owner_role_id); $teams[] = $team; } $result->closeCursor(); # Check that current user is an admin or a team owner require_once "authentication/authentication-manager.class.php"; $user = AuthenticationManager::GetUser(); foreach ($teams as $team) { /* @var $team Team */ if (!$user->Permissions()->HasPermission(PermissionType::MANAGE_TEAMS, $team->GetLinkedDataUri())) { throw new Exception("Unauthorised"); } } # delete owner role $authentication_manager = new AuthenticationManager($this->GetSettings(), $this->GetDataConnection(), null); foreach ($teams as $team) { /* @var $team Team */ if ($team->GetOwnerRoleId()) { $authentication_manager->DeleteRole($team->GetOwnerRoleId()); } } unset($authentication_manager); # delete from short URL cache require_once 'http/short-url-manager.class.php'; $o_url_manager = new ShortUrlManager($this->GetSettings(), $this->GetDataConnection()); foreach ($teams as $team) { /* @var $team Team */ $o_url_manager->Delete($team->GetShortUrl()); } unset($o_url_manager); # Delete relationships to matches $s_match_link = $this->GetSettings()->GetTable('MatchTeam'); $s_sql = 'DELETE FROM ' . $s_match_link . ' WHERE team_id IN (' . $s_ids . ') '; $this->GetDataConnection()->query($s_sql); # Delete relationships to competitions $s_season_link = $this->GetSettings()->GetTable('TeamSeason'); $s_sql = 'DELETE FROM ' . $s_season_link . ' WHERE team_id IN (' . $s_ids . ') '; $this->GetDataConnection()->query($s_sql); # Delete players require_once "player-manager.class.php"; $player_manager = new PlayerManager($this->GetSettings(), $this->GetDataConnection()); $player_manager->ReadPlayersInTeam($a_ids); $players = $player_manager->GetItems(); if (count($players)) { $player_ids = array(); foreach ($players as $player) { $player_ids[] = $player->GetId(); } $player_manager->Delete($player_ids); } unset($player_manager); # delete team(s) $s_sql = 'DELETE FROM nsa_team WHERE team_id IN (' . $s_ids . ') '; $this->GetDataConnection()->query($s_sql); return $this->GetDataConnection()->GetAffectedRows(); }
/** * Populates the collection of business objects from raw data * * @return bool * @param MySqlRawData $o_result */ protected function BuildItems(MySqlRawData $o_result) { $this->Clear(); $o_match_builder = new CollectionBuilder(); $o_team_builder = new CollectionBuilder(); $o_tournament_match_builder = new CollectionBuilder(); $season_builder = new CollectionBuilder(); while ($o_row = $o_result->fetch()) { if (!$o_match_builder->IsDone($o_row->match_id)) { if (isset($o_match)) { $this->Add($o_match); $o_team_builder->Reset(); $o_tournament_match_builder->Reset(); $season_builder->Reset(); } # create new $o_match = new Match($this->GetSettings()); $this->BuildMatchSummary($o_match, $o_row); if ($o_match->GetMatchType() == MatchType::TOURNAMENT_MATCH and isset($o_row->tournament_match_id)) { $o_tourn = new Match($this->o_settings); $o_tourn->SetMatchType(MatchType::TOURNAMENT); $o_tourn->SetId($o_row->tournament_match_id); if (isset($o_row->tournament_title)) { $o_tourn->SetTitle($o_row->tournament_title); } if (isset($o_row->tournament_url)) { $o_tourn->SetShortUrl($o_row->tournament_url); } $o_match->SetTournament($o_tourn); unset($o_tourn); } if (isset($o_row->home_team_id) and !is_null($o_row->home_team_id)) { $o_home = new Team($this->o_settings); $o_home->SetId($o_row->home_team_id); if (isset($o_row->home_team_name)) { $o_home->SetName($o_row->home_team_name); } if (isset($o_row->home_short_url)) { $o_home->SetShortUrl($o_row->home_short_url); } $o_match->SetHomeTeam($o_home); unset($o_home); } $this->BuildGround($o_match, $o_row); } # Add away teams if (isset($o_row->away_team_id) && !$o_team_builder->IsDone($o_row->away_team_id)) { $o_away = new Team($this->o_settings); $o_away->SetId($o_row->away_team_id); if (isset($o_row->away_team_name)) { $o_away->SetName($o_row->away_team_name); } if (isset($o_row->away_short_url)) { $o_away->SetShortUrl($o_row->away_short_url); } $o_match->AddAwayTeam($o_away); unset($o_away); } # Add matches in tournament if (isset($o_row->match_id_in_tournament) and is_numeric($o_row->match_id_in_tournament) and !$o_tournament_match_builder->IsDone($o_row->match_id_in_tournament)) { $o_tmatch = new Match($this->o_settings); $o_tmatch->SetMatchType(MatchType::TOURNAMENT_MATCH); $o_tmatch->SetId($o_row->match_id_in_tournament); $o_tmatch->SetTitle($o_row->tournament_match_title); $o_tmatch->SetShortUrl($o_row->tournament_match_url); $o_tmatch->SetStartTime($o_row->tournament_match_time); $o_tmatch->SetIsStartTimeKnown($o_row->tournament_match_start_time_known); $o_tmatch->SetOrderInTournament($o_row->order_in_tournament); $o_match->AddMatchInTournament($o_tmatch); unset($o_tmatch); } # Add seasons $this->BuildSeason($o_match, $o_row, $season_builder); } # Add final match if (isset($o_match)) { $this->Add($o_match); } return true; }
/** * Populates the collection of business objects from raw data * * @return bool * @param MySqlRawData $result */ protected function BuildItems(MySqlRawData $result) { # use CollectionBuilder to handle duplicates $school_builder = new CollectionBuilder(); $school = null; while ($row = $result->fetch()) { # check whether this is a new school if (!$school_builder->IsDone($row->club_id)) { # store any exisiting school if ($school != null) { $this->Add($school); } # create the new school $school = new School($this->GetSettings()); $school->SetId($row->club_id); $school->SetName($row->club_name); $school->SetTypeOfClub($row->club_type); $school->SetHowManyPlayers($row->how_many_players); $school->SetAgeRangeLower($row->age_range_lower); $school->SetAgeRangeUpper($row->age_range_upper); $school->SetPlaysOutdoors($row->plays_outdoors); $school->SetPlaysIndoors($row->plays_indoors); $school->SetShortUrl($row->short_url); $school->SetTwitterAccount($row->twitter); $school->SetFacebookUrl($row->facebook); $school->SetInstagramAccount($row->instagram); $school->SetClubmarkAccredited($row->clubmark); # Infer partial address from school name $school_name = $school->GetName(); $comma = strrpos($school_name, ","); if ($comma !== false) { $school->Ground()->GetAddress()->SetTown(trim(substr($school_name, $comma + 1))); $school->Ground()->GetAddress()->SetPaon(substr($school_name, 0, $comma)); } } # team the only cause of multiple rows (so far) so add to current school if ($row->team_id) { $team = new Team($this->GetSettings()); $team->SetId($row->team_id); $team->SetName($row->team_name); $team->SetShortUrl($row->team_short_url); $school->Add($team); } } # store final club if ($school != null) { $this->Add($school); } }
/** * Populates the collection of business objects from raw data * * @return bool * @param MySqlRawData $o_result */ protected function BuildItems(MySqlRawData $o_result) { /* @var $o_season Season */ $this->Clear(); # use CollectionBuilder to handle duplicates $o_season_builder = new CollectionBuilder(); $o_team_builder = new CollectionBuilder(); $o_rule_builder = new CollectionBuilder(); $o_points_builder = new CollectionBuilder(); $o_type_builder = new CollectionBuilder(); $o_season = null; while ($o_row = $o_result->fetch()) { # check whether this is a new season if (!$o_season_builder->IsDone($o_row->season_id)) { # store any exisiting season and reset if ($o_season != null) { $this->Add($o_season); $o_team_builder->Reset(); $o_rule_builder->Reset(); $o_points_builder->Reset(); $o_type_builder->Reset(); } # create the new season $o_season = new Season($this->GetSettings()); $this->BuildSeason($o_season, $o_row); } # Teams the first cause of multiple rows if (isset($o_row->team_id)) { if (!$o_team_builder->IsDone($o_row->team_id)) { if (isset($o_team)) { unset($o_team); } $o_team = new Team($this->GetSettings()); $o_team->SetId($o_row->team_id); $o_team->SetName($o_row->team_name); $ground = new Ground($this->GetSettings()); $ground->SetId($o_row->team_ground_id); $o_team->SetGround($ground); if (isset($o_row->team_short_url)) { $o_team->SetShortUrl($o_row->team_short_url); } $o_season->AddTeam($o_team); if (isset($o_row->withdrawn_league) and (bool) $o_row->withdrawn_league) { $o_season->TeamsWithdrawnFromLeague()->Add($o_team); } } # Points adjustments - should come with team and in order of team if (isset($o_row->point_id) and !$o_points_builder->IsDone($o_row->point_id)) { $o_point = new PointsAdjustment($o_row->point_id, $o_row->points, $o_team, $o_row->reason, $o_row->points_date); $o_season->PointsAdjustments()->Add($o_point); } } # Season rules if (isset($o_row->season_rule_id) and !$o_rule_builder->IsDone($o_row->season_rule_id)) { $o_mr = new MatchResult($o_row->match_result_id); $o_mr->SetHomePoints($o_row->home_points); $o_mr->SetAwayPoints($o_row->away_points); $o_season->PossibleResults()->Add($o_mr); unset($o_mr); } # Match types if (isset($o_row->season_match_type) and !$o_type_builder->IsDone($o_row->season_match_type)) { $o_season->MatchTypes()->Add((int) $o_row->season_match_type); } } # store final season if ($o_season != null) { $this->Add($o_season); } return true; }
/** * Populates the collection of business objects from raw data * * @return bool * @param MySqlRawData $o_result */ protected function BuildItems(MySqlRawData $o_result) { $this->Clear(); $o_match_builder = new CollectionBuilder(); $o_team_builder = new CollectionBuilder(); while ($o_row = $o_result->fetch()) { if (!$o_match_builder->IsDone($o_row->match_id)) { if (isset($o_match)) { $this->Add($o_match); $o_team_builder->Reset(); } # create new $o_match = new Match($this->GetSettings()); $o_match->SetId($o_row->match_id); if (isset($o_row->start_time)) { $o_match->SetStartTime($o_row->start_time); } if (isset($o_row->home_runs)) { $o_match->Result()->SetHomeRuns($o_row->home_runs); } if (isset($o_row->away_runs)) { $o_match->Result()->SetAwayRuns($o_row->away_runs); } if (isset($o_row->match_result_id)) { $o_match->Result()->SetResultType($o_row->match_result_id); } if (isset($o_row->home_team_id) and !is_null($o_row->home_team_id)) { $o_home = new Team($this->o_settings); $o_home->SetId($o_row->home_team_id); if (isset($o_row->home_team_name)) { $o_home->SetName($o_row->home_team_name); } if (isset($o_row->home_short_url)) { $o_home->SetShortUrl($o_row->home_short_url); } $o_match->SetHomeTeam($o_home); unset($o_home); } if (isset($o_row->ground_id)) { $o_ground = new Ground($this->GetSettings()); $o_ground->SetId($o_row->ground_id); $o_match->SetGround($o_ground); unset($o_ground); } } # Add away teams if (isset($o_row->away_team_id) && !$o_team_builder->IsDone($o_row->away_team_id)) { $o_away = new Team($this->o_settings); $o_away->SetId($o_row->away_team_id); if (isset($o_row->away_team_name)) { $o_away->SetName($o_row->away_team_name); } if (isset($o_row->away_short_url)) { $o_away->SetShortUrl($o_row->away_short_url); } $o_match->AddAwayTeam($o_away); unset($o_away); } } # Add final match if (isset($o_match)) { $this->Add($o_match); } return true; }
/** * Populates the collection of business objects from raw data * * @return bool * @param MySqlRawData $result */ protected function BuildItems(MySqlRawData $result) { # use CollectionBuilder to handle duplicates $club_builder = new CollectionBuilder(); $club = null; while ($row = $result->fetch()) { # check whether this is a new club if (!$club_builder->IsDone($row->club_id)) { # store any exisiting club if ($club != null) { $this->Add($club); } # create the new club $club = new Club($this->GetSettings()); $club->SetId($row->club_id); $club->SetName($row->club_name); $club->SetTypeOfClub($row->club_type); $club->SetHowManyPlayers($row->how_many_players); $club->SetAgeRangeLower($row->age_range_lower); $club->SetAgeRangeUpper($row->age_range_upper); $club->SetPlaysOutdoors($row->plays_outdoors); $club->SetPlaysIndoors($row->plays_indoors); $club->SetShortUrl($row->short_url); $club->SetTwitterAccount($row->twitter); $club->SetFacebookUrl($row->facebook); $club->SetInstagramAccount($row->instagram); $club->SetClubmarkAccredited($row->clubmark); } # team the only cause of multiple rows (so far) so add to current club if ($row->team_id) { $team = new Team($this->GetSettings()); $team->SetId($row->team_id); $team->SetName($row->team_name); $team->SetShortUrl($row->team_short_url); $club->Add($team); } } # store final club if ($club != null) { $this->Add($club); } }
/** * Populates the collection of business objects from raw data * * @return bool * @param MySqlRawData $o_result */ protected function BuildItems(MySqlRawData $o_result) { /* @var $o_competition Competition */ # use CollectionBuilder to handle duplicates $o_comp_builder = new CollectionBuilder(); $o_season_builder = new CollectionBuilder(); $o_team_builder = new CollectionBuilder(); $o_points_builder = new CollectionBuilder(); $o_matchtype_builder = new CollectionBuilder(); $o_competition = null; $o_season = null; while ($o_row = $o_result->fetch()) { # check whether this is a new competition if (!$o_comp_builder->IsDone($o_row->competition_id)) { # store any exisiting competition and reset if ($o_competition != null) { if ($o_season != null) { $o_competition->AddSeason($o_season, true); } $o_season = null; $o_matchtype_builder->Reset(); $this->Add($o_competition); $o_season_builder->Reset(); } # create the new competition $o_competition = new Competition($this->o_settings); $o_competition->SetId($o_row->competition_id); $o_competition->SetName($o_row->competition_name); if (isset($o_row->intro)) { $o_competition->SetIntro($o_row->intro); } if (isset($o_row->contact)) { $o_competition->SetContact($o_row->contact); } if (isset($o_row->notification_email)) { $o_competition->SetNotificationEmail($o_row->notification_email); } if (isset($o_row->website)) { $o_competition->SetWebsiteUrl($o_row->website); } if (isset($o_row->short_url)) { $o_competition->SetShortUrl($o_row->short_url); } if (isset($o_row->active)) { $o_competition->SetIsActive($o_row->active); } if (isset($o_row->players_per_team)) { $o_competition->SetMaximumPlayersPerTeam($o_row->players_per_team); } if (isset($o_row->overs)) { $o_competition->SetOvers($o_row->overs); } $o_competition->SetPlayerType($o_row->player_type_id); if (isset($o_row->update_search) and $o_row->update_search == 1) { $o_competition->SetSearchUpdateRequired(); } if (isset($o_row->category_id) && !is_null($o_row->category_id)) { $cat = new Category(); $cat->SetId($o_row->category_id); if (isset($o_row->category_name)) { $cat->SetName($o_row->category_name); } if (isset($o_row->code)) { $cat->SetUrl($o_row->code); } $o_competition->SetCategory($cat); } } # Seasons are the first cause of multiple rows (first in sort order after competition) if (isset($o_row->season_id)) { if (!$o_season_builder->IsDone($o_row->season_id)) { if ($o_season != null) { $o_competition->AddSeason($o_season, true); } $o_season = new Season($this->o_settings); $o_season->SetId($o_row->season_id); $o_season->SetName($o_row->season_name); $o_season->SetIsLatest($o_row->is_latest); $o_season->SetStartYear($o_row->start_year); $o_season->SetEndYear($o_row->end_year); if (isset($o_row->season_intro)) { $o_season->SetIntro($o_row->season_intro); } if (isset($o_row->results)) { $o_season->SetResults($o_row->results); } if (isset($o_row->show_table)) { $o_season->SetShowTable($o_row->show_table); } if (isset($o_row->show_runs_scored)) { $o_season->SetShowTableRunsScored($o_row->show_runs_scored); } if (isset($o_row->show_runs_conceded)) { $o_season->SetShowTableRunsConceded($o_row->show_runs_conceded); } if (isset($o_row->season_short_url)) { $o_season->SetShortUrl($o_row->season_short_url); } } # Team only present if there is a season if (isset($o_row->team_id)) { if (!$o_team_builder->IsDone($o_row->team_id)) { if (isset($o_team)) { unset($o_team); } $o_team = new Team($this->GetSettings()); $o_team->SetId($o_row->team_id); $o_team->SetName($o_row->team_name); $o_team->GetGround()->SetId($o_row->ground_id); if (isset($o_row->team_short_url)) { $o_team->SetShortUrl($o_row->team_short_url); } $o_season->AddTeam($o_team); if (isset($o_row->withdrawn_league) and (bool) $o_row->withdrawn_league) { $o_season->TeamsWithdrawnFromLeague()->Add($o_team); } } # Points adjustments - should come with team and in order of team if (isset($o_row->point_id) and !$o_points_builder->IsDone($o_row->point_id)) { $o_point = new PointsAdjustment($o_row->point_id, $o_row->points, $o_team, $o_row->reason, $o_row->points_date); $o_season->PointsAdjustments()->Add($o_point); } } # Match types come with a season if (isset($o_row->match_type) and !$o_matchtype_builder->IsDone($o_row->match_type)) { $o_season->MatchTypes()->Add((int) $o_row->match_type); } } } # store final competition if ($o_competition != null) { if ($o_season != null) { $o_competition->AddSeason($o_season, true); } $this->Add($o_competition); } }