/**
*
* @author Jacob Akulov (Яков Акулов)
* @desc Модель получения курсов валют по данным ЦБ РФ
*
*/
class Kursi {
protected $_name = 'Kursi';
protected $valutaClient;
// определяем допустимые коды валют
protected
$valutaCodes =
array('R01235'=>'USD',
'R01239'=>'EUR',
'R01035'=>'GBP',
'R01090'=>'BYR',
'R01335'=>'KZT',
'R01375'=>'CNY',
'R01720'=>'UAH'
);
//контруктор класса
public function __construct() {}
// получение курса вылют по коду
public function getValuta($code) {
self::getXML(); // получаем данные в виде XML (заносятся в объект Zend_Rest_Client, $this->valutaClient)
// проверяем допустимость кода валюты
if (!
in_array($code,
$this->
valutaCodes)) {return false;
} else {
if($this->valutaClient) {
$values = $this->valutaClient->key('Valute')->get()->Value(); // получаем значения курсов всех валют
$codes = $this->valutaClient->key('Valute')->get()->CharCode(); // получаем их коды
$currency = array_combine($codes, $values); // совемещаем все это в один масссив
return $currency[$code]; // и выдаем результата
}
else {
return false;
}
}
}
// создание клиента для обработки XML с курсами валют
private function getXML() {
// проверяем наличие кэшированной XML
self::getOldXML(); // берем данные из кэша
}
else {
self::getNewXML(); // иначе загружаем данные с сайта ЦБ РФ и кэшируем их
}
}
// получение данных с сайта ЦБ РФ и создание локального кэша
private function getNewXML() {
$val =
file_get_contents('http://www.cbr.ru/scripts/XML_daily.asp');
// читаем данные из ЦБ РФ и пишем их в кэш file_put_contents
('public/kursi/valuta-'.
date('Y-m-d').
'.xml',
$val);
// создаем REST клиента и получаем данныые
$this->
valutaClient =
new Zend_Rest_Client
('http://sitename/public/kursi/valuta-'.
date('Y-m-d').
'.xml');
}
// получение данных из кэша
private function getOldXML() {
$this->
valutaClient =
new Zend_Rest_Client
('http://sitename/public/kursi/valuta-'.
date('Y-m-d').
'.xml');
}
}