Login   Register  
PHP Classes
elePHPant
Icontem

File: wapl_comms.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Rich Gubby  >  Wapple Architect Mobilization  >  wapl_comms.php  >  Download  
File: wapl_comms.php
Role: Class source
Content type: text/plain
Description: Wapple Architect communication class
Class: Wapple Architect Mobilization
Create pages adapted to all mobile devices
Author: By
Last change:
Date: 5 years ago
Size: 5,040 bytes
 

Contents

Class file image Download
<?php
/**
 * Wapple Architect communication class
 * 
 * This class allows you to communicate with Wapple Architect's web services via SOAP without having to worry
 * about all of the commands to do it.
 * 
 * @author Rich Gubby
 * @version 1.0
 * @package WappleArchitect
 */ 
class waplComms
{
    
/**
     * Store SOAP client
     * 
     * @access public
     * @var object
     */
    
public $sClient;
    
    
/**
     * Reformatted device header information
     * 
     * @access public
     * @var array
     */
    
public $headers = array();
    
    
/**
     * Hold a reference to the parent
     * 
     * @access public
     * @var object
     */
    
public $parent;
    
    
/**
     * Constructor class
     * 
     * @access public
     * @return void
     */
    
public function __construct($parent)
    {
        
// Setup reference to parent
        
$this->parent $parent;
        
        
// Setup a new SOAP client
        
if(class_exists('SoapClient'))
        {
            
$this->sClient = new SoapClient('http://webservices.wapple.net/wapl.wsdl', array('connection_timeout' => 5));
        } else
        {
            
$this->parent->errorMessage['comms'][] = 'No SOAP client';
        }
        
        
// Check simple XML is installed
        
if(!function_exists('simplexml_load_string'))
        {
            
$this->parent->errorMessage['comms'][] = 'SimpleXML is not installed';
        }
        
        
// Setup device headers
        
$this->getDeviceHeaders();
    }
    
    
/**
     * Create device headers
     * 
     * @access public
     * @return void
     */
    
public function getDeviceHeaders()
    {
        if(empty(
$this->headers))
        {
            foreach(
$_SERVER as $key => $val)
            {
                
$this->headers[] = array('name' => $key'value' => $val);
            }
        }
    }
    
    
/**
     * Check credentials when doing anything
     * 
     * @param array $options
     * @access private
     * @return boolean
     */
    
private function __checkCredentials()
    {
        
// Check a dev key has been set
        
if(!isset($this->parent->devKey) OR $this->parent->devKey == '')
        {
            
$this->parent->errorMessage['comms'][] = 'No dev key set';
            return 
false;
        }
        
        
// Check headers have been set
        
if(empty($this->headers))
        {
            
$this->parent->errorMessage['comms'][] = 'No device headers';
            return 
false;
        }
        
        if(!
$this->sClient)
        {
            
$this->parent->errorMessage['comms'][] = 'No SOAP client';
            return 
false;
        }
        
        
// Check simple XML is installed
        
if(!function_exists('simplexml_load_string'))
        {
            
$this->parent->errorMessage['comms'][] = 'SimpleXML is not installed';
            return 
false;
        }
        
        return 
true;
    }
    
    
/**
     * Check if a device is mobile or not
     * 
     * @access protected
     * @return boolean
     */
    
public function isMobileDevice()
    {
        if(
$this->parent->useCookies == true)
        {
            if(isset(
$_COOKIE['isMobile']))
            {
                return 
$_COOKIE['isMobile'];
            }
        }
        
        
// Check everything is setup correctly
        
if($this->__checkCredentials())
        {
            if(@
$this->sClient->isMobileDevice($this->__getParams()))
            {
                
$this->parent->setCookie('1');
                return 
true;
            }
        }
        
$this->parent->setCookie('0');
        return 
false;
    }
    
    
/**
     * Get mobile device information
     * 
     * @access protected
     * @return object
     */
    
public function getMobileDevice()
    {
        if(
$this->__checkCredentials())
        {
            return 
simplexml_load_string(@$this->sClient->getMobileDevice($this->__getParams()));
        }
    }
    
    
/**
     * Get markup from WAPL
     * 
     * @access protected
     * @return object
     */
    
public function getMarkupFromWapl($wapl)
    {
        if(
$this->__checkCredentials())
        {
            return 
simplexml_load_string(@$this->sClient->getMarkupFromWapl($this->__getParams(array('wapl' => $wapl)))); 
        }
    }
    
    
/**
     * Display markup from WAPL
     * 
     * @param string $wapl
     * @access protected
     * @return void
     */
    
public function displayMarkupFromWapl($wapl)
    {
        
$this->__displayMarkup($this->getMarkupFromWapl($wapl));
    }
    
    
/**
     * Get markup from a URL
     * 
     * @param string $url
     * @access protected
     * @return object
     */
    
public function getMarkupFromUrl($url)
    {
        if(
$this->__checkCredentials())
        {
            return 
simplexml_load_string(@$this->sClient->getMarkupFromUrl($this->__getParams(array('waplUrl' => $url))));
        }
    }
    
    
/**
     * Display markup from URL
     * 
     * @param string $url
     * @access protected
     * @return void
     */
    
public function displayMarkupFromUrl($url)
    {
        
$this->__displayMarkup($this->getMarkupFromUrl($url));
    }
    
    
/**
     *  Display markup on screen from XML headers and markup
     *  
     * @param object $xml
     * @access private
     * @return void
     */
    
private function __displayMarkup($xml)
    {
        foreach(
$xml->header->item as $header)
        {
            
header($header);
        }
        echo 
trim($xml->markup);
    }
    
    
/**
     * Get parameters to pass through in a SOAP call
     * 
     * @param array $options
     * @access private
     * @return array
     */
    
private function __getParams($options = array())
    {
        return 
array_merge(
            array(
                
'devKey' => $this->parent->devKey,
                
'deviceHeaders' => $this->headers
            
), $options
        
);
    }
    

}
?>