I18n.php
[Pman.Core] / I18n.php
index 311ba97..9d403d9 100644 (file)
--- a/I18n.php
+++ b/I18n.php
@@ -116,31 +116,48 @@ class Pman_Core_I18n extends Pman
         
         switch($s) {
             case 'Lang':
+                 
+                
                 $i->ltype = 'l';
                 $i->applyFilters($_REQUEST, $this->authUser, $this);
-                $this->jdata($i->toTransList('l',  $lbits[0]));
+                $this->jdata($i->toTransList('l',  implode('_',$lbits)));
                 break;
 
             case 'Country':
                 $i->ltype = 'c';
                 $i->applyFilters($_REQUEST, $this->authUser, $this);
-                $this->jdata($i->toTransList('c',  $lbits[0]));
+                $this->jdata($i->toTransList('c',  implode('_',$lbits)));
                
                 break;
                 
             case 'Currency':
                 $i->ltype = 'm';
                 $i->applyFilters($_REQUEST, $this->authUser, $this);
-                $this->jdata($i->toTransList('m',  $lbits[0]));
+                $this->jdata($i->toTransList('m',  implode('_',$lbits)));
                 break;
             
             case 'Timezone':
                 $ar = DateTimeZone::listAbbreviations();
                 $ret = array();
+                $tza = array();
                 foreach($ar as $tl => $sar) {
                     foreach($sar as $tz) {
-                        $ret[] = array('tz' => $tz['timezone_id']);
+                        $tza[]  = $tz['timezone_id'];
+                    
+                    }
+                }
+                $tza= array_unique($tza);
+                sort($tza);
+                foreach($tza as $tz) {
+                    //filtering..
+                    if (empty($_REQUEST['q']) ||
+                            0 === strcasecmp(
+                                    substr($tz,0, strlen($_REQUEST['q'])),
+                                    $_REQUEST['q'])
+                    ) {
+                        $ret[] = array('tz' => $tz);
                     }
+                    
                 }
                 $this->jdata($ret);
                 
@@ -152,8 +169,9 @@ class Pman_Core_I18n extends Pman
         if (!empty($_REQUEST['debug'])) {
             DB_DataObject::debugLevel(1);
         }
+        
         $i = DB_DataObject::Factory('I18n');
-        $i->buildDb();
+        $i->buildDB();
       
        
         $i = DB_DataObject::Factory('I18n');
@@ -163,7 +181,8 @@ class Pman_Core_I18n extends Pman
         $ar = array();
         foreach($langs as $lang)
         {
-            $rlang = array_shift(explode('_', strtoupper($lang)));
+            //$rlang = array_shift(explode('_', strtoupper($lang)));
+            $rlang = array_shift(explode('_', $lang));
             
             $ar[$lang] = array();
             $i = DB_DataObject::Factory('I18n');
@@ -187,7 +206,7 @@ class Pman_Core_I18n extends Pman
      /**
      * translate (used by database building);
      * usage :
-     * require_once 'Pman/Core/I18N.php';
+     * require_once 'Pman/Core/I18n.php';
      * $x = new Pman_Core_I18N();
      * $x->translate($this->authuser, 'c', 'US');
      * @param au - auth User
@@ -268,8 +287,11 @@ class Pman_Core_I18n extends Pman
         }
         $target = ini_get('session.save_path').'/eurofxref-daily.xml';
         if (!file_exists($target) || filemtime($target) < (time() - 60*60*24)) {
-            $f = file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
+            // this may fail...
+            $f = @file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
             if (!strlen($f)) {
+                $target = dirname(__FILE__).'eurofxref-daily.xml';
+                
                 return false;
             }
             file_put_contents($target,$f);