-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate_currency.php
63 lines (56 loc) · 1.62 KB
/
update_currency.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
require_once('api/Fivecms.php');
$fivecms = new Fivecms();
/*
* Обновление курса валют по расписанию
* #!/bin/bash
* wget --output-document=/dev/null http://site.ru/update_currency.php 2>&1
*/
class ExchangeRatesCBRF
{
var $rates;
function __construct($date = null)
{
$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL");
if (!isset($date)) $date = date("Y-m-d");
$curs = $client->GetCursOnDate(array("On_date" => $date));
$this->rates = new SimpleXMLElement($curs->GetCursOnDateResult->any);
}
function GetRate ($code)
{
//Этот метод получает в качестве параметра цифровой или буквенный код валюты и возвращает ее курс
$code1 = (int)$code;
if ($code1!=0)
{
$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/Vcode[.='.$code.']/parent::*');
}
else
{
$result = $this->rates->xpath('ValuteData/ValuteCursOnDate/VchCode[.="'.$code.'"]/parent::*');
}
if (!$result)
{
return false;
}
else
{
$vc = (float)$result[0]->Vcurs;
$vn = (int)$result[0]->Vnom;
return ($vc/$vn);
}
}
}
$rates = new ExchangeRatesCBRF();
$currencies = $fivecms->money->get_currencies();
$currency = $fivecms->money->get_currency();
foreach($currencies as $cu) {
if($cu->id != $currency->id) {
$value = $rates->GetRate($cu->code);
// echo $cu->code.' = '.$value;
// Обновляем валюту, если курс поменялся.
if($cu->rate_to != $value) {
$fivecms->money->update_currency($cu->id, array('rate_to'=>$value));
}
}
}
?>