]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib/lib.php
Merge branch 'place-in-addressdetails' of https://github.com/lonvia/Nominatim
[nominatim.git] / lib / lib.php
index b2f85ca2a4f1f721c31ecf793ec0cc0b1714dc9c..afcc02eff186f78d5579a4b5136e935edf8b37df 100644 (file)
        }
 
 
-       function getPreferredLanguages()
+       function getPreferredLanguages($sLangString=false)
        {
-               // If we have been provided the value in $_GET it overrides browser value
-               if (isset($_GET['accept-language']) && $_GET['accept-language'])
+               if (!$sLangString)
                {
-                       $_SERVER["HTTP_ACCEPT_LANGUAGE"] = $_GET['accept-language'];
+                       // If we have been provided the value in $_GET it overrides browser value
+                       if (isset($_GET['accept-language']) && $_GET['accept-language'])
+                       {
+                               $_SERVER["HTTP_ACCEPT_LANGUAGE"] = $_GET['accept-language'];
+                               $sLangString = $_GET['accept-language'];
+                       }
+                       else if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
+                       {
+                               $sLangString = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
+                       }
                }
 
                $aLanguages = array();
-               if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
+               if ($sLangString)
                {
-                       if (preg_match_all('/(([a-z]{1,8})(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $aLanguagesParse, PREG_SET_ORDER))
+                       if (preg_match_all('/(([a-z]{1,8})(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $sLangString, $aLanguagesParse, PREG_SET_ORDER))
                        {
                                foreach($aLanguagesParse as $iLang => $aLanguage)
                                {
 
                if (sizeof($aNearPostcodes))
                {
-                       return array(array('lat' => $aNearPostcodes[0]['lat'], 'lon' => $aNearPostcodes[0]['lon'], 'radius' => 0.005));
+                       $aPostcodes = array();
+                       foreach($aNearPostcodes as $aPostcode)
+                       {
+                               $aPostcodes[] = array('lat' => $aPostcode['lat'], 'lon' => $aPostcode['lon'], 'radius' => 0.005);
+                       }
+
+                       return $aPostcodes;
                }
 
                return false;
                        {
                                $sTypeLabel = strtolower(isset($aTypeLabel['simplelabel'])?$aTypeLabel['simplelabel']:$aTypeLabel['label']);
                                $sTypeLabel = str_replace(' ','_',$sTypeLabel);
-                               if (!isset($aAddress[$sTypeLabel]) || (isset($aFallback[$sTypeLabel]) && $aFallback[$sTypeLabel]))
+                               if (!isset($aAddress[$sTypeLabel]) || (isset($aFallback[$sTypeLabel]) && $aFallback[$sTypeLabel]) || $aLine['class'] == 'place')
                                {
                                        $aAddress[$sTypeLabel] = $aLine['localname']?$aLine['localname']:$aLine['housenumber'];
                                }