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); } }