<?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/>";
}
}
?>