Location: PHPKode > scripts > Wapple Architect Mobilization > wapple-architect-mobilization/wapl_comms.php
<?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
		);
	}
	

}
?>
Return current item: Wapple Architect Mobilization