using address parser on geoloc.org
authorPascal Corpet <pascal.corpet@m4x.org>
Sat, 11 Jun 2005 10:31:59 +0000 (10:31 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:29:12 +0000 (23:29 +0200)
git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-697

include/geoloc.inc.php
include/profil/get_adresses.inc.php
include/profil/update_adresses.inc.php
include/profil/verif_adresses.inc.php
templates/geoloc/form.address.tpl [new file with mode: 0644]
templates/profil/adresses.tpl

index 8b77bd5..ca9f369 100644 (file)
@@ -20,6 +20,7 @@
  ***************************************************************************/
 
 
+// {{{ liste les pays ou les régions d'un pays
 /** donne la liste déroulante des pays
  * @param $current pays actuellement selectionné
  */
@@ -64,5 +65,17 @@ function _geoloc_region_smarty($params){
   return geoloc_region($params['pays'], $params['region']);
 }
 $page->register_function('geoloc_region', '_geoloc_region_smarty');
+// }}}
 
+function get_address_infos($txt) {
+    $url ="http://www.geoloc.org/adressparser/address.php?txt=".urlencode(utf8_encode($txt));
+    if (!($f = @fopen($url, 'r'))) return false;
+    fgets($f);
+    $keys = explode('|',fgets($f));
+    $vals = explode('|',fgets($f));
+    $infos = array();
+    foreach ($keys as $i=>$key) if($vals[$i]) $infos[$key] = $vals[$i];
+    return $infos;
+}
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
 ?>
index 0e903e1..11ea2b2 100644 (file)
@@ -67,8 +67,9 @@ $res = $globals->xdb->iterRow(
        FIND_IN_SET('res-secondaire', statut), FIND_IN_SET('courrier', statut),
        FIND_IN_SET('active', statut), FIND_IN_SET('temporaire', statut),
        adr1, adr2, adr3, postcode, city,
-        country, region, tel, fax, pub, tel_pub
-       FROM adresses
+        a.country, region, tel, fax, pub, tel_pub,
+       gp.pays
+       FROM adresses AS a INNER JOIN geoloc_pays AS gp ON(gp.a2 = a.country)
        WHERE uid = {?} AND NOT FIND_IN_SET('pro',statut) ".$sql_order
 , Session::getInt('uid', -1)
 );
@@ -84,7 +85,7 @@ for ($i = 0; $i < $nb_adr; $i++) {
        $adresses[$adrid]['adr1'], $adresses[$adrid]['adr2'], $adresses[$adrid]['adr3'], $adresses[$adrid]['postcode'], $adresses[$adrid]['city'],
        $adresses[$adrid]['country'], $adresses[$adrid]['region'], $adresses[$adrid]['tel'], $adresses[$adrid]['fax'],
        $adresses[$adrid]['pub'],
-       $adresses[$adrid]['tel_pub'],) = $res->next();
+       $adresses[$adrid]['tel_pub'],$adresses[$adrid]['pays']) = $res->next();
   $adresses[$adrid]['nouvelle'] = 'modif';
   $adresses[$adrid]['numero_formulaire'] = -1;
 }
