/**
  * @return void
  * @desc Re-build from data posted by this control the data object this control is editing
  */
 function BuildPostedDataObject()
 {
     $o_ground = new Ground($this->GetSettings());
     if (isset($_POST['item'])) {
         $o_ground->SetId($_POST['item']);
     }
     $o_ground->SetDirections($_POST['directions']);
     $o_ground->SetParking($_POST['parking']);
     $o_ground->SetFacilities($_POST['facilities']);
     $o_ground->SetAddress($this->o_address_edit->GetDataObject());
     $o_ground->SetShortUrl($_POST[$this->GetNamingPrefix() . 'ShortUrl']);
     $this->SetDataObject($o_ground);
 }
 /**
  * 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);
     }
 }
 /**
  * Helper to build ground for a match from raw data
  *
  * @param Match $o_match
  * @param DataRow $o_row
  */
 private function BuildGround(Match $o_match, $o_row)
 {
     if (isset($o_row->ground_id)) {
         $o_ground = new Ground($this->GetSettings());
         $o_ground->SetId($o_row->ground_id);
         if (isset($o_row->ground_short_url)) {
             $o_ground->SetShortUrl($o_row->ground_short_url);
         }
         if (isset($o_row->town)) {
             $o_addr = $o_ground->GetAddress();
             $o_addr->SetSaon($o_row->saon);
             $o_addr->SetPaon($o_row->paon);
             if (isset($o_row->street_descriptor)) {
                 $o_addr->SetStreetDescriptor($o_row->street_descriptor);
             }
             if (isset($o_row->locality)) {
                 $o_addr->SetLocality($o_row->locality);
             }
             $o_addr->SetTown($o_row->town);
             if (isset($o_row->postcode)) {
                 $o_addr->SetPostcode($o_row->postcode);
             }
         }
         if (isset($o_row->latitude)) {
             $o_addr->SetGeoLocation($o_row->latitude, $o_row->longitude, $o_row->geo_precision);
         }
         $o_match->SetGround($o_ground);
         unset($o_ground);
     }
 }
 /**
  * Populates the collection of business objects from raw data
  *
  * @return bool
  * @param MySqlRawData $o_result
  */
 protected function BuildItems(MySqlRawData $o_result)
 {
     $this->Clear();
     /* @var $o_team Team */
     # use CollectionBuilder to handle duplicates
     $o_team_builder = new CollectionBuilder();
     $o_season_builder = new CollectionBuilder();
     $o_team = null;
     while ($row = $o_result->fetch()) {
         # check whether this is a new team
         if (!$o_team_builder->IsDone($row->team_id)) {
             # store any exisiting team
             if ($o_team != null) {
                 $this->Add($o_team);
                 $o_season_builder->Reset();
             }
             # create the new team
             $o_team = new Team($this->o_settings);
             $o_team->SetId($row->team_id);
             $o_team->SetName($row->team_name);
             if (isset($row->website)) {
                 $o_team->SetWebsiteUrl($row->website);
             }
             if (isset($row->active)) {
                 $o_team->SetIsActive($row->active);
             }
             if (isset($row->team_type)) {
                 $o_team->SetTeamType($row->team_type);
             }
             if (isset($row->intro)) {
                 $o_team->SetIntro($row->intro);
             }
             if (isset($row->playing_times)) {
                 $o_team->SetPlayingTimes($row->playing_times);
             }
             if (isset($row->cost)) {
                 $o_team->SetCost($row->cost);
             }
             if (isset($row->contact)) {
                 $o_team->SetContact($row->contact);
             }
             if (isset($row->contact_nsa)) {
                 $o_team->SetPrivateContact($row->contact_nsa);
             }
             if (isset($row->short_url)) {
                 $o_team->SetShortUrl($row->short_url);
             }
             if (isset($row->player_type_id)) {
                 $o_team->SetPlayerType($row->player_type_id);
             }
             $o_team->SetSchoolYears(array(1 => isset($row->year1) and $row->year1, 2 => isset($row->year2) and $row->year2, 3 => isset($row->year3) and $row->year3, 4 => isset($row->year4) and $row->year4, 5 => isset($row->year5) and $row->year5, 6 => isset($row->year6) and $row->year6, 7 => isset($row->year7) and $row->year7, 8 => isset($row->year8) and $row->year8, 9 => isset($row->year9) and $row->year9, 10 => isset($row->year10) and $row->year10, 11 => isset($row->year11) and $row->year11, 12 => isset($row->year12) and $row->year12));
             if (isset($row->update_search) and $row->update_search == 1) {
                 $o_team->SetSearchUpdateRequired();
             }
             if (isset($row->date_changed)) {
                 $o_team->SetLastAudit(new AuditData($row->modified_by_id, $row->known_as, $row->date_changed));
             }
             $club = new Club($this->GetSettings());
             if (isset($row->club_id)) {
                 $club->SetId($row->club_id);
                 if (isset($row->club_name)) {
                     $club->SetName($row->club_name);
                 }
                 if (isset($row->twitter)) {
                     $club->SetTwitterAccount($row->twitter);
                 }
                 if (isset($row->facebook)) {
                     $club->SetFacebookUrl($row->facebook);
                 }
                 if (isset($row->instagram)) {
                     $club->SetInstagramAccount($row->instagram);
                 }
                 if (isset($row->clubmark)) {
                     $club->SetClubmarkAccredited($row->clubmark);
                 }
                 if (isset($row->club_short_url)) {
                     $club->SetShortUrl($row->club_short_url);
                 }
             }
             # If the website is actually a Facebook page, move it, overriding the club Facebook page is necessary
             if (strpos($o_team->GetWebsiteUrl(), 'facebook.com/') !== false) {
                 $club->SetFacebookUrl($o_team->GetWebsiteUrl());
                 $o_team->SetWebsiteUrl('');
             }
             $o_team->SetClub($club);
             if (isset($row->ground_id) and $row->ground_id) {
                 $o_ground = new Ground($this->o_settings);
                 $o_ground->SetId($row->ground_id);
                 $address = $o_ground->GetAddress();
                 if (isset($row->saon)) {
                     $address->SetSaon($row->saon);
                 }
                 if (isset($row->town)) {
                     if (isset($row->paon)) {
                         $address->SetPaon($row->paon);
                     }
                     if (isset($row->street_descriptor)) {
                         $address->SetStreetDescriptor($row->street_descriptor);
                     }
                     if (isset($row->locality)) {
                         $address->SetLocality($row->locality);
                     }
                     $address->SetTown($row->town);
                     if (isset($row->administrative_area)) {
                         $address->SetAdministrativeArea($row->administrative_area);
                     }
                     if (isset($row->postcode)) {
                         $address->SetPostcode($row->postcode);
                     }
                     if (isset($row->latitude)) {
                         $address->SetGeoLocation($row->latitude, $row->longitude, null);
                     }
                     $o_ground->SetAddress($address);
                 }
                 if (isset($row->ground_short_url)) {
                     $o_ground->SetShortUrl($row->ground_short_url);
                 }
                 $o_team->SetGround($o_ground);
             }
         }
         # Competition/Season a cause of multiple rows
         if (isset($row->season_id) and !$o_season_builder->IsDone($row->season_id) and isset($row->competition_id)) {
             $o_season = new Season($this->o_settings);
             $o_season->SetId($row->season_id);
             $o_season->SetName($row->season_name);
             $o_season->SetIsLatest($row->is_latest);
             $o_season->SetStartYear($row->start_year);
             $o_season->SetEndYear($row->end_year);
             if (isset($row->season_short_url)) {
                 $o_season->SetShortUrl($row->season_short_url);
             }
             $o_competition = new Competition($this->o_settings);
             $o_competition->SetId($row->competition_id);
             $o_competition->SetName($row->competition_name);
             $o_season->SetCompetition($o_competition);
             $o_team->Seasons()->Add(new TeamInSeason(null, $o_season, isset($row->withdrawn_league) ? $row->withdrawn_league : null));
             unset($o_season);
             unset($o_competition);
         }
     }
     # store final team
     if ($o_team != null) {
         $this->Add($o_team);
     }
     return true;
 }