Location: PHPKode > scripts > XML Currency Reader > xml-currency-reader/BNR_reader.class.php
<?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
?>
Return current item: XML Currency Reader