From 9895bd60324c621f51e698a142e4449869aef26f Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Wed, 29 Dec 2010 02:28:00 +0100 Subject: [PATCH] Adds adminarea to geoloac_subadministrativearea. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Jacob --- classes/geocoder.php | 16 +++++++++++++--- upgrade/1.0.2/07_areas.sql | 7 +++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 upgrade/1.0.2/07_areas.sql diff --git a/classes/geocoder.php b/classes/geocoder.php index 0808f4e..bec39cc 100644 --- a/classes/geocoder.php +++ b/classes/geocoder.php @@ -39,19 +39,29 @@ abstract class Geocoder { 'subAdministrativeArea' => 'geoloc_subadministrativeareas', 'locality' => 'geoloc_localities', ); + static $extras = array( + 'subAdministrativeArea' => array( + 'field' => 'administrativearea', + 'name' => 'administrativeAreaName') + ) + ); $areaName = $area . 'Name'; $areaNameLocal = $areaName . 'Local'; $areaId = $area . 'Id'; if (!is_null($address->$areaName) && isset($databases[$area])) { + $extra = (isset($extras[$area]) ? $extras[$area]['administrativeAreaName'] : false; + $res = XDB::query('SELECT id, nameLocal FROM ' . $databases[$area] . ' WHERE name = {?}', $address->$areaName); if ($res->numRows() == 0) { - XDB::execute('INSERT INTO ' . $databases[$area] . ' (name, nameLocal, country) - VALUES ({?}, {?}, {?})', - $address->$areaName, $address->$areaNameLocal, $address->countryId); + XDB::execute('INSERT INTO ' . $databases[$area] . ' (name, nameLocal, country' . + ($extra ? ', ' . $extras[$area]['field'] : '') . ') + VALUES ({?}, {?}, {?}' . ($extra ? ', {?}' : '') . ')', + $address->$areaName, $address->$areaNameLocal, $address->countryId, + ($extra ? $address->$extra : null); $address->$areaId = XDB::insertId(); } else { // XXX: remove this once all areas have both nameLocal and name. diff --git a/upgrade/1.0.2/07_areas.sql b/upgrade/1.0.2/07_areas.sql new file mode 100644 index 0000000..6a5b0a0 --- /dev/null +++ b/upgrade/1.0.2/07_areas.sql @@ -0,0 +1,7 @@ +ALTER TABLE geoloc_subadministrativeareas ADD COLUMN administrativearea VARCHAR(255) DEFAULT NULL; + + UPDATE geoloc_subadministrativeareas AS gs +INNER JOIN profile_addresses AS pa ON (gs.id = pa.subAdministrativeAreaId) + SET gs.administrativearea = pa.administrativeAreaId; + +-- vim:set syntax=mysql: -- 2.1.4