Bug in function get_ecb_rate when no function curl_init (missing url part)
[fa-stable.git] / gl / includes / db / gl_db_rates.inc
index 3f28f9c96b8722db05a0ca5ef0f75918b4ae5847..0c9ae6863b5d81d572f404ddff4789bbf7c37322 100644 (file)
@@ -1,13 +1,13 @@
 <?php
 /**********************************************************************
     Copyright (C) FrontAccounting, LLC.
-       Released under the terms of the GNU Affero General Public License,
-       AGPL, as published by the Free Software Foundation, either version 
-       of the License, or (at your option) any later version.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       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 License here <http://www.gnu.org/licenses/agpl-3.0.html>.
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 //---------------------------------------------------------------------------------------------
 function get_exchange_rate($rate_id)
@@ -74,22 +74,30 @@ function delete_exchange_rate($rate_id)
 function get_ecb_rate($curr_b) 
 {
        $curr_a = get_company_pref('curr_default');
-       $ecb_filename = 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml';
+       $ecb_filename = '/stats/eurofxref/eurofxref-daily.xml';
+       $ecb_site = 'www.ecb.int';
        $contents = '';
 
        if (function_exists('curl_init'))
        {       // first check with curl as we can set short timeout;
-       $ch = curl_init();
-       curl_setopt ($ch, CURLOPT_URL, $ecb_filename);
-       curl_setopt ($ch, CURLOPT_COOKIEJAR, "cookie.txt");
-       curl_setopt ($ch, CURLOPT_HEADER, 0);
-       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
-       curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
-       curl_setopt ($ch, CURLOPT_TIMEOUT, 5);
-       $contents = curl_exec ($ch);
-       curl_close($ch);
+               $retry = 1;
+               do {
+              $ch = curl_init();
+          curl_setopt ($ch, CURLOPT_URL, 'http://'.$ecb_site.$ecb_filename);
+              curl_setopt ($ch, CURLOPT_COOKIEJAR, "cookie.txt");
+          curl_setopt ($ch, CURLOPT_HEADER, 0);
+              curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
+          curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
+              curl_setopt ($ch, CURLOPT_TIMEOUT, 3);
+          $contents = curl_exec ($ch);
+              curl_close($ch);
+                       // due to resolver bug in some curl versions (e.g. 7.15.5) 
+                       // try again for constant IP.
+                  $ecb_site="195.128.2.97";
+          } while( ($contents == '') && $retry--);
+          
        } else {
-               $handle = @fopen($ecb_filename, 'rb');
+               $handle = @fopen("http://".$ecb_site.$ecb_filename, 'rb');
                if ($handle) {
                        do 
                        {