/ Gists / Exchange rates solution (AMI)
On gists

Exchange rates solution (AMI)

PHP Libs PHP

ExchangeRatesFetcher.php Raw #

<?php
/**
 * Abstraktni trida pro stahovani kurzovnich listku ze stranek bank
 *
 * @date 25-02-2008
 * @version 1.0
 *
 */
abstract class ExchangeRatesFetcher
{
	/**
	 * URL, odkud se kurzy stahuji
	 * 
	 * @var string	 	 
	 */
	protected $url;
	
	/**
	 * kod banky 
	 * 
	 * @var string	 	 
	 */
	protected $bank_code;

	/**
	 * seznam kodu men, ktere chceme stahovat
	 * 
	 * @var array
	 */	 	 	 	
	protected $important_currencies = array('CAD', 'DKK', 'EUR', 'GBP', 'HUF', 'CHF', 'JPY', 'NOK', 'PLN', 'SEK', 'SKK', 'USD', 'RON', 'RUB', 'AUD');
	
	/**
	 * pole stazenych hodnot kurzu
	 * 
	 * @var array	 	 
	 */
	protected $exchange_rates = array();
	
	/**
	 * konstruktor - nastaveni vychozich hodnot
	 * 
	 * @param  string  URL, odkud se kurzy stahuji
	 */
	public function __construct($url)
	{
		$this->url = $url;
	}
	
	/**
	 * funkce vraci pole stazenych kurzu (vhodne napr. pro testovaci vypisy)
	 * 
	 * @return array/false pokud nejsou stazene kurzy vraci false, jinak vraci pole stazenych kurzu 
	 */	 	
	public function getExchangeRates()
	{
		if (is_array($this->exchange_rates)) {
			return $this->exchange_rates;
		}
		else {
			return false;
		}
	}

	/**
	 * funkce vraci kod banky
	 * 
	 * @return string 
	 */	 	
	public function getBankCode()
	{
		return $this->bank_code;
	}
	
	/**
	 * Funkce pro stahnuti kurzovniho listku
	 * 	 	
	 * Funkce stahne kurzovni listek a ulozi ho do interni promenne $exchange_rates
	 */	 	  	 	
	abstract public function fetch();
}

ExchangeRatesFetcherCitibank.php Raw #

<?php
/**
 * trida vyuziva tridu ExchangeRatesFetcher
 */   
require_once 'ExchangeRatesFetcher.php';

/**
 * trida vyuziva tridu ExchangeRatesInfo
 */   
require_once 'ExchangeRatesInfo.php';

/**
 * Trida pro stahovani kurzovnich listku ze stranek Citibank
 *
 * @date 27-02-2008
 * @version 1.0
 */
class ExchangeRatesFetcherCitibank extends ExchangeRatesFetcher
{
	/**
	 * konstruktor - nastaveni kodu banky 
	 */
	public function __construct($url)
	{
		parent::__construct($url);
		$this->bank_code = 'CBK';
	}

	/**
	 * Funkce pro stahnuti kurzovniho listku
	 * 	 	
	 * Funkce stahne kurzovni listek a ulozi ho do interni promenne $exchange_rates
	 *
	 * @throws  object  Exception
	 */	 	  	 	
	public function fetch()
	{
		$file = file_get_contents($this->url);
		if (!$file) {
			throw new Exception('Soubor s kurzovym listkem Citibank se nepodarilo nacist');
		}

		preg_match('/<table border="0" cellpadding="3" cellspacing="0" class="rates">(.*)<\/table>/isU', $file, $match);
		
		preg_match_all('/<td class="firstcoll" style="text-align:left;">(.*)<\/tr>/isU', $match[1], $rate_lines);
		
		$row = array();
		$i = 0;
		foreach ($rate_lines[1] as $rate_line) {
			preg_match_all('/<td[^>]*>(.*)<\/td>/isU', $rate_line, $row[$i]);
			$i++;
		}

		$rate_lines = array();
		
		$i = 0;
		foreach ($row as $r) {						
			foreach($r[1] as $val) {	
				$rate_lines[$i][] = trim(strip_tags($val));
			}
			$i++;
		}

		foreach ($rate_lines as $row) {
			$name = $row[0]; 
			if (in_array($name, $this->important_currencies)) {
				$exchange_rate_info = new ExchangeRateInfo($name, $row[1], (float) $row[2], (float) $row[3]);
				$this->exchange_rates[$name] = $exchange_rate_info;
			}
		}
	}

}

