/**
  * Setup pages...
  **/
 public function requireDefaultRecords()
 {
     parent::requireDefaultRecords();
     $bt = defined('DB::USE_ANSI_SQL') ? "\"" : "`";
     $parents = DataObject::get("BrowseRegionsPage");
     if ($parents && isset($_GET["geobuild"]) && $_GET["geobuild"] && $this->allowBrowseChildren()) {
         foreach ($parents as $parent) {
             if ($parent->CreateChildren && $parent->HiddenDataID) {
                 echo "<li>creating cities for " . $parent->Title . "<ul>";
                 $cities = $this->getDataFromTable("cities", "RegionID = " . $parent->HiddenDataID, "City");
                 foreach ($cities as $city) {
                     if (!DataObject::get_one("BrowseCitiesPage", "{$bt}BrowseAbstractPage{$bt}.{$bt}HiddenDataID{$bt} = " . $city["CityID"])) {
                         $page = new BrowseCitiesPage();
                         $page->CreateCity($city, $parent);
                         $page->destroy();
                     }
                 }
                 echo "</ul></li>";
             }
         }
         $parents->destroy();
     }
 }
    /**
     * This static method creates a city page and all the required parent pages...
     *@param Int - $CityID: the ID for the city to create
     **/
    public static function create_city_and_parents($CityID)
    {
        $cityPage = null;
        //check if the city exists at all
        $sql = '
			SELECT cities.RegionID, regions.CountryID, countries.ContinentID From cities, regions, countries, continents
			WHERE
				cities.RegionID = regions.RegionID AND
				regions.CountryID = countries.CountryID AND
				countries.ContinentID = continents.ContinentID AND
				cities.CityID = ' . $CityID . '
			LIMIT 1;';
        $result = DB::query($sql);
        foreach ($result as $row) {
            break;
        }
        $abstractHelpPage = new BrowseAbstractPage();
        if ($row) {
            //1 check if world exists
            if ($worldPage = DataObject::get_one("BrowseWorldPage")) {
                //do nothing
            } else {
                $worldPage = new BrowseWorldPage();
                $name = "Find";
                $worldPage->Title = $name;
                $worldPage->MetaTitle = $name;
                $worldPage->MenuTitle = $name;
                $worldPage->writeToStage('Stage');
                $worldPage->publish('Stage', 'Live');
                $worldPage->flushCache();
            }
            //2 check if continent exists
            $ContinentID = $row["ContinentID"];
            if ($continentPage = DataObject::get_one("BrowseContinentsPage", 'HiddenDataID = ' . $ContinentID)) {
                //debug::show("continent exists");
            } else {
                //create continent
                $continents = $abstractHelpPage->getDataFromTable("continents", "ContinentID = " . $ContinentID, null);
                foreach ($continents as $continentData) {
                    $continentPage = new BrowseContinentsPage();
                    $continentPage->CreateContinent($continentData, $worldPage);
                }
            }
            //3 check if country exists
            $CountryID = $row["CountryID"];
            if ($countryPage = DataObject::get_one("BrowseCountriesPage", 'HiddenDataID = ' . $CountryID)) {
                //debug::show("country exists");
            } else {
                //create Country
                $countries = $abstractHelpPage->getDataFromTable("countries", "CountryID = " . $CountryID, null);
                foreach ($countries as $countryData) {
                    $countryPage = new BrowseCountriesPage();
                    $countryPage->CreateCountry($countryData, $continentPage);
                }
            }
            //4 check if region exists
            $RegionID = $row["RegionID"];
            if ($regionPage = DataObject::get_one("BrowseRegionsPage", 'HiddenDataID = ' . $RegionID)) {
                //debug::show("region exists");
            } else {
                //create region
                $regions = $abstractHelpPage->getDataFromTable("regions", "RegionID = " . $RegionID, null);
                foreach ($regions as $regionData) {
                    $regionPage = new BrowseRegionsPage();
                    $regionPage->CreateRegion($regionData, $countryPage);
                }
            }
            if ($cityPage = DataObject::get_one("BrowseCitiesPage", 'HiddenDataID = ' . $CityID)) {
                //debug::show("city exists");
            } else {
                //create region
                $cities = $abstractHelpPage->getDataFromTable("cities", "CityID = " . $CityID, null);
                foreach ($cities as $city) {
                    $cityPage = new BrowseCitiesPage();
                    $cityPage->CreateCity($city, $regionPage);
                }
            }
        }
        return $cityPage;
    }
 public function donewlistingform($data = null, $form = null)
 {
     //add new search record here....
     if (!isset($data["NewListingAddress"])) {
         $data["NewListingAddress"] = '';
     }
     if (!isset($data["NewListingName"])) {
         $data["NewListingName"] = '';
     }
     $extension = '';
     if (Versioned::current_stage() == "Live") {
         $extension = "_Live";
     }
     if (DataObject::get_one("SiteTree", "\"SiteTree{$extension}\".\"Title\" = '" . Convert::raw2sql($data["NewListingName"]) . "'") || !$data["NewListingName"] || strlen($data["NewListingName"]) < 3) {
         $form->addErrorMessage('NewListingName', 'Sorry, but a listing with that name already exists.', "bad");
         Director::redirectBack();
         return;
     }
     $addressArray = $form->dataFieldByName("NewListingAddress")->getAddressArray();
     if ($addressArray) {
         if (GoogleMapLocationsObject::pointExists($addressArray)) {
             $form->addErrorMessage('NewListingAddress', 'This address already exists for another listing.  Please check the existing listings first to prevent double-ups OR use a more specific address.', "bad");
             Director::redirectBack();
             return;
         }
         $parentPage = BrowseCitiesPage::get_clostest_city_page($addressArray);
         if (!$parentPage) {
             $form->addErrorMessage('NewListingAddress', 'Location could not be found. ', "bad");
             Director::redirectBack();
             return;
         }
         $nextLink = $this->linkWithExtras(array("parent" => $parentPage->ID, "address" => $addressArray, "name" => $data["NewListingName"]), 'createnewbusinesslistingfrompoint');
         if (!Member::currentMember()) {
             $nextLink = RegisterAndEditDetailsPage::link_for_going_to_page_via_making_user($nextLink);
         }
         Director::redirect($nextLink);
         return;
     }
     $nextLink = $this->linkWithExtras(array("address" => $data["NewListingAddress"], "name" => $data["NewListingName"]));
     Director::redirect($this->backwardLink);
     return;
 }