Pracuje se na přepsání do Nette 2.0 stable, hotovo z 60%
ČNB – aktuální kurzovní lístek
Pomocí třídy Cnb, skript napsaný v PHP, můžete stáhnout libovolnou měnu a nechat ji na jakoukoliv přepočítat. Zároveň je tato třída komplexním řešením pro eshop.
| Verze | 1.8.4 (6.1.2011) stable (php >= 5.2.3) – cnb.zip |
|---|---|
| Verze 2 | 2.3 (14.1.2011) devel (pracuje s sqLite3, php >= 5.3) – github |
| Ukázka | ČNB |
| Fórum | http://forum.nette.org/…arodni-banka?… |
| Autor | Milan Matějček (matata) |
| Licence | New BSD License |
| Vývoj od | 3/2009 |
Instalace
Stáhněte archiv exchange.zip a jeho obsah si uložte dle vaší adresářové struktury např: do „/libs“. V archivu je soubor EXAMPLE.php, v něm je ukázka použití.
Popis co umí
- práce se session (pouze ve spolupraci s Nette) nativne ukládá poslední použitou měnu a zobrazení s dph nebo bez
- lze použít i pro zahraniční e-shop, protože nemusí využivat kourunu českou
- nezáleží na používání velikosti písma při definování měny např:(EUR, eur, eUr)
- metoda format() upravý měnu podle uživatelsky definované předlohy, výsledek tvoří validní UTF-8, tzn: usd->$1 000.00, eur->€1.000,00, czk->1 000 Kč, vše lze měnit
- je možné použít i samostatné formátovní a nic nepřepočítávat
- CnbFile ukládá si jednu zálohu, kdyby došlo k špatnému stažení z ČNB tak si načte předchozí hodnoty
- vrací datum/timestamp posleslední aktualizace podle stáří souboru
- stahuje všechny dostupné měny na cnb.cz cca 160 (némá vliv na výkonnost)
- podpora zobrazení cen s dph
- korekcre kurzu, tzn. lze procentuelně zvednout kurz, či snížit
- samozřejmě umí vypisovat i jenom kurz avšak musíte si třídu podědit a upravit
- popisek jak si třídu upravit k obrazu svému
- v souboru NCnb extends si zvolte CnbFile nebo CnbDb, výchozí je CnbFile – ukládání do souboru
Nette\Templates
Příklad použití jako helper v šabloně Nette\Templates
boostrap.php
$session = Environment::getSession();
$session->setExpiration(15552000);//180 dní
BasePresenter.php
use Exchange\CnbNette;
public function startUp()
{
parent::startUp();
//curr a dph, jsou názvy parametru v url, ?curr=eur&dph=0
//stačí provést Copy/Paste
CnbNette::register('dph'/*true rovnou zobrazuje ceny s dph*/);
}
default.phtml
{!$a=10|currency} //10 Kč
<br/>
{*{!$a|vat} funguje pouze když je první parametr CnbNette::register() false //12 Kč - cena s dph, defaultně 20%*}
<br/>
{!$currency} // proměnná pro url = curr
<br/>
{!$vat} // proměnná pro url = dph
//další možnosti formátovaní
{!$a|currency:eur:usd} //převede eura na dolary a zformatuje: $14.71
{!$a|currency:eur:usd:1.1} //to samé jen se zvedne cena o 10% třeba daň :) "kamarád stát"
//vstupní parametry helperu currency jsou stejné jako pro metodu format()
v url pro viditelné změny stačí přidat ?curr=usd&dph=1
mimo Nette
Nasledující ukázka je použití mimo Nette šablony
Používate-li Nette nezapomeňte, jinak mužete následující kroky přeskočit.
Environment::loadConfig();
a doporučuji nastavit expiraci cookie a spuštení session které třída také využívá
$session = Environment::getSession();
$session->setExpiration(15552000);//180 dní
if (!$session->isStarted())
$session->start();
kódy jako czk, rub, eur, usd jsou vzaty z kurzovního lístku na url Cnb::CNB_LIST
a teď to zajmavé
stačí za url zadat ?m=eur a vse se přepočítá a zformátuje
Use Exchange\CnbFile;
if(!isset($_GET['m']))
$_GET['m']=null;
$cnb =new CnbFile($_GET['m']);//Použití bez Nette
//$cnb =new NCnb($_GET['m']);//Použití s Nette
//nebo $cnb =new CnbDb($_GET['m'], 30, 12, 2000);//budete pracovat s kurzem danného data
echo $cnb->format(10);//10 Kč
echo $cnb->format(10, 'eur', 'usd');//převede 10 eur na dolary a vrati cca $1.56
echo $cnb->getDate('Y-m-d');//vrátí datum posledního stažení kurzovního lístku
var_dump( $cnb->getAllCode() );//všechny dostupné měny a jejich vlastnosti se kterými můžete pracovat
Budoucnost
- vytváření grafů
- lepší práce s historií
- lepší přepínání do historie
- lepší výpočet pohybu kurzu
- rychlejší??
- CnbDb nyní umí vše co 1.8.4 + historii
Historie
2.3)
- při CnbDb probíhaly zbytečné dotazy
- při CnbDb nefunchovala korekce měn
- nyní pevně fixováno na SqLite3, kvuli registrované metodě CnbDb::correction
- je možné udělat stahování z jakékoliv banky a přepočty budou fungovat
2.2)
- přidáno připojení přes proxy viz Cnb::$proxyName
- drobné úpravy v přehlednosti kódu
- změněn namespace z Cnb na Exchange
2.1)
- fix: chyba s duplicitami
- upravena CnbFile
- upraveny namespace
2.0)
- přepis pro PHP 5.3 využití sqLite3
1.8.4)
- opraveno stahování duplicitních měn
- tímto vývoj pro PHP 5.2 končí
1.8.3)
- byla odstraněna metoda getUsingRate() byla totožná s metodou Rate() v šablone se $useRate nezměnila
- možnost zakázat stahování Cnb::CNB_LIST2 pomoci Cnb::$loadBoth = false;
- Cnb::getAllCode() možnost sežadit podle kódu měny
- Cnb::getRating() vložíte-li false načte všechny stažené měny
- kód měny se měnil podle velikosti písma nyní je UPPER, pokud chcete aby se nadále měníl použijte $cnb->getSymbol();
1.8.2)
- vylepšena metoda getElement2Cache()
- vylepšena třída CnbNette její registrace
- instance template už není potřeba vkládat při registraci
- přidána statická metoda getVersion()
1.8.1)
- upravena metoda na tvorbu cache souboru
1.8)
- fix: nastavení dph zlobilo, špatně se ukldalo do session
- fix: CnbHistory
- CnbNette do template přibyli dvě nové proměnné, $useRate, $globalVat
- nová metoda Cnb::getUsingRating()
- cache soubor vytvářen jako statický
- defaultně vyplněný parametr pro měny v CnbNette
1.7.2)
- rychlejší výpočet ratingu
- odstraněna metoda divisionRate()
1.7.1)
- kontrola proti znovunačteni třídy v cache
1.7)
- možnost přetěžování parametrů ukládaných do cache souboru
- změna tříd, nyní Cnb použití bez Nette a NCnb s Nette, pro šablony viz ukázka výše
1.6.1)
- ošetření zda je načtená curl extension
1.6)
- kosmetické úpravy kodu
- špatně se načítala turecká měna
- zmenšení cache souboru na disku o více jak 50%
1.5.3)
- podstatné zrychlení metod format() a change()
- aj. kosmetické úpravy
1.5.2)
- statická třída určená jen pro Nette, CnbNette
1.5.1)
- popisky v angličtině
- příklady
1.5)
- podpora zobrazování cen s dph i bez dph
1.4)
- trošku pozměněná struktura souborů na disku
- nové stahovaní historie s ukládaním do databáze
1.3)
- nová metoda __call, pro rychlejši přístup k informacím
- odstraněna metoda defineMoney() nahrazena getRating()
- možnost stažení staršího kurzu, použijte třídu CnbHistory
- nově se ukláda id kurzu vydaneho za danný rok a datum
- historie má jedno omezení, tj nestahuje Cnb::CNB_LIST2 těchto měn se nevede historie
1.2)
- metoda format(), kdyz druhý parametr je TRUE, měna se nepřepočítá jen zformátuje
- fix: opravena možnost korekce měn
- vlastnosti static převedeny na dynamicke aby šli děděním měnit
- funkčnost i bez Nette avšak přijdete o ukládani do cookie, třída Cnb s Nette NCnb
- fix: opraveno načítaní přes CUrl
1.1)
- stahuje kompletně celý kurzovní lístek a načte se online pouze přepočet který bude potřeba
- tzn nemusíte přemýšlet nad tím jaké všechny měny budete potřebovat
- všechny dostupné měny získáte pomocí metody getAllCode()
- vylepšená metoda format(), nyní si lze nastavit z čeho na co přepocítat a zformatuje podle nastavení
1.0)
- nová metoda format(), která formátuje každou měnu samostatně, tzn máte czk → 15 365 Kč, usd → $1,955.35, gbp → £1 568.45
0.9.1)
- vnitřní úpravy bez vlivu na funkčnost
0.9)
- přidán helper pro šablony na úpravu formátu čísla, vycházel jsem z Helper currency
Připojené soubory
- cnb.zip 18 kB
- exchange.zip 22 kB
