Перейти к содержимому


Xml Латвийского Банка


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Гость_Владимир_*

Гость_Владимир_*
  • Гости

Отправлено 21 апреля 2011 - 14:50

Добрый день!

Во первых хочу поблагодарить за столь простой и востребованный модуль!

У меня есть одна небольшая задачка, которая думаю труда совершенно не составит.

Нужно добавить курс валют центрального банка Латвии.
Описание XML файла тут: http://www.bank.lv/e...a-in-xml-format

Вкратце описание XML:
XML файл находится по адресу: http://www.bank.lv/vk/xml.xml
Чтобы получить курс валют за предыдущие даты, нужно ввести ссылку следующего формата: http://www.bank.lv/v...l?date=YYYYMMDD

Вы можете это реализовать? Заодно и в компонент добавится ещё один банк.

#2 admin

admin

    Администратор

  • Администраторы
  • 377 сообщений

Отправлено 21 апреля 2011 - 21:49

В папке models создать файл lv.class.php
<?php
/**
 * @author      Darang
 * @date        21-Apr-2011
 * @copyright   (c)2011 JExt.biz
 */

// no direct access
defined ( '_JEXEC' ) or die ( 'Restricted access' );

/**
 * Official exchange rates of the National bank of Latvia
 */
class currency_data_lv extends currency_data {
	
	function __construct() {
		parent::__construct ();
		$this->url = "http://www.bank.lv/vk/xml.xml?date=";
		$this->bank_name = "ЦБЛ";
		$this->bank_url = "http://www.bank.lv";
		$this->currency_name = "лат";
		$this->date_format = 'Ymd';
	}
	
	function get_array($xml, $day = '', $replace_currency_array) {

		// Handle no data received error
		if (! isset ( $xml->document->Currencies )) {
			$error ['error'] = 1;
			return $error;
		}
		
		// Save currencies' rates in an associative array indexed by currency 3 char code
		$rates = array (); // array to store currencies exchange rates

		$rates ['date'] = $xml->document->Date[0]->data ();
		$data = $xml->document->Currencies[0]->Currency;

		foreach ( $data as $dt ) {
			$code = $dt->ID [0]->data ();
			// Store data for selected by user currencies only, if they are set
			if (empty ( $this->currencies ) || in_array ( $code, $this->currencies )) {
				$rates ['currency'] [$code] ['numcode'] = $dt->ID [0]->data (); // num code
				$rates ['currency'] [$code] ['scale'] = $dt->Units [0]->data (); // units
				// Set currency name (array with replacement rules will be searched for the ISO code)
				$rates ['currency'] [$code] ['name'] = parent::replace_currency_name ( $dt->ID [0]->data (), $code, $replace_currency_array );
				$rates ['currency'] [$code] ['rate'] = $dt->Rate [0]->data (); // exchange rate
			}
		}
		
		// Save additional info (only one time)
		if ($day == 'today' || $this->before_flag == FALSE) {
			$rates ['info'] = array ("bank_name" => $this->bank_name, "bank_url" => $this->bank_url, "currency_name" => $this->currency_name );
		}
		
		return $rates;
	}
	
    /**
     * Returns URL for receiving XML data file
     *
     * @param   string  Date
     * @return  string  URL
     */
	public function getUrl($date = "") {
		
		if (strlen ( $date ) > 1) {
			$url = $this->url . $date;
		} else {
			$url = $this->url.date($this->date_format,time());
		}
		return $url;
	}
}

в mod_jextcurrency.xml в секцию source_class добавить
<option value="lv">PLG_JEXTCURRENCY_SOURCE_OPTION_BANKLATVII</option>

PLG_JEXTCURRENCY_SOURCE_OPTION_BANKLATVII в языковом файле для модуля можете задавать любое значение

#3 Гость_Владимир_*

Гость_Владимир_*
  • Гости

Отправлено 22 апреля 2011 - 09:47

Огромное спасибо. Ваша поддержка впечатляет!!!
Один вопрос - не показывается разница курса валюты с предыдущим днем. Так и должно быть?

#4 admin

admin

    Администратор

  • Администраторы
  • 377 сообщений

Отправлено 22 апреля 2011 - 10:18

у меня показывалась, если возможно ссылку может что то упустил

#5 admin

admin

    Администратор

  • Администраторы
  • 377 сообщений

Отправлено 22 апреля 2011 - 15:57

просто значение курсов не менялись, поэтому одинаковые значение. посмотрите до понедельника, вторника. на выходных курсы обычно не меняются, поэтому так и выходит

#6 sass

sass

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 23 апреля 2011 - 10:25

Спасибо!
Извиняюсь за беспокойство.