PHP Classes
Icontem

File: XML_currency_reader.class.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Cristian Navalici  >  XML Currency Reader  >  XML_currency_reader.class.php  
File: XML_currency_reader.class.php
Role: Class source
Content type: text/plain
Description: Abstract class to read xml content.
Class: XML Currency Reader
Retrieve currency exchange data from XML files
 

Contents

Class file image Download
<?php
/**
 * XML CURRENCY READER CLASS
 * 
 * this class is intended to provide general support to read the xml with currencies
 * from a national bank site
 *
 * @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
 * 
 */

abstract class XML_currency_reader {

    
/**
    * the extended classes must implement these methods
    */
    
abstract protected function parse_rate_contents($content$currency 'EUR');
    
abstract protected function parse_domdoc();

    
/**
    * xml file on the BNR site
    */
    
protected $xmlpath;

    
/**
    * if not enable we use curl functions; otherwise file_get_contents
    */
    
protected $allow_url_fopen;

    
/**
    * saves the xml content from get_xml_content()
    */
    
protected $xml_content;

    
/**
    * saves the DOMDocument from DOMconnector()
    */
    
protected $domdoc;


    
// ----------------------------------------------------------------------------
    /**
    * CONSTRUCTOR
    *
    * 
    * @param none
    * @return void
    */
    
public function __construct() {
        
$this->allow_url_fopen ini_get('allow_url_fopen');
    }


    
// ----------------------------------------------------------------------------
    /**
    * PARSE XML
    *
    * this calls other methods in order to get the content, make a DOMDocument from it
    * and parse it
    * 
    * @param none
    * @return array of arrays (parse_domdoc return value) | FALSE
    */
    
public function parse_xml() {
        
// gets the xml content
        
$this->get_xml_content();

        
// check if the connection was available
        
if ( $this->xml_content ) {
            
// creates a DOMDocument
            
$this->DOMconnector();

            
// parse the DOMDocument
            
return $this->parse_domdoc();
        } else return 
FALSE;
    }
    
// ----------------------------------------------------------------------------
    /**
    * GET THE XML CONTENT
    *
    * retrieve the remote file content using any of the methods available
    * saves it into a class var
    * 
    * @param none
    * @return void
    */
    
protected function get_xml_content() {
        
try {
            if ( 
$this->allow_url_fopen ) {
                
// file_get_contents approach
                
$xml_content file_get_contents($this->xmlpath); 
            } else {
                
// CURL approach
                // make sure curl is installed
                
if ( function_exists('curl_init') ) {
                    
// initialize a new curl resource
                    
$ch curl_init();

                    
// set the url to fetch
                    
curl_setopt($chCURLOPT_URL$this->xmlpath);

                    
// don't give me the headers just the content
                    
curl_setopt($chCURLOPT_HEADER0);

                    
// return the value instead of printing the response to browser
                    
curl_setopt($chCURLOPT_RETURNTRANSFER1);

                    
$xml_content curl_exec($ch);

                    
// remember to always close the session and free all resources
                    
curl_close($ch);
                } else {
                    
throw new Exception('Curl library is not installed; modify allow_url_fopen to 1 in php.ini');
                }
            }

            
$this->xml_content $xml_content;
        } 
catch (Exception $e) {
            echo 
'BNR_reader->get_xml_content: ' .$e->getMessage(); exit();
        }
    }


    
// ----------------------------------------------------------------------------
    /**
    * CONNECTS TO DOM DOCUMENT
    *
    * creates a DOMDocument using the class var content (filled up with get_xml_content())
    * 
    * @param none
    * @return void
    */
    
protected function DOMconnector() {
        
try {
            if ( !
$this->xml_content ) {
                
throw new Exception('No content. Empty page or get_xml_content must be run before.');
            }

            
$dom = new DOMDocument();
            
// this should stay before load() to format output otherwise it doesn't

            
$dom->preserveWhiteSpace false;
            
$dom->loadXML($this->xml_content);
            
$dom->formatOutput TRUE;

            
$this->domdoc $dom;
        } 
catch (Exception $e) {
            echo 
'BNR_reader->DOMconnector: ' .$e->getMessage();
        }
    }

// class
?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products