<?php 
/**************************************************
 *                  Kursy walut                   *
 **************************************************
 * Wersja: 4.1 (SimpleXML)                        *
 * Autor: Jacek Kowalski (http://jacekk.info)     *
 *                                                *
 * Strona WWW: http://jacekk.info/scripts/kursy   *
 *                                                *
 * Utwór rozprowadzany na licencji                *
 * http://creativecommons.org/licenses/by-nc/2.5/ *
 **************************************************/

/* Kodowanie znaków ISO-8859-2 */

function convert($text) {
	// Zmień na żądane kodowanie znaków - puste pozostawia UTF-8
	$charset = 'iso-8859-2';
	
	if($charset && function_exists('iconv')) {
		return iconv('utf-8', $charset, $text);
	}
	elseif($charset && function_exists('recode_string')) {
		return recode_string('utf8...'.$charset, $text);
	}
	else
	{
		return $text;
	}
}

// Ścieżka do cache'a
$cache = dirname(__FILE__).'/kursy_cache.txt';
// Dane aktualne?
$recent = TRUE;

// Sprawdzenie możliwości zapisania kursów
if( ( !file_exists($cache) AND !is_writable(dirname($cache)) )
	OR ( file_exists($cache) AND !(is_writable($cache)) ) ) {
	$cache = '';
}
else
{
	// Dane są aktualne?
	if(@filemtime($cache)<strtotime('yesterday 12:15')) {
		$recent = FALSE;
	}
	elseif(time()>strtotime('12:15') && @filemtime($cache)<strtotime('12:15')) {
		$recent = FALSE;
	}
}

// Nie istnieje możliwość zapisania kursów lub dane są nieaktualne
if($cache == '' OR !$recent) {
	// Link do arkusza XML
	$link = file_get_contents('http://www.nbp.pl/kursy/kursya.html');
	if($link == FALSE) {
		die('<p>Nie udało się pobrać kursów walut</p>');
	}
	
	$link = '/kursy/'.substr(strstr($link, 'xml/'), '0', '19');
	
	// Pobieranie arkusza XML
	$info = file_get_contents('http://www.nbp.pl/'.$link);
	if($info == FALSE) {
		die('<p>Nie udało się pobrać kursów walut</p>');
	}
	
	// Można zapisać do cache'a
	if($cache != '') {
		// Zapamiętujemy arkusz
		file_put_contents($cache, $info);
	}
}
else
{
	// Ładujemy zapisane dane
	$info = file_get_contents($cache);
}

// Parsowanie pliku XML
$info = simplexml_load_string($info, NULL);

foreach($info->pozycja as $v) {
	$waluta[((string)$v->kod_waluty)] = array(
		'name' => convert((string)$v->nazwa_waluty),
		'ilosc' => (string)$v->przelicznik,
		'kurs' => (string)$v->kurs_sredni,
	);
}

echo $waluta['USD']['ilosc'].' USD: '.$waluta['USD']['kurs'].'<br />
'.$waluta['EUR']['ilosc'].' EUR: '.$waluta['EUR']['kurs'];
?>
<hr />
Kursy by <a href="http://jacekk.info" target="_blank">Jacek Kowalski</a>