index 9ca73b5..7fff069 100644 (file)
@@ -34,7 +34,6 @@ foreach($adresses as $adrid => $adr){
     if ($adr["temporaire"])    $statut .= 'temporaire,';
     if (! empty($statut)) $statut = substr($statut, 0, -1);
 
-
     if ($adr["nouvelle"] == 'ajout') {
     //nouvelle adresse
       $globals->xdb->execute("INSERT INTO adresses SET
index 17b2f7a..d1db690 100644 (file)
@@ -83,6 +83,12 @@ function replace_address($i){
   replace_ifset_adr('fax', $i);
   replace_ifset_adr('pub', $i);
   replace_ifset_adr('tel_pub', $i);
+  replace_ifset_adr('txt', $i);
+  if ($GLOBALS['adresses'][$i]['txt'] && !Env::get('nochange'.$i, true)) {
+       require_once('geoloc.inc.php');
+       $new = get_address_infos($GLOBALS['adresses'][$i]['txt']);
+       $GLOBALS['adresses'][$i] = array_merge($GLOBALS['adresses'][$i], $new);
+  }
   $tab = Env::getMixed('numero_formulaire', Array());
   if($tab[$i])
     $GLOBALS['adresses'][$i]['numero_formulaire'] = $tab[$i];
diff --git a/templates/geoloc/form.address.tpl b/templates/geoloc/form.address.tpl
new file mode 100644 (file)
index 0000000..4d245bc
--- /dev/null
@@ -0,0 +1,87 @@
+    <tr>
+      <td class="colg">
+        <a name="jump_adr{$adrid}" />
+        <span class="titre">{$titre}</span>
+       <br />
+        {if $adr.nouvelle != 'new' && !$smarty.request.detail[$adrid]}
+          [<a href="{$url}&detail%5B{$adrid}%5D=1#jump_adr{$adrid}">corriger</a>]
+        {/if}
+      </td>
+      <td class="cold">
+        {if $smarty.request.detail[$adrid] neq 1}
+        <input type="hidden" name="nochange{$adrid}" value="1" />
+        <input type="hidden" name="adr1[{$adrid}]" value="{$adr.adr1}" />
+        <input type="hidden" name="adr2[{$adrid}]" value="{$adr.adr2}" />
+        <input type="hidden" name="adr3[{$adrid}]" value="{$adr.adr3}" />
+        <input type="hidden" name="postcode[{$adrid}]" value="{$adr.postcode}"/>
+        <input type="hidden" name="city[{$adrid}]" value="{$adr.city}" />
+        <input type="hidden" name="region[{$adrid}]" value="{$region.city}" />
+        <input type="hidden" name="country[{$adrid}]" value="{$adr.country}" />
+        <textarea name="txt[{$adrid}]" cols="43" rows="3" onclick="form.nochange{$adrid}.value=0;select()">
+{if $adr.adr1}{$adr.adr1}
+{/if}
+{if $adr.adr2}{$adr.adr2}
+{/if}
+{if $adr.adr3}{$adr.adr3}
+{/if}
+{if $adr.postcode || $adr.city}
+{if $adr.country eq 'US' || $adr.country eq 'CA'}
+{assign var='tmp' value="%v,\r\n%r %p"}
+{else}
+{assign var='tmp' value="%p %v"}
+{/if}
+{$tmp|replace:"%p":$adr.postcode|replace:"%v":$adr.city|replace:"%r":$adr.region}
+{/if}
+{if $adr.pays}{$adr.pays}{/if}</textarea>
+      {else}
+        <input type="text" name="adr1[{$adrid}]" size="43" maxlength="88" value="{$adr.adr1}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="colg">
+        &nbsp;
+      </td>
+      <td class="cold">
+        <input type="text" name="adr2[{$adrid}]" size="43" maxlength="88" value="{$adr.adr2}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="colg">
+        &nbsp;
+      </td>
+      <td class="cold">
+        <input type="text" name="adr3[{$adrid}]" size="43" maxlength="88" value="{$adr.adr3}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="colg">
+        <span class="titre">Code postal / Ville</span><br />
+      </td>
+      <td class="cold">
+        <input type="text" name="postcode[{$adrid}]" value="{$adr.postcode}" size="7" maxlength="18" />
+        &nbsp;
+        <input type="text" name="city[{$adrid}]" value="{$adr.city}" size="32" maxlength="78" />
+      </td>
+    </tr>
+    <tr>
+      <td class="colg">
+        <span class="titre">Pays</span>
+      </td>
+      <td class="cold">
+        <select name="country[{$adrid}]" onchange="this.form.submit();">
+          {geoloc_pays pays=$adr.country}
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <td class="colg">
+        <span class="titre">Région ou département</span><br />
+        <span class="comm">(selon pays)</span>
+      </td>
+      <td class="cold">
+        <select name="region[{$adrid}]">
+          {geoloc_region pays=$adr.country region=$adr.region}
+        </select>
+        {/if}
+      </td>
+    </tr>
index abe777b..01d5fa3 100644 (file)
@@ -50,7 +50,7 @@
     <tr>
       <td class="left">
         {if $adr.nouvelle != 'new'}
-        <input type="submit" value="La supprimer !" name="adrid_del[{$adrid}]" />
+        <a href="{$smarty.server.PHP_SELF}?old_tab={$smarty.request.old_tab}&adrid_del%5B{$adrid}%5D=1"><input type="button" value="La supprimer !" /></a>
         {/if}
         &nbsp;
       </td>
         </table>
       </td>
     </tr>
-    <tr>
-      <td class="colg">
-        <span class="titre">{if $adr.nouvelle != 'new'}Adresse n°{$smarty.section.i.index}{else}Nouvelle adresse{/if}</span><br />
-      </td>
-      <td class="cold">
-        <input type="text" name="adr1[{$adrid}]" size="43" maxlength="88" value="{$adr.adr1}" />
-      </td>
-    </tr>
-    <tr>
-      <td class="colg">
-        &nbsp;
-      </td>
-      <td class="cold">
-        <input type="text" name="adr2[{$adrid}]" size="43" maxlength="88" value="{$adr.adr2}" />
-      </td>
-    </tr>
-    <tr>
-      <td class="colg">
-        &nbsp;
-      </td>
-      <td class="cold">
-        <input type="text" name="adr3[{$adrid}]" size="43" maxlength="88" value="{$adr.adr3}" />
-      </td>
-    </tr>
-    <tr>
-      <td class="colg">
-        <span class="titre">Code postal / Ville</span><br />
-      </td>
-      <td class="cold">
-        <input type="text" name="postcode[{$adrid}]" value="{$adr.postcode}" size="7" maxlength="18" />
-        &nbsp;
-        <input type="text" name="city[{$adrid}]" value="{$adr.city}" size="32" maxlength="78" />
-      </td>
-    </tr>
-    <tr>
-      <td class="colg">
-        <span class="titre">Pays</span>
-      </td>
-      <td class="cold">
-        <select name="country[{$adrid}]" onchange="this.form.submit();">
-          {geoloc_pays pays=$adr.country}
-        </select>
-      </td>
-    </tr>
-    <tr>
-      <td class="colg">
-        <span class="titre">Région ou département</span><br />
-        <span class="comm">(selon pays)</span>
-      </td>
-      <td class="cold">
-        <select name="region[{$adrid}]">
-          {geoloc_region pays=$adr.country region=$adr.region}
-        </select>
-      </td>
-    </tr>
+    {if $adr.nouvelle != 'new'}
+    {assign var="titre" value="Adresse n°`$smarty.section.i.index`&nbsp;:"}
+    {else}
+    {assign var="titre" value="Nouvelle adresse&nbsp;:"}
+    {/if}
+    {include file="geoloc/form.address.tpl" adr=$adr titre=$titre url="`$smarty.server.PHP_SELF`?old_tab=`$smarty.request.old_tab`"}
     <tr>
       <td class="colg">
         <span class="titre">Cette adresse est :</span>