Крупнейшая биржа рекламы в Телеграм
0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 2965 Просмотров
*

afon9l

  • Захожу иногда
  • 112
  • 1 / 21
Настройка convertECB.php
« : 10.08.2011, 02:34:35 »
Время 2.23, а оба работующих коневктора по цб ставят цены по вчерашнему курсу, это нормально ?

Вот к примеру один из них:

Код
<?php

if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );

class convertECB {

function convert( $amountA, $currA='', $currB='' ) {
global $mosConfig_cachepath, $mosConfig_live_site, $mosConfig_absolute_path,
$mosConfig_offset, $vendor_currency, $vmLogger;
// global $vendor_currency is DEFAULT!

if( !$currA ) {

$currA = $vendor_currency;

}

if( !$currB ) {

$currB = $GLOBALS['product_currency'];

}

// If both currency codes match, do nothing

if( $currA == $currB ) {

return $amountA;

}


# File: usd2.php, v.1.0/20010803
# Скрипт для вывода ... курса доллара, установленного ЦБР
# (c) 2001, Mikhail Turenko, http://www.turenko.net, <mikhail@turenko.net>
# строка "dd/mm/yyyy: 1USD=29.30RUR (+0.02)"

# модифицировано: Сергей Прудников 2009 для VirtuMart

# Базовый URL скрипта на cbr.ru
$scripturl = 'http://www.cbr.ru/scripts/XML_dynamic.asp';

# Начальная дата для запроса  (сегодня - 2 РґРЅСЏ)
$date_1=date('d/m/Y', time()-172800);

# Конечная дата (чтобы учитывать завтра добавьте параметр time()+86400)
$date_2=date('d/m/Y');

# Таким образом, мы получим данные либо за 2, либо за 3 последних дня.
# За 2 - если на "сегодня" курс еще не выставили, иначе - за 3

# Код валюты в архиве данных cbr.ru
$currency_code='R01235';

# URL для запроса данных
$requrl = "{$scripturl}?date_req1={$date_1}&date_req2={$date_2}&VAL_NM_RQ={$currency_code}";

#локальный файл РЅР° хосте, РІ котором РєРµС?ируется РєСѓСЂСЃ
if( is_writable($mosConfig_cachepath) ) {
$file_curse = $mosConfig_cachepath;
}
else {
$file_curse = $mosConfig_absolute_path."/media";
}
$file_curse .= "/curs_CBRF.txt";

#echo($file_curse.'<BR>');

$date_now_local = gmdate('Ymd', $now); // локальное время хостинга

if(file_exists($file_curse) && filesize( $file_curse ) > 0 ) {
$file_datestamp = date('Ymd', filemtime($file_curse));  // timestamp for the Filename
#echo(date('Ymd:i:s', filemtime($file_curse)).' -- файл сущ <BR>');
}
else {
$file_datestamp = date('Ymd', 0);
#echo(date('Ymd:i:s', 0).'-- файл НЕ сущ <BR>');
};

$date_now_local = gmdate('Ymd', time());

#echo( $date_now_local."__".$file_datestamp."__дата локальная <BR>");

if( $date_now_local > $file_datestamp ) {    //  время РєРµС?-файла больС?Рµ даты РЅР° хосте более чем РЅР° день - получить новый РёР· ЦБ
$doc = file($requrl);
$doc = implode($doc, '');

# инициализируем массив
$r = array();

# ищем <ValCurs>...</ValCurs>
if(preg_match("/<ValCurs.*?>(.*?)<\/ValCurs>/is", $doc, $m))
# а потом ищем все вхождения <Record>...</Record>
preg_match_all("/<Record(.*?)>(.*?)<\/Record>/is", $m[1], $r, PREG_SET_ORDER);

$m = array(); # его уже использовали, реинициализируем
$d = array(); # этот тоже проинициализируем

# Сканируем на предмет самых нужных цифр
for($i=0; $i<count($r); $i++) {
if(preg_match("/Date=\"(\d{2})\.(\d{2})\.(\d{4})\"/is", $r[$i][1],$m)) {
$dv = "{$m[1]}/{$m[2]}/{$m[3]}"; # Приводим дату в норм. вид
if(preg_match("/<Nominal>(.*?)<\/Nominal>.*?<Value>(.*?)<\/Value>/is", $r[$i][2], $m)) {
$m[2] = preg_replace("/,/",".",$m[2]);
$d[] = array($dv, $m[1], $m[2]);
}
}
}

$last = array_pop($d); # последний известный день
$prev = array_pop($d); # предпосл. известный день
$date = $last[0]; # отображаемая дата
$rate = sprintf("%.2f",$last[2]); # отображаемый курс
# отображаемое изменение курса, например, "+0.02"
$delta = (($last[2]>$prev[2])?"+":"").sprintf("%.2f",$last[2]-$prev[2]);

$handle1 = fopen($file_curse, "w");
#fwrite($handle1, "{$date}: 1 USD = {$rate} RUR\n"); # ({$delta})
fwrite($handle1, "{$date} {$rate}\n");
#fclose($handle);

#echo('! получили РёР· ЦБ, запиали РІ РєРµС?-файл<BR>');

}  // получили СЃ сайта ЦБ Рё записали РІ файл. иначе читаем РёР· локального файла

else {
//echo("CBRF - {$date}: 1 USD = {$rate} RUR ({$delta})<BR>");
$fp = fopen($file_curse,"r");
$userinfo = fscanf($fp, "%s %f");
list ($date, $rate) = $userinfo;
#$contents = fread($fp, filesize ($file_curse));
fclose($fp);
#echo ("РљСѓСЂСЃ РІР·СЏС‚ РёР· РєРµС?-файла <BR>");
}

#echo ("ЦБ Р Р¤ дата: {$date} РєСѓСЂСЃ:  {$rate}<BR>");
$val = round($amountA * $rate);
return $val;

}
}

?>

*

cadet

  • Захожу иногда
  • 239
  • 17 / 0
Re: Настройка convertECB.php
« Ответ #1 : 10.08.2011, 09:36:05 »
Первое что вижу - проблемы с кодировкой.
*

afon9l

  • Захожу иногда
  • 112
  • 1 / 21
Re: Настройка convertECB.php
« Ответ #2 : 10.08.2011, 10:10:54 »
Да не важно, вроде бы все работает))
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Настройка категорий в VirtueMart 3.0.9 на Joomla 3.4.3

Автор Северянин

Ответов: 0
Просмотров: 1003
Последний ответ 28.07.2015, 15:11:02
от Северянин
Настройка почты VirtueMart

Автор artemcv25

Ответов: 1
Просмотров: 1162
Последний ответ 19.03.2014, 19:25:18
от Messir
Настройка отображения товаров в VirtueMart

Автор eugenegg

Ответов: 0
Просмотров: 1527
Последний ответ 29.10.2013, 22:12:34
от eugenegg
Загрузка и настройка CSVI VirtueMart

Автор Pavel_1012

Ответов: 2
Просмотров: 697
Последний ответ 22.05.2013, 10:49:34
от Pavel_1012
Настройка Analitics Электронная торговля как?

Автор newjey

Ответов: 0
Просмотров: 734
Последний ответ 13.03.2013, 00:23:30
от newjey