Moves geocoder into approrpiate classes.
authorStéphane Jacob <sj@m4x.org>
Sun, 19 Sep 2010 09:53:26 +0000 (11:53 +0200)
committerStéphane Jacob <sj@m4x.org>
Mon, 20 Sep 2010 07:07:59 +0000 (09:07 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
classes/address.php
classes/geocoder.php [new file with mode: 0644]
classes/gmapsgeocoder.php [moved from include/geocoding.inc.php with 84% similarity]
include/webservices/manageurs.server.inc.php
modules/admin.php
modules/payment/money/paypal.inc.php
modules/search.php
plugins/function.display_address.php

index 16ecd80..ca1a384 100644 (file)
@@ -150,7 +150,6 @@ class Address
             return true;
         }
 
-        require_once 'geocoding.inc.php';
         if ($format['requireGeocoding'] || $this->changed == 1) {
             $gmapsGeocoder = new GMapsGeocoder();
             $gmapsGeocoder->getGeocodedAddress($this);
@@ -257,7 +256,6 @@ class Address
 
         $this->format();
         if (!$this->isEmpty()) {
-            require_once 'geocoding.inc.php';
             foreach ($areas as $area) {
                 Geocoder::getAreaId($this, $area);
             }
diff --git a/classes/geocoder.php b/classes/geocoder.php
new file mode 100644 (file)
index 0000000..357891e
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+/***************************************************************************
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
+ *  http://opensource.polytechnique.org/                                   *
+ *                                                                         *
+ *  This program is free software; you can redistribute it and/or modify   *
+ *  it under the terms of the GNU General Public License as published by   *
+ *  the Free Software Foundation; either version 2 of the License, or      *
+ *  (at your option) any later version.                                    *
+ *                                                                         *
+ *  This program is distributed in the hope that it will be useful,        *
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of         *
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
+ *  GNU General Public License for more details.                           *
+ *                                                                         *
+ *  You should have received a copy of the GNU General Public License      *
+ *  along with this program; if not, write to the Free Software            *
+ *  Foundation, Inc.,                                                      *
+ *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
+ ***************************************************************************/
+
+// Interface for an address geocoder. It provides support for transforming a
+// free form address into a fully structured one.
+abstract class Geocoder {
+    // Geocodes @p the address, and returns the corresponding updated address.
+    // Unknown key-value pairs available in the input map are retained as-is.
+    abstract public function getGeocodedAddress(Address &$address);
+
+    // Cleans the address from its geocoded data
+    abstract public function stripGeocodingFromAddress(Address &$address);
+
+    // Updates geoloc_administrativeareas, geoloc_subadministrativeareas and
+    // geoloc_localities databases with new geocoded data and returns the
+    // corresponding id.
+    static public function getAreaId(Address &$address, $area)
+    {
+        static $databases = array(
+            'administrativeArea'    => 'geoloc_administrativeareas',
+            'subAdministrativeArea' => 'geoloc_subadministrativeareas',
+            'locality'              => 'geoloc_localities',
+        );
+
+        $areaName = $area . 'Name';
+        $areaId = $area . 'Id';
+        if (!is_null($address->$areaName) && isset($databases[$area])) {
+            $res = XDB::query('SELECT  id
+                                 FROM  ' . $databases[$area] . '
+                                WHERE  name = {?}',
+                              $address->$areaName);
+            if ($res->numRows() == 0) {
+                XDB::execute('INSERT INTO  ' . $databases[$area] . ' (name, country)
+                                   VALUES  ({?}, {?})',
+                             $address->$areaName, $address->countryId);
+                $address->$areaId = XDB::insertId();
+            } else {
+                $address->$areaId = $res->fetchOneCell();
+            }
+        } elseif (empty($address->$areaId)) {
+            $address->$areaId = null;
+        }
+    }
+
+    // Returns the part of the text preceeding the line with the postal code
+    // and the city name, within the limit of $limit number of lines.
+    static public function getFirstLines($text, $postalCode, $limit)
+    {
+        $textArray  = explode("\n", $text);
+        for ($i = 0; $i < count($textArray); ++$i) {
+            if ($i > $limit || strpos($textLine, $postalCode) !== false) {
+                $limit = $i;
+                break;
+            }
+        }
+        return implode("\n", array_slice($textArray, 0, $limit));
+    }
+
+    // Returns the number of non geocoded addresses for a user.
+    static public function countNonGeocoded($pid, $jobid = null, $type = Address::LINK_PROFILE)
+    {
+        $where = array();
+        if (!is_null($pid)) {
+            $where[] = XDB::format('pid = {?}', $pid);
+        }
+        if (!is_null($jobid)) {
+            $where[] = XDB::format('jobid = {?}', $jobid);
+        }
+        $where[] = XDB::format('FIND_IN_SET({?}, type) AND accuracy = 0', $type);
+        $res = XDB::query('SELECT  COUNT(*)
+                             FROM  profile_addresses
+                            WHERE  ' . implode(' AND ', $where),
+                          $pid);
+        return $res->fetchOneCell();
+    }
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+?>
similarity index 84%
rename from include/geocoding.inc.php
rename to classes/gmapsgeocoder.php
index 99c571c..8347026 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-// Interface for an address geocoder. It provides support for transforming a free
-// form address into a fully structured one.
-abstract class Geocoder {
-    // Geocodes @p the address, and returns the corresponding updated address.
-    // Unknown key-value pairs available in the input map are retained as-is.
-    abstract public function getGeocodedAddress(Address &$address);
-
-    // Cleans the address from its geocoded data
-    abstract public function stripGeocodingFromAddress(Address &$address);
-
-    // Updates geoloc_administrativeareas, geoloc_subadministrativeareas and
-    // geoloc_localities databases with new geocoded data and returns the
-    // corresponding id.
-    static public function getAreaId(Address &$address, $area)
-    {
-        static $databases = array(
-            'administrativeArea'    => 'geoloc_administrativeareas',
-            'subAdministrativeArea' => 'geoloc_subadministrativeareas',
-            'locality'              => 'geoloc_localities',
-        );
-
-        $areaName = $area . 'Name';
-        $areaId = $area . 'Id';
-        if (!is_null($address->$areaName) && isset($databases[$area])) {
-            $res = XDB::query('SELECT  id
-                                 FROM  ' . $databases[$area] . '
-                                WHERE  name = {?}',
-                              $address->$areaName);
-            if ($res->numRows() == 0) {
-                XDB::execute('INSERT INTO  ' . $databases[$area] . ' (name, country)
-                                   VALUES  ({?}, {?})',
-                             $address->$areaName, $address->countryId);
-                $address->$areaId = XDB::insertId();
-            } else {
-                $address->$areaId = $res->fetchOneCell();
-            }
-        } elseif (empty($address->$areaId)) {
-            $address->$areaId = null;
-        }
-    }
-
-    // Returns the part of the text preceeding the line with the postal code
-    // and the city name, within the limit of $limit number of lines.
-    static public function getFirstLines($text, $postalCode, $limit)
-    {
-        $textArray  = explode("\n", $text);
-        for ($i = 0; $i < count($textArray); ++$i) {
-            if ($i > $limit || strpos($textLine, $postalCode) !== false) {
-                $limit = $i;
-                break;
-            }
-        }
-        return implode("\n", array_slice($textArray, 0, $limit));
-    }
-
-    // Returns the number of non geocoded addresses for a user.
-    static public function countNonGeocoded($pid, $jobid = null, $type = Address::LINK_PROFILE)
-    {
-        $where = array();
-        if (!is_null($pid)) {
-            $where[] = XDB::format('pid = {?}', $pid);
-        }
-        if (!is_null($jobid)) {
-            $where[] = XDB::format('jobid = {?}', $jobid);
-        }
-        $where[] = XDB::format('FIND_IN_SET({?}, type) AND accuracy = 0', $type);
-        $res = XDB::query('SELECT  COUNT(*)
-                             FROM  profile_addresses
-                            WHERE  ' . implode(' AND ', $where),
-                          $pid);
-        return $res->fetchOneCell();
-    }
-}
-
 // Implementation of a Geocoder using the Google Maps API. Please refer to
 // the following links for details:
 // http://code.google.com/apis/maps/documentation/services.html#Geocoding
index 0373eb8..061a1df 100644 (file)
@@ -15,7 +15,6 @@ $error_key = "You didn't provide me with a valid cipher key...";
 // IF YOU HAVE TO MAKE SOME MODIFICATION, FIRST CONTACT:
 // admin@manageurs.com
 function get_annuaire_infos($method, $params) {
-    require 'geocoding.inc.php';
     global $error_mat, $error_key, $globals;
 
     // Password verification.
index 122492b..fe21416 100644 (file)
@@ -1435,8 +1435,6 @@ class AdminModule extends PLModule
 
                 $page->trigSuccess("L'entreprise a bien été remplacée.");
             } else {
-                require_once 'geocoding.inc.php';
-
                 $gmapsGeocoder = new GMapsGeocoder();
                 $address = array('text' => Env::t('address'));
                 $address = $gmapsGeocoder->getGeocodedAddress($address);
index be1f2d0..e7ae70d 100644 (file)
@@ -42,8 +42,6 @@ class PayPal
         // the user must come back on the site.
         global $globals, $platal;
 
-        require_once 'geocoding.inc.php';
-
         $this->urlform = 'https://' . $globals->money->paypal_site . '/cgi-bin/webscr';
         $user = S::user();
         $name = $user->lastName();
index b55348e..6ffb45c 100644 (file)
@@ -150,7 +150,6 @@ class SearchModule extends PLModule
     function handler_advanced(&$page, $model = null, $byletter = null)
     {
         global $globals;
-        require_once 'geocoding.inc.php';
         $page->assign('advanced',1);
         $page->addJsLink('jquery.autocomplete.js');
 
index 4e51c99..85a9210 100644 (file)
@@ -38,7 +38,6 @@ function display_address_isIdentity($idt, $value, $test_reverse = true)
 
 function smarty_function_display_address($param, &$smarty)
 {
-    require_once('geocoding.inc.php');
     $adr = $param['adr'];
     $txtad = $adr->text;
     if (!$txtad) {