PHP Classes

File: wapl_comms.php

Recommend this page to a friend!
  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: 14 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
       
);
    }
   

}
?>