EN | CS | Přihlásit | Registrovat

Č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.2
Download cnb.zip
Ukázka ČNB
Fórum http://forum.nette.org/…arodni-banka?…
Autor Milan Matějček (matata)
Licence New BSD License

Instalace

Stáhněte archiv cnb.zip a jeho obsah si uložte dle vaší adresářové struktury např: do „app/components“. 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
  • 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

Nette\Templates

Příklad použití jako helper v šabloně Nette\Templates

boostrap.php

$session = Environment::getSession();
$session->setExpiration(15552000);//180 dní

BasePresenter.php

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 šablony

Nasledující ukázka je použití mimo Nette šablony

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

stačí za url zadat ?m=eur a vse se přepočítá a zformátuje

if(!isset($_GET['m']))
$_GET['m']=null;

$cnb =new Cnb($_GET['m']);//Použití bez Nette
//$cnb =new NCnb($_GET['m']);//Použití s Nette
//nebo $cnb =new CnbHistory($_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

Pokud někdo neprojeví zájem, tak se na tom bude dělat, až budu chtít.

  • změnit cache soubor, aby stejné informace byli předávány referencí tj. Cnb::$defaultFor­mat.
  • stahování předchozích informací zda kurz vzrostl, se zmenšil nebo nezměnil, jako je na hlavní stránce seznamu.

Hisrotie

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::getUsingRa­ting()
  • 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

Login to submit a comment