Автоматическое обновление курсов валют в интернет-магазине

#
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel, приведите файл update_currency.php полностью.
#
Re: Автоматическое обновление курсов валют в интернет-магазине
<?

/*
Файл обновления валют на текущий день по курсу ЦБ.
Внимание!
Текущей валютой должен быть установлен рубль с коэффициентом пересчета 1.
*/

// Подключаем основные классы
require_once(dirname(__FILE__) . '/' . 'main_classes.php');

$GLOBALS['kernel']->LoadModules(); # Загрузка модулей

// Инициализация CURRENT_SITE и констант
$admin = new Admin();
$admin->admin_init();

/*
Массив идентификаторов валют магазна, укажите в данном массиве
перечень валют по приведенной схеме с их идентифкаторами.
*/
$CurrenciesID = array();
$CurrenciesID['USD'] = 15;
$CurrenciesID['EUR'] = 14;

// Локаль
setlocale(LC_NUMERIC, 'POSIX');

$parser = new XMLparser();

$link = 'http://www.cbr.ru/scripts/XML_daily.asp';

function GetCurrencyByName($valute_mas)
{
   $currencies = array();
   foreach ($valute_mas as $val)
   {
      if (floatval($val['value']['Nominal'][0]['value']) >= 1)
      {
         $val['value']['Value'][0]['value'] = str_replace(',', '.', $val['value']['Value'][0]['value']);
         $val['value']['Nominal'][0]['value'] = str_replace(',', '.', $val['value']['Nominal'][0]['value']);

         if ($val['value']['Value'][0]['value'] > 0)
         {
            $key_cur = $val['value']['CharCode'][0]['value'];
            $currencies[$key_cur] = $val['value']['Value'][0]['value'] / $val['value']['Nominal'][0]['value'];
         }
      }
   }

   return $currencies;
}

if (class_exists('shop'))
{
   $Shop = new shop();

   if ($xml = file_get_contents($link))
   {
      $tags = $parser->ParseValue($xml);
      $count = count($tags['ValCurs'][0]['value']['Valute']);
      $valute = $tags['ValCurs'][0]['value']['Valute'];
      $currencies = GetCurrencyByName($valute);

      // Просматриваем все полученные курсы валют
      foreach ($CurrenciesID as $key => $val)
      {
         // Если эту валюту нужно обновлять в нашем магазине
         if (isset($currencies[$key]))
         {
            $param = array();
            $param['id'] = $val;
            $param['value_in_basic_currency'] = $currencies[$key];

            // Обновляем валюту
            $Shop->UpdateCurrency($param);
         }
      }
   }
   else
   {
      show_error_message("Не удалось открыть файл" );
   }
}
else
{
   show_error_message("Модуль магазина не найден" );
}

?>
yestravel
#
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel писал(а):
require_once(dirname(__FILE__) . '/' . 'main_classes.php');
заменить на
require_once('/здесь путь до каталога с HostCMS/' . 'main_classes.php');
#
Re: Автоматическое обновление курсов валют в интернет-магазине
Здравствуйте Наташа!
Всё никак не справимся со скриптом. Прописали путь:
require_once('/var/www/vhosts/yestravel.ru/httpdocs/' . 'main_classes.php');

в ответ:
/var/www/vhosts/yestravel.ru/httpdocs/update_currency.php: line 9: //: is a directory
/var/www/vhosts/yestravel.ru/httpdocs/update_currency.php: line 10: syntax error near unexpected token `'/var/www/vhosts/yestravel.ru/httpdocs/''
/var/www/vhosts/yestravel.ru/httpdocs/update_currency.php: line 10: `require_once('/var/www/vhosts/yestravel.ru/httpdocs/' . 'main_classes.php');
yestravel
Модератор
#
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel,
Можете прислать SSH в поддержку? Так мы будем долго гадать, что там не получается на сервере.
Модератор
#
Re: Автоматическое обновление курсов валют в интернет-магазине
yestravel,
Ответил почтой, проблема не обнаружена. Файл выполняется, в кроне импорт валют вообще не найден.
#
Re: Автоматическое обновление курсов валют в интернет-магазине
Установлена версия 5.0.
скрипт, приведенный в первом сообщении темы сохранил в папке с магазином.
При попытке ввести http://адрес_сайта/update_currency.php вывелась пустая страница.
Никакая информация не обновилась (по крайней мере цены тестовых товаров, заданный в долларах не изменились)
Для проверки даже поместил в начало скрипта вывод тестового сообщения ( echo 'Start'; ) ничего не изменилось. Что может быть?
Также есть вопрос по этому учатку кода:
/*
Массив идентификаторов валют магазна, укажите в данном массиве
перечень валют по приведенной схеме с их идентифкаторами.
*/
$CurrenciesID = array () ;
$CurrenciesID['USD'] = 15;
$CurrenciesID['EUR'] = 14;
----------------------
где могу узнать этот перечень и идентификаторы?
Модератор
#
Re: Автоматическое обновление курсов валют в интернет-магазине
vach писал(а):
где могу узнать этот перечень и идентификаторы?

Через центр администрирования из справочника валют.
#
Re: Автоматическое обновление курсов валют в интернет-магазине
Решилась проблема заменой символа который на сайте у меня отображается как знак подчеркнуто-больше => на = >  (без пробела)
в первой строке этого участка кода:

foreach ($CurrenciesID as $key => $val)
{
  if (isset ($currencies[$key]))
  {
    $param = array () ;
    $param['id'] = $val;
    $param['value_in_basic_currency'] = $currencies[$key];
    $Shop->UpdateCurrency ($param) ;
  }
}

Видимо чтото у меня было с кодировкой. (встроенный редактор форума заменяет эти символы сам)
Модератор
#
Re: Автоматическое обновление курсов валют в интернет-магазине
vach,
Код необходимо публиковать в BB-теге CODE, тогда он будет публиковаться "как есть".
Авторизация