<?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
 
?>
 
 |