ExchangeRatesFetcherCs.php Raw #

<?php
/**
 * trida vyuziva tridu ExchangeRatesFetcher
 */   
require_once 'ExchangeRatesFetcher.php';

/**
 * trida vyuziva tridu ExchangeRatesInfo
 */   
require_once 'ExchangeRatesInfo.php';

/**
 * Trida pro stahovani kurzovnich listku ze stranek Ceske sporitelny
 *
 * @date 27-02-2008
 * @version 1.0
 */
class ExchangeRatesFetcherCs extends ExchangeRatesFetcher
{
	/**
	 * konstruktor - nastaveni kodu banky 
	 */
	public function __construct($url)
	{
		parent::__construct($url);
		$this->bank_code = 'CS';
	}

	/**
	 * Funkce pro stahnuti kurzovniho listku
	 * 	 	
	 * Funkce stahne kurzovni listek a ulozi ho do interni promenne $exchange_rates
	 *
	 * @throws  object  Exception
	 */	 	  	 	
	public function fetch()
	{
		$lines = file($this->url);
		if (!$lines) {
			throw new Exception('Soubor s kurzovym listkem Ceske sporitelny se nepodarilo nacist');
		}

		$i = 0;
		$rate = array(); 
		foreach ($lines as $line_num => $line) {
			$line = trim($line);
			if ($i > 1 && !empty($line)) { // hodnoty zacinaji az na 3. radku
				$line = str_replace('"', '', $line);
				list($country, $quota, $currency, $change_val, $sign, 
				     $purchase_dev, $sale_dev, $middle_dev, 
					 $purchase_val, $sale_val, $middle_val, $CNB_middle) = explode(',', $line);
					 
				$rate[$currency]['quota']        = (int) $quota;
				$rate[$currency]['purchase_dev'] = (float) $purchase_dev;
				$rate[$currency]['sale_dev']     = (float) $sale_dev;
			}
			$i++;
		}
		foreach ($rate as $name => $type) {
			if (in_array($name, $this->important_currencies)) {
				$exchange_rate_info = new ExchangeRateInfo($name, $type['quota'], $type['purchase_dev'], $type['sale_dev']);
				$this->exchange_rates[$name] = $exchange_rate_info;
			}
		}
	}

}

ExchangeRatesFetcherCsob.php Raw #

<?php
/**
 * trida vyuziva tridu ExchangeRatesFetcher
 */   
require_once 'ExchangeRatesFetcher.php';

/**
 * trida vyuziva tridu ExchangeRatesInfo
 */   
require_once 'ExchangeRatesInfo.php';

/**
 * Trida pro stahovani kurzovnich listku ze stranek CSOB
 *
 * @date 27-02-2008
 * @version 1.0
 */
class ExchangeRatesFetcherCsob extends ExchangeRatesFetcher
{
	/**
	 * konstruktor - nastaveni kodu banky 
	 */
	public function __construct($url)
	{
		parent::__construct($url);
		$this->bank_code = 'CSOB';
	}

	/**
	 * Funkce pro stahnuti kurzovniho listku
	 * 	 	
	 * Funkce stahne kurzovni listek a ulozi ho do interni promenne $exchange_rates
	 *
	 * @throws  object  Exception
	 */	 	  	 	
	public function fetch()
	{
		$lines = file($this->url);
		if (!$lines) {
			throw new Exception('Soubor s kurzovym listkem CSOB se nepodarilo nacist');
		}

		$i = 0;
		$rate = array(); 
		foreach ($lines as $line_num => $line) {
			$line = trim($line);
			if ($i > 3 && !empty($line)) {
				list($country, $quota, $currency, $change_val,				      
					 $purchase_dev, $sale_dev, $middle_dev,
					 $purchase_val, $sale_val, $middle_val) = explode(';', $line);
				
				$rate[$currency]['quota']        = (int) trim($quota);
				$rate[$currency]['purchase_dev'] = (float) trim($purchase_dev);
				$rate[$currency]['sale_dev']     = (float) trim($sale_dev);
			}
			$i++;
		}

		foreach ($rate as $name => $type) {
			if (in_array($name, $this->important_currencies)) {
				$exchange_rate_info = new ExchangeRateInfo($name, $type['quota'], $type['purchase_dev'], $type['sale_dev']);
				$this->exchange_rates[$name] = $exchange_rate_info;
			}
		}
	}

}

