| 
<?php
/**
 * BNR READER CLASS
 *
 * this class is intended to provide an easy way to read the xml with currencies
 * from the bank site, and returns it for further usage in a readable form
 *
 * @author Cristian Năvălici {@link http://www.lemonsoftware.eu} lemonsoftware [at] gmail [.] com
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @version 1.0 26 Oct 2008
 *
 */
 
 class BNR_reader extends XML_currency_reader{
 /**
 * xml file on the BNR site
 */
 protected $xmlpath = 'http://www.bnro.ro/nbrfxrates.xml';
 
 // ----------------------------------------------------------------------------
 /**
 * CONSTRUCTOR
 *
 *
 * @param none
 * @return void
 */
 public function __construct() { }
 
 
 // ----------------------------------------------------------------------------
 /**
 * PARSE RATE CONTENT
 *
 * this method is used to extract specific information about a currency
 * particular usage for National Bank of Romania
 *
 * @param array - $content - array containing arrays of currencies and rates [2]
 * @param string - currency name three letters (currency symbol)
 * @return array [rate][multiplier] | empty array of not found
 */
 public function parse_rate_contents($content, $currency = 'EUR') {
 try {
 if ( !$content ) return array();
 
 // cycle for each value
 foreach ( $content as $con ) {
 $name = $con['currency'];
 if ( $name == $currency ) {
 return array('rate' => $con['rate'], 'multiplier' => $con['multiplier']);
 }
 }
 
 return array();
 
 } catch (Exception $e) {
 echo 'BNR_reader->parse_rate_contents: ' .$e->getMessage(); exit();
 }
 }
 
 
 // ----------------------------------------------------------------------------
 /**
 * PARSE THE DOMDocument
 *
 * parse the xml content and returns it into a readable form (array)
 * this is a specific functions for National Bank Of Romania
 *
 * @param none
 * @return array - of arrays - for structure see doc or look into the code
 */
 public function parse_domdoc() {
 try {
 if ( !$this->domdoc ) {
 throw new Exception('No DOMDocument. DOMconnector() must be run before.');
 }
 
 $dom = $this->domdoc;
 
 $sender_nl          = $dom->getElementsByTagName('Sender');
 $sender_name        = $sender_nl->item(0)->nodeValue;
 
 $sending_date_nl    = $dom->getElementsByTagName('SendingDate');
 $sending_date       = $sending_date_nl->item(0)->nodeValue;
 
 // in Cube node we have all the rates
 $cube_nl        = $dom->getElementsByTagName('Cube')->item(0);
 
 foreach ( $cube_nl->childNodes as $c ) {
 $mul = ( $c->hasAttribute('multiplier') ) ? (int)$c->getAttribute('multiplier') : 1;
 
 $currency   = $c->getAttribute('currency');
 $rate       = $c->nodeValue;
 $rates[]    = array('currency' => $currency, 'rate' => $rate, 'multiplier' => $mul);
 }
 
 return array( $sender_name, $sending_date, $rates);
 
 } catch (Exception $e) {
 echo 'BNR_reader->DOMconnector: ' .$e->getMessage();
 } catch (DOMException $e) {
 echo 'DOM: BNR_reader->DOMconnector: ' .$e->getMessage();
 }
 }
 
 } // class
 ?>
 |