Здравствуйте, други и подруги !
Сегодня покажу небольшой фикс, который позволяет обновлять курс с сайта cbr.ru - тоесть центрального банка РФ для версий ос 2.3, без лишней теории переходим к делу:
открываем файлик, который находим по адресу admin/model/localisation/currency.php, там нас интересует функция:
и заменяем на (уже написанную мастером) вот эту:
сохраняем, заходим на главную панель в админке и проверяем обновленные курсы валют, приятного пользования, жмякаем лойс, если понравилось.
Сегодня покажу небольшой фикс, который позволяет обновлять курс с сайта cbr.ru - тоесть центрального банка РФ для версий ос 2.3, без лишней теории переходим к делу:
открываем файлик, который находим по адресу admin/model/localisation/currency.php, там нас интересует функция:
PHP:
public function refresh($force = false) {
$data = array();
if ($force) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
} else {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" . $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
}
foreach ($query->rows as $result) {
$data[] = $this->config->get('config_currency') . $result['code'] . '=X';
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=' . implode(',', $data) . '&f=sl1&e=.csv');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$content = curl_exec($curl);
curl_close($curl);
$lines = explode("\n", trim($content));
foreach ($lines as $line) {
$currency = utf8_substr($line, 4, 3);
$value = utf8_substr($line, 11, 6);
if ((float)$value) {
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($currency) . "'");
}
}
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");
$this->cache->delete('currency');
}
PHP:
public function refresh($force = false) {
$data = array();
$query = $this->db->query("SELECT date_modified FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
if ($query->num_rows) {
foreach ($query->rows as $result) {
if ($result['date_modified']) {
$last_mod = date('Y-m-d', strtotime($result['date_modified']));
if ($last_mod == date('Y-m-d')) {
return true;
}
}
}
}
$codes = array();
$xml = new DOMDocument();
$url = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=' . date('d.m.Y');
if (@$xml->load($url)) {
$root = $xml->documentElement;
$items = $root->getElementsByTagName('Valute');
foreach ($items as $item) {
$code = $item->getElementsByTagName('CharCode')->item(0)->nodeValue;
$curs = $item->getElementsByTagName('Value')->item(0)->nodeValue;
$codes[] = $code;
$data[$code] = floatval(str_replace(',', '.', $curs));
}
$query = null;
$query = $this->db->query("SELECT code FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
foreach ($query->rows as $result) {
if (in_array($result['code'], $codes)) {
if ($data[$result['code']]) {
$new_val = 1 / (float)$data[$result['code']];
$this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$new_val . "', date_modified = '" . $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($result['code']) . "'");
}
}
}
}
$this->cache->delete('currency');
}