ExchangeRatesFetcherEbanka.php Raw #

<?php
/**
 * trida vyuziva tridu ExchangeRatesFetcher
 */   
require_once 'ExchangeRatesFetcher.php';

/**
 * trida vyuziva tridu ExchangeRatesInfo
 */   
require_once 'ExchangeRatesInfo.php';

/**
 * Trida pro stahovani kurzovnich listku ze stranek E-banky
 *
 * @date 27-02-2008
 * @version 1.0
 */
class ExchangeRatesFetcherEbanka extends ExchangeRatesFetcher
{
	/**
	 * konstruktor - nastaveni kodu banky 
	 */
	public function __construct($url)
	{
		parent::__construct($url);
		$this->bank_code = 'EBANKA';
	}

	/**
	 * Funkce pro stahnuti kurzovniho listku
	 * 	 	
	 * Funkce stahne kurzovni listek a ulozi ho do interni promenne $exchange_rates
	 *
	 * @throws  object  Exception
	 */	 	  	 	
	public function fetch()
	{
		$file = file_get_contents($this->url);
		if (!$file) {
			throw new Exception('Soubor s kurzovym listkem E-banka se nepodarilo nacist');
		}

		preg_match('/Kurzovn..l.stek(.*)<\/form>/is', $file, $match);
		
		preg_match_all('/<tr[^>]*>(.*)<\/tr>/isU', $match[1], $rate_lines);
		
		$row = array();
		$i = 0;
		foreach ($rate_lines[1] as $rate_line) {
			preg_match_all('/<td[^>]*>(.*)<\/td>/isU', $rate_line, $row[$i]);
			$i++;
		}
		
		$rate_lines = array();

		$i = 0;
		foreach ($row as $r) {						
			foreach($r[1] as $val) {	
				$rate_lines[$i][] = trim(strip_tags($val));
			}
			$i++;
		}

		foreach ($rate_lines as $row) {
			$name = $row[2]; 
			if (in_array($name, $this->important_currencies)) {
				$exchange_rate_info = new ExchangeRateInfo($name, $row[1], (float) $row[3], (float) $row[4]);
				$this->exchange_rates[$name] = $exchange_rate_info;
			}
		}
	}

}

ExchangeRatesFetcherKb.php Raw #

<?php
/**
 * trida vyuziva tridu ExchangeRatesFetcher
 */   
require_once 'ExchangeRatesFetcher.php';

/**
 * trida vyuziva tridu ExchangeRatesInfo
 */   
require_once 'ExchangeRatesInfo.php';

/**
 * Trida pro stahovani kurzovnich listku ze stranek Komercni banky
 *
 * @date 27-02-2008
 * @version 1.0
 */
class ExchangeRatesFetcherKb extends ExchangeRatesFetcher
{
	/**
	 * konstruktor - nastaveni kodu banky 
	 */
	public function __construct($url)
	{
		parent::__construct($url);
		$this->bank_code = 'KB';
	}

	/**
	 * Funkce pro stahnuti kurzovniho listku
	 * 	 	
	 * Funkce stahne kurzovni listek a ulozi ho do interni promenne $exchange_rates
	 *
	 * @throws  object  Exception
	 */	 	  	 	
	public function fetch()
	{
		$file = file_get_contents($this->url);
		if (!$file) {
			throw new Exception('Soubor s kurzovym listkem Komercni banky se nepodarilo nacist');
		}

		preg_match('/<div class="text-X">Kurzovní lístek<\/div>(.*)<\/table>/is', $file, $match);
		
		preg_match_all('/<tr class="color-[^>]*>(.*)<\/tr>/isU', $match[1], $rate_lines);
		
		$row = array();
		$i = 0;
		foreach ($rate_lines[1] as $rate_line) {
			preg_match_all('/<td class="text-[^>]*>(.*)<\/td>/isU', $rate_line, $row[$i]);
			$i++;
		}
		
		$rate_lines = array();

		$i = 0;
		foreach ($row as $r) {						
			foreach($r[1] as $val) {	
				$rate_lines[$i][] = trim(strip_tags($val));
			}
			$i++;
		}

		foreach ($rate_lines as $row) {
			$name     = $row[0];
			$quota     = str_replace(',', '.', $row[1]);
			$purchase = str_replace(',', '.', $row[6]);
			$sale     = str_replace(',', '.', $row[7]); 
			if (in_array($name, $this->important_currencies)) {
				$exchange_rate_info = new ExchangeRateInfo($name, $quota, $purchase, $sale);
				$this->exchange_rates[$name] = $exchange_rate_info;
			}
		}
	}

}

ExchangeRatesFetcherUcb.php Raw #

<?php
/**
 * trida vyuziva tridu ExchangeRatesFetcher
 */   
require_once 'ExchangeRatesFetcher.php';

/**
 * trida vyuziva tridu ExchangeRatesInfo
 */   
require_once 'ExchangeRatesInfo.php';

/**
 * Trida pro stahovani kurzovnich listku ze stranek Unicreditbank
 *
 * @date 25-02-2008
 * @version 1.0
 */
class ExchangeRatesFetcherUcb extends ExchangeRatesFetcher
{
	/**
	 * konstruktor - nastaveni kodu banky 
	 */
	public function __construct($url)
	{
		parent::__construct($url);
		$this->bank_code = 'UCB';
	}

	/**
	 * Funkce pro stahnuti kurzovniho listku
	 * 	 	
	 * Funkce stahne kurzovni listek a ulozi ho do interni promenne $exchange_rates
	 *
	 * @throws  object  Exception
	 */	 	  	 	
	public function fetch()
	{
		$xml = @simplexml_load_file($this->url);
		if (!$xml) {
			throw new Exception('Soubor s kurzovym listkem UCB se nepodarilo nacist');
		}
		$info_array = array();
		foreach ($xml->children() as $exchange_rate) {
			foreach ($exchange_rate->children() as $currency) {
				$name = (string) $currency['name'];
				$type = (string) $exchange_rate['type'];
				$valid_from = (string) $exchange_rate['valid_from'];
				$purchase = 0;
				$sale = 0;
				if (in_array($name, $this->important_currencies)) {
					$info_array[$name]['quota'] = (int) $currency['quota'];
					// zajimaji nas jen devizy (prodej a nakup)
					if (strpos($type, '_PURCHASE_DEVIZA')) {
						$info_array[$name]['purchase'] = (float) $currency['rate'];
					}
					if (strpos($type, '_SALE_DEVIZA')) {
						$info_array[$name]['sale'] = (float) $currency['rate'];
					}
				}
			}
		}	
		foreach ($info_array as $name => $type) {
			$exchange_rate_info = new ExchangeRateInfo($name, $type['quota'], $type['purchase'], $type['sale']);
			$this->exchange_rates[$name] = $exchange_rate_info;
		}
	}

}

ExchangeRatesInfo.php Raw #

<?php
/**
 * trida pro ulozeni informace o kursu meny
 *
 * pomocna trida pro ulozeni jednoho kursu jedne meny
 *
 * @date 26-02-2008
 * @version 1.0
 *
 */ 
class ExchangeRateInfo 
{
	/**
	 * zkratka nazvu meny, napr. "EUR"
	 *    
	 * @var string
	 */           
	public $currency;

	/**
	 * mnozstvi (jednotka), napr. 1 nebo 100 
	 *    
	 * @var string   
	 */           
	public $quota;
  
  	/**
	 * deviza nakup
	 *    
	 * @var string   
	 */           
	public $purchase;
  
	/**
	 * deviza prodej
	 *    
	 * @var string   
	 */           
	public $sale;

	/**
	 * konstruktor - inicializace
	 * 
	 * @param string  $currency  zkratka nazvu meny, napr. "EUR"
	 * @param int     $quota     mnozstvi (jednotka), napr. 1 nebo 100 	 
	 * @param float   $purchase  deviza nakup 
	 * @param float   $sale      deviza prodej 
	 */
	public function ExchangeRateInfo($currency, $quota, $purchase, $sale)
	{
		$this->quota    = $quota;
		$this->currency = $currency;
		$this->purchase = $purchase;
		$this->sale     = $sale;
	}
}

ExchangeRatesStorage.php Raw #

<?php
/**
 * trida vyuziva knihovnu pro praci s databazi
 * 
 */  
require_once 'Db_lib.php';

/**
 * Trida pro ukladani stazenych kurzovnich listku ze stranek bank
 *
 * @date 26-02-2008
 * @version 1.0
 *
 */
class ExchangeRatesStorage
{
	/**
	 * ukazatel na objekt se stazenym kurzovnim listkem
	 * 
	 * @var object ExchangeRatesFetcher
	 */
	private $exchange_rates_fetcher;	
	
	/**
	 * konstruktor - nastaveni vychozich hodnot
	 * 
	 * @param  object ExchangeRatesFetcher  objekt, ktery stahl listek ze stranek banky	 	 
	 */
	public function __construct(ExchangeRatesFetcher $exchange_rates_fetcher)
	{		
		$this->exchange_rates_fetcher = $exchange_rates_fetcher;
	}
	
	/**
	 * Funkce pro ulozeni stazeneho kurzovniho listku do databaze
	 * 	 	
	 * Funkce prevezme kurzovni listek z objektu ExchangeRatesFetcher a ulozi ho do databaze
	 *  
	 * @throws  object  Exception
	 */	 	  	 	
	public function store()
	{
		if ($exchange_rates = $this->exchange_rates_fetcher->getExchangeRates()) {
			$bank_code = $this->exchange_rates_fetcher->getBankCode();
			
			$dbh = DbMysqlFactory::createDbObject(DB_TYPE);	// vytvorime link do DB s pristupy na test ci ostry server
			
			$fetched = date('Y-m-d H:i:s');
			
			foreach ($exchange_rates as $exchange_rate) {
				$currency = $exchange_rate->currency;
				$purchase = $exchange_rate->purchase;
				$sale     = $exchange_rate->sale;
				$query = 'INSERT INTO bank_rates SET
			              bank_info_code = :1,
				          currency_code  = :2,
				          rate_purchase  = :3,
				          rate_sale      = :4,
				          fetched        = :5
						  ';
			
				$went_ok = $dbh->prepare($query)->execute($bank_code, $currency, $purchase, $sale, $fetched);
				if(!$went_ok) {
					echo $query.'<br />';
					throw new Exception('Kurz banky '.$bank_code.' se nepodarilo ulozit');
				}

			}
		}
		else {
			echo 'Neni co ukladat<br />';
		}
	}
	
}

get_exchange_rates.php Raw #

<?php
/**
 * skript pro stahovani a ukladani kurzovnich listku bank
 * 
 */

if (date('H') < 9 || date('H') >= 18) {
	exit;	
} 

set_time_limit(120); // zvysime max dobu behu skriptu  
 
//error_reporting(E_ALL);

require '../../connection/connection.php';


define('DB_TYPE', 'prod');

require_once 'Logger.php';
require_once 'ExchangeRatesFetcherUcb.php';
require_once 'ExchangeRatesFetcherCs.php';
require_once 'ExchangeRatesFetcherCitibank.php';
require_once 'ExchangeRatesFetcherCsob.php';
require_once 'ExchangeRatesFetcherKb.php';
require_once 'ExchangeRatesFetcherEbanka.php';
require_once 'ExchangeRatesStorage.php';

Logger::initialize('../../logs/kurzy/rates-log.txt'); // inicializace logu - nastaveni jmema souboru

$log_string = '--------START--------'."\n".date('Y-m-d H:i:s')."\n";

Logger::write($log_string); // zapiseme do logu

###########################################
// URL adresy, ze kterych stahujeme
$url_ebanka = 'http://www.ebanka.cz/Osobni-finance/Cenik-sazby-kurzy/Kurzovni-listek/';

$url_unicredit = 'http://www.unicreditbank.cz/kurzy-xml.php?den='.date('j.n.Y');

$url_sporitelna = 'http://www.csas.cz/banka/portlets/exchangerates/current.do?csv=1&times=&event=current&day='.date('j').'&month='.date('n').'&year='.date('Y');

$url_citibank = 'http://www.citibank.com/czech/consumer-banking/czech/docs/kurzy.jsp';

$url_csob = 'http://www.csob.cz/webcsob/kurzy/kurzynewcz.txt';

$url_kb = 'http://www.kb.cz/NASA/rateList/SRVRate?lng=cs';

###########################################
$exchange_rates_fetcher_Ucb = new ExchangeRatesFetcherUcb($url_unicredit);
try {
	$exchange_rates_fetcher_Ucb->fetch();
}
catch (Exception $e) {
	Logger::write($e->getMessage());
}

Logger::write('Unicredit,');
$exchange_rates_storage = null;
$exchange_rates_storage = new ExchangeRatesStorage($exchange_rates_fetcher_Ucb);
try {
	$exchange_rates_storage->store();
}
catch (Exception $e) {	
	Logger::write($e->getMessage());
}

###########################################
$exchange_rates_fetcher_Cs = new ExchangeRatesFetcherCs($url_sporitelna);
try {
	$exchange_rates_fetcher_Cs->fetch();
}
catch (Exception $e) {
	Logger::write($e->getMessage());	
}

Logger::write('Ceska sporitelna,');
$exchange_rates_storage = null;
$exchange_rates_storage = new ExchangeRatesStorage($exchange_rates_fetcher_Cs);
try {
	$exchange_rates_storage->store();
}
catch (Exception $e) {	
	Logger::write($e->getMessage());
}

###########################################
$exchange_rates_fetcher_Citibank = new ExchangeRatesFetcherCitibank($url_citibank);
try {
	$exchange_rates_fetcher_Citibank->fetch();
}
catch (Exception $e) {
	Logger::write($e->getMessage());	
}

Logger::write('Citibank,');
$exchange_rates_storage = null;
$exchange_rates_storage = new ExchangeRatesStorage($exchange_rates_fetcher_Citibank);
try {
	$exchange_rates_storage->store();
}
catch (Exception $e) {	
	Logger::write($e->getMessage());
}

###########################################
$exchange_rates_fetcher_Csob = new ExchangeRatesFetcherCsob($url_csob);
try {
	$exchange_rates_fetcher_Csob->fetch();
}
catch (Exception $e) {
	Logger::write($e->getMessage());	
}

Logger::write('CSOB,');
$exchange_rates_storage = null;
$exchange_rates_storage = new ExchangeRatesStorage($exchange_rates_fetcher_Csob);
try {
	$exchange_rates_storage->store();
}
catch (Exception $e) {	
	Logger::write($e->getMessage());
}

###########################################
$exchange_rates_fetcher_Kb = new ExchangeRatesFetcherKb($url_kb);
try {
	$exchange_rates_fetcher_Kb->fetch();
}
catch (Exception $e) {
	Logger::write($e->getMessage());	
}

Logger::write('KB,');
$exchange_rates_storage = null;
$exchange_rates_storage = new ExchangeRatesStorage($exchange_rates_fetcher_Kb);
try {
	$exchange_rates_storage->store();
}
catch (Exception $e) {	
	Logger::write($e->getMessage());
}

###########################################
$exchange_rates_fetcher_Ebanka = new ExchangeRatesFetcherEbanka($url_ebanka);
try {
	$exchange_rates_fetcher_Ebanka->fetch();
}
catch (Exception $e) {
	Logger::write($e->getMessage());	
}

Logger::write('E-Banka');
$exchange_rates_storage = null;
$exchange_rates_storage = new ExchangeRatesStorage($exchange_rates_fetcher_Ebanka);
try {
	$exchange_rates_storage->store();
}
catch (Exception $e) {	
	Logger::write($e->getMessage());
}

$log_string = "\n".date('Y-m-d H:i:s')."\n".'---------END---------'."\n"; // konec logovani

Logger::write($log_string);

// zapiseme do logu
//$fh = fopen('rates-log.txt', 'a');
//fwrite($fh, $log_string);

Logger.php Raw #

<?php
/**
 * Trida pro logovani do souboru
 *
 * @date 03-03-2008
 * @version 1.0
 *
 */
class Logger
{
	/**
	 * jmeno souboru, do ktereho logujeme
	 * 
	 * @var string	 	 
	 */
	static private $filename = 'log.txt';

	/**
	 * filehandler
	 * 
	 * @var string	 	 
	 */
	static private $fh = false;
	
	/**
	 * konstruktor - je jako private, aby nebylo mozno vytvorit instanci
	 * 
	 */
	private function __construct()
	{
	}
	
	/**
	 * nastaveni jmena souboru pro logovani
	 * 
	 * mela by byt volana jako prvni, pokud volana neni, pouzije se vychozi nazev souboru  
	 * 
	 * @param string $filename jmeno souboru
	 */	 	
	static public function initialize($filename)
	{
		self::$filename = $filename;
	}

	/**
	 * funkce pro zapis do souboru logu
	 * 
	 * @param string $log_string retezec pro zapsani do logu
	 */	 	
	static public function write($log_string)
	{	
		// zapiseme do logu
		if (!self::$fh) {
			self::$fh = fopen(self::$filename, 'a');
		}
		fwrite(self::$fh, $log_string.' ');
	}
}