Rev 61 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Description: a SOAP Calendar Server*/if (!@include('SOAP'.DIRECTORY_SEPARATOR.'Server.php')) {die('You must have PEAR::SOAP installed');}if (!@include 'Calendar'.DIRECTORY_SEPARATOR.'Calendar.php') {define('CALENDAR_ROOT', '../../');}class Calendar_Server{var $__dispatch_map = array();var $__typedef = array();function Calendar_Server(){$this->__dispatch_map['getMonth'] =array('in' => array('year' => 'int', 'month'=>'int'),'out' => array('month' => '{urn:PEAR_SOAP_Calendar}Month'),);$this->__typedef['Month'] = array ('monthname' => 'string','days' => '{urn:PEAR_SOAP_Calendar}MonthDays');$this->__typedef['MonthDays'] = array (array ('{urn:PEAR_SOAP_Calendar}Day'));$this->__typedef['Day'] = array ('isFirst' => 'int','isLast' => 'int','isEmpty' => 'int','day' => 'int' );}function __dispatch($methodname){if (isset($this->__dispatch_map[$methodname]))return $this->__dispatch_map[$methodname];return NULL;}function getMonth($year, $month){require_once(CALENDAR_ROOT.'Month'.DIRECTORY_SEPARATOR.'Weekdays.php');$Month = & new Calendar_Month_Weekdays($year,$month);if (!$Month->isValid()) {$V = & $Month->getValidator();$errorMsg = '';while ($error = $V->fetch()) {$errorMsg .= $error->toString()."\n";}return new SOAP_Fault($errorMsg, 'Client');} else {$monthname = date('F Y', $Month->getTimeStamp());$days = array();$Month->build();while ($Day = & $Month->fetch()) {$day = array('isFirst' => (int)$Day->isFirst(),'isLast' => (int)$Day->isLast(),'isEmpty' => (int)$Day->isEmpty(),'day' => (int)$Day->thisDay(),);$days[] = $day;}return array('monthname' => $monthname, 'days' => $days);}}}$server = new SOAP_Server();$server->_auto_translation = true;$calendar = new Calendar_Server();$server->addObjectMap($calendar, 'urn:PEAR_SOAP_Calendar');if (strtoupper($_SERVER['REQUEST_METHOD'])=='POST') {$server->service($GLOBALS['HTTP_RAW_POST_DATA']);} else {require_once 'SOAP'.DIRECTORY_SEPARATOR.'Disco.php';$disco = new SOAP_DISCO_Server($server, "PEAR_SOAP_Calendar");if (isset($_SERVER['QUERY_STRING']) &&strcasecmp($_SERVER['QUERY_STRING'], 'wsdl')==0) {header("Content-type: text/xml");echo $disco->getWSDL();} else {echo 'This is a PEAR::SOAP Calendar Server. For client try <a href="8.php">here</a><br />';echo 'For WSDL try <a href="?wsdl">here</a>';}exit;}?>