public function OnLoadPageData()
 {
     $id = $this->school_manager->GetItemId();
     $this->school_manager->ReadById(array($id));
     $this->school = $this->school_manager->GetFirst();
     unset($this->school_manager);
     $this->ground_manager->ReadGroundForSchool($this->school);
     $ground = $this->ground_manager->GetFirst();
     if ($ground instanceof Ground) {
         $this->school->Ground()->SetId($ground->GetId());
         $this->school->Ground()->SetAddress($ground->GetAddress());
     }
 }
 /**
  * @return void
  * @desc Re-build from data posted by this control the data object this control is editing
  */
 public function BuildPostedDataObject()
 {
     $school = new School($this->GetSettings());
     if (isset($_POST['item'])) {
         $school->SetId($_POST['item']);
     }
     $school->SetName($_POST['school-name'] . ", " . $_POST["town"]);
     $school->Ground()->SetId($_POST['ground-id']);
     $address = new PostalAddress();
     $address->SetPaon($_POST['school-name']);
     $address->SetStreetDescriptor($_POST['street']);
     $address->SetLocality($_POST['locality']);
     $address->SetTown($_POST['town']);
     $address->SetAdministrativeArea($_POST['county']);
     $address->SetPostcode($_POST['postcode']);
     $address->SetGeoLocation($_POST['latitude'], $_POST['longitude'], $_POST['geoprecision']);
     $school->Ground()->SetAddress($address);
     $this->SetDataObject($school);
 }
 /**
  * Reads the ground for a school by matching the name and town
  */
 public function ReadGroundForSchool(School $school)
 {
     $sql = "SELECT ground_id FROM nsa_ground \r\n        WHERE town = " . Sql::ProtectString($this->GetDataConnection(), $school->Ground()->GetAddress()->GetTown()) . " \r\n        AND paon = " . Sql::ProtectString($this->GetDataConnection(), $school->Ground()->GetAddress()->GetPaon());
     $result = $this->GetDataConnection()->query($sql);
     if ($row = $result->fetch()) {
         $this->ReadById(array($row->ground_id));
     }
     unset($result);
 }
 /**
  * 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);
     }
 }