Location: PHPKode > projects > Stelib > stelib-1.2.1/stelib_wml.php
<?php
/*
	stelib_wml.php [ Libreria WML ]
	Stefano Sangalli
	04 ottobre 2005
*/
//!  WML(): oggetto per la costruzione di una pagina WML.
/*!
	Questo oggetto permette di costruire pagine WML compatibili con diversi browser WML come alcuni telefoni IP.
	
*/
class WML{
	var $BROWSER;
	/// Costruttore
	function WML(
		/// Tipo browser :\li ip - Telefono IP \li palm - Dispositivo PalmOS
		$browser
	) {
		if ($browser) {	$this->BROWSER=$browser;	} else {	
			/****************************************************/
			if 		(eregi("msie",			$_SERVER["HTTP_USER_AGENT"])) 			{	$this->BROWSER="palm"	; 	}
			elseif 	(eregi("opera",		$_SERVER["HTTP_USER_AGENT"])) 			{	$this->BROWSER="palm"	; 	}
			elseif	(eregi("avaya",		$_SERVER["HTTP_USER_AGENT"])) 			{	$this->BROWSER="wml"		; 	}			
			elseif 	(eregi("mitel",		$_SERVER["HTTP_USER_AGENT"])) 			{	$this->BROWSER="palm"	; 	}
			elseif 	(eregi("ericsson",	$_SERVER["HTTP_USER_AGENT"])) 			{	$this->BROWSER="wml"		; 	}
			
			else {	$this->BROWSER="palm";	}
			/****************************************************/			
		}
	}
	/// Intestazione della pagina
	function pageHeader () {
		switch ($this->BROWSER) {
			case "wml":
				header("Content-type: text/vnd.wap.wml");
				header("Cache-Control: no-cache, must-revalidate");
				header("Pragma: no-cache");
				echo '<?xml version="1.0"?>';
				echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"';
				echo '   "http://www.wapforum.org/DTD/wml13.dtd">';
				echo '<wml>';
			break;
			case "palm":				
				echo "<HTML><BODY eventhandler=\"Mitel(keymode)\">";
			break;
		}
	}
	function pageFooter() {
		switch ($this->BROWSER) {
			case "wml":
				echo "</wml>";
			break;
			case "palm":
				echo "</BODY>";
				echo "</HTML>";
			break;
		}
	}
	/// Inizio della sotto-sezione
	function beginSection(
		/// nome della sezione
		$name,
		/// titolo della sezione
		$title) {
		switch ($this->BROWSER) {
			case "wml":		
				echo '<card id="'.$name.'" title="'.$title.'"><p>';
			break;
			case "palm":		
				echo '<div id="'.$name.'" title="'.$title.'"><p>';
			break;
		}
	}
	/// Fine della sotto-sezione
	function endSection() {
		switch ($this->BROWSER) {
			case "wml":		
				echo '</p></card>';
			break;
			case "palm":
				echo '</p></div>';
			break;
		}
	}
	/// Creazione di un pulsante
	function designButton (
		/// Tipo di input:<BR>-accept<BR>-prev<BR>-help<BR>-reset<BR>-options<BR>-delete<BR>-unknown
		$type,
		/// Nome del pulsante
		$name,
		/// Etichetta del pulsante
		$label,
		/// File alla quale inviare le variabili
		$action,
		/// Metodo di invio delle variabili
		$method,
		/// array dei campi da inviare (Esempio: "Iniziali","Numero")
		$postfield) {
		switch ($this->BROWSER) {
			case "wml":
				echo "<do type=\"".$type."\" name=\"".$name."\" label=\"".$label."\">"
					."<go href=\"".$action."\" method=\"".$method."\">";
					foreach ( $postfield as $postfield ) {
						echo "<postfield name=\"".$postfield."\" value=\"$(".$postfield.")\"/>";
					}
					echo "</go>"
						 ."</do>";
			break;
			case "palm":				
				echo "<input type=\"button\" name=\"".$name."\" value=\"".$label."\" onClick=\"javascript:window.frm".$name.".submit();\">"
					."<form name=\"frm".$name."\" href=\"".$action."\" method=\"".$method."\">";
					foreach ( $postfield as $postfield ) {
						echo "<input type=\"hidden\" name=\"".$postfield."\" value=\"$(".$postfield.")\"/>";
					}
					echo "</form>";
			break;
		}
	}
	/// Funzione per la creazione di un link ???
	function designDo(
		/// Etichetta del link
		$label,
		/// File alla quale inviare le variabili
		$action,
		/// Metodo di invio delle variabili
		$method,
		/// array dei campi da inviare (Esempio: "Iniziali","Numero")
		$postfield) {		
		$tmpnum=rand(0,1000);
 		echo "<do type=\"accept\" label=\"".$label."\" name=\"frmDo".$tmpnum."\">";
			echo "<go href=\"".$action."\" method=\"".$method."\">";
			foreach ( $postfield as $postfield ) {
				echo "<postfield name=\"".$postfield."\" value=\"$(".$postfield.")\"/>";
			}			
			echo "</go>";
  		echo "</do>";
	}
	/// Funzione per la creazione di un campo di INPUT tipo TEXT
	function designText(
		/// Nome del pulsante
		$name,
		/// Etichetta del pulsante
		$label,
		/// Valore di Hint
		$ivalue
	) {
		echo "<input value=\"\" name=\"".$name."\" title=\"".$label."\" ivalue=\"".$ivalue."\"/>";
	}
	/// Funzione per la creazione di un'etichetta
	function designLabel(
		/// Etichetta
		$label
	) {	
		echo $label."<br/>";
	}
	/// Funzione per la creazione di un'etichetta
	function designLink(
		/// Destinazione del link
		$href,
		/// Etichetta
		$label
	) {
		echo "<a href=\"".$href."\">->".$label."</a><br/>";
	}
}
?>
Return current item: Stelib