| Current Path : /var/www/homesaver/www/bitrix/modules/asd.currencyrate/ |
| Current File : /var/www/homesaver/www/bitrix/modules/asd.currencyrate/include.php |
<?php
//http://dev.1c-bitrix.ru/community/webdev/group/78/blog/1657/
IncludeModuleLangFile(__FILE__);
class CASDcurrencyrate
{
public static function OnAdminListDisplayHandler(&$list)
{
if ($GLOBALS['APPLICATION']->GetCurPage()=='/bitrix/admin/currencies_rates.php') {
$list->context->items[-2] = array(
'ICON' => 'btn_refresh',
'TEXT' => GetMessage('ASD_ACTION_GET'),
'TITLE' => GetMessage('ASD_ACTION_GET_TITLE'),
'LINK' => $GLOBALS['APPLICATION']->GetCurPageParam('asd_get_rate=Y', array('mode')),
);
$list->context->items[-1] = array('SEPARATOR' => 1);
ksort($list->context->items);
}
}
public static function OnBeforePrologHandler()
{
if ($GLOBALS['APPLICATION']->GetCurPage()=='/bitrix/admin/currencies_rates.php' && $_REQUEST['asd_get_rate']=='Y' &&
$GLOBALS['APPLICATION']->GetGroupRight('currency')>'D'
) {
self::UpdateRates(false);
LocalRedirect($GLOBALS['APPLICATION']->GetCurPageParam('', array('asd_get_rate')));
}
}
public static function UpdateRates($bAgent=true)
{
if (CModule::IncludeModule('currency')) {
$arCurr = array();
$rsRate = CCurrency::GetList($by='currency', $order='asc');
while ($arRate = $rsRate->Fetch()) {
if ($arRate['CURRENCY']!='RUB' && $arRate['CURRENCY']!='RUR') {
$arCurr[] = $arRate['CURRENCY'];
}
}
if (!empty($arCurr)) {
$percent = COption::GetOptionString('asd.currencyrate', 'percent');
$useProxy = COption::GetOptionString('asd.currencyrate', 'use_proxy', 2) === 'Y';
$useProxy = false;
$percent = str_replace(',', '.', $percent);
$percent = round((float)$percent, 2);
$domain = $useProxy ? 'cbr.d-it.ru' : 'www.cbr.ru';
$queryStr = 'date_req='.date('d.m.Y');
$url = 'https://' . $domain . '/scripts/XML_daily.asp?' . $queryStr;
// www.cbr.ru/scripts/XML_daily.asp?date_req=21.01.2015
$http = new \Bitrix\Main\Web\HttpClient;
$strQueryText = $http->get($url);
$adminDate = date($GLOBALS['DB']->DateFormatToPHP(CLang::GetDateFormat('SHORT')));
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/classes/general/xml.php');
$objXML = new CDataXML();
if ($objXML->LoadString($strQueryText)) {
$arData = $objXML->GetArray();
if (!empty($arData) && is_array($arData)) {
foreach ($arData['ValCurs']['#']['Valute'] as $arC) {
if (in_array($arC["#"]["CharCode"][0]["#"], $arCurr)) {
$rate = doubleval(str_replace(',', '.', $arC['#']['Value'][0]['#']));
$val = $rate + (($rate * $percent) / 100);
$arNewRate = array(
'CURRENCY' => $arC["#"]["CharCode"][0]["#"],
'RATE_CNT' => intval($arC['#']['Nominal'][0]['#']),
'RATE' => $val,
'DATE_RATE' => $adminDate,
);
if (!CCurrencyRates::GetList($by='id', $order='desc', $arNewRate)->Fetch()) {
CCurrencyRates::Add($arNewRate);
}
}
}
}
}
}
}
if ($bAgent) {
return 'CASDcurrencyrate::UpdateRates();';
}
}
}