Source: CalendarService.php

<?php
 
require_once("constants.php");
define("DB_HOST", "localhost");
define("DB_NAME", "Calendar");
 
// PHP classes corresponding to the data types in defined in WSDL
 
class login {
 
}
 
class loginResponse {
 
    /**
     * @var string
     *     NOTE: success should follow the following restrictions
     *     You can have one of the following value
     *     SUCCESS
     *     FAILS
     */
    public $success;
 
}
 
class register {
 
    /**
     * @var string
     */
    public $username;
 
    /**
     * @var string
     */
    public $password;
 
    /**
     * @var string
     */
    public $firstName;
 
    /**
     * @var string
     */
    public $lastName;
 
    /**
     * @var string
     */
    public $email;
 
    /**
     * @var string
     */
    public $address;
 
    /**
     * @var string
     */
    public $country;
 
    /**
     * @var string
     */
    public $postalCode;
 
}
 
class registerResponse {
 
    /**
     * @var string
     *     NOTE: success should follow the following restrictions
     *     You can have one of the following value
     *     SUCCESS
     *     FAILS
     *     USERNAME_ALREADY_EXISTS
     *     INVALID
     */
    public $success;
 
}
 
class getEvents {
 
    /**
     * @var dateTime
     */
    public $startDateTime;
 
    /**
     * @var dateTime
     */
    public $endDateTime;
 
}
 
class getEventsResponse {
 
    /**
     * @var array[0, unbounded] of (object)Event
     */
    public $return;
 
}
 
class Event {
 
    /**
     * @var string
     */
    public $name;
 
    /**
     * @var dateTime
     */
    public $startDateTime;
 
    /**
     * @var dateTime
     */
    public $endDateTime;
 
    /**
     * @var string
     */
    public $description;
 
}
 
class deleteEvents {
 
    /**
     * @var dateTime
     */
    public $startDateTime;
 
    /**
     * @var dateTime
     */
    public $endDateTime;
 
}
 
class deleteEventsResponse {
 
    /**
     * @var string
     *     NOTE: success should follow the following restrictions
     *     You can have one of the following value
     *     SUCCESS
     *     FAILS
     */
    public $success;
 
}
 
class addEvent {
 
    /**
     * @var (object)Event
     */
    public $event;
 
}
 
class addEventResponse {
 
    /**
     * @var string
     *     NOTE: success should follow the following restrictions
     *     You can have one of the following value
     *     SUCCESS
     *     FAILS
     */
    public $success;
 
}
 
// define the class map
$class_map = array(
    "login" => "login",
    "loginResponse" => "loginResponse",
    "register" => "register",
    "registerResponse" => "registerResponse",
    "getEvents" => "getEvents",
    "getEventsResponse" => "getEventsResponse",
    "Event" => "Event",
    "deleteEvents" => "deleteEvents",
    "deleteEventsResponse" => "deleteEventsResponse",
    "addEvent" => "addEvent",
    "addEventResponse" => "addEventResponse");
 
/**
 * call back function.
 * verify the validity of user enterd password with
 * the actual password which is kept in the database.
 */
$current_username = "";
function get_password($username)
{
 
    $dbhost = DB_HOST;
    $dbname = DB_NAME;
    $dbuname = DB_USERNAME;
    $dbpass = DB_PASSWORD;
    $link=mysql_connect($dbhost,  $dbuname,  $dbpass);
    mysql_select_db($dbname, $link);
 
    $sql="SELECT password FROM `customer_details` WHERE `user_name` = '".$username."'";
    $result=mysql_query($sql,$link);
    $password=mysql_fetch_array($result, MYSQL_NUM);
 
    global $current_username;
    if($password) {
         $current_username = $username;
         return $password[0];
    }
    else {
         $current_username = "";
         return NULL;
    }
}
 
 
// define PHP functions that maps to WSDL operations 
/**
 * Service function login
 * @param object of login $input 
 * @return object of loginResponse 
 */
function login($input) {
    // TODO: fill in the business logic
    // NOTE: $input is of type login
    // NOTE: should return an object of type loginResponse
 
    global $current_username;
    $res = new loginResponse();
    if(!empty($current_username)) {
        $res->success = "SUCCESS";
    }
    else {
        $res->success = "FAILS";
    }
    return $res;
}
 
 
/**
 * Service function register
 * @param object of register $input 
 * @return object of registerResponse 
 */
function register($input) {
    // TODO: fill in the business logic
    // NOTE: $input is of type register
    // NOTE: should return an object of type registerResponse
    $dbhost = DB_HOST;
    $dbname = DB_NAME;
    $dbuname = DB_USERNAME;
    $dbpass = DB_PASSWORD;
 
    $link=mysql_connect($dbhost,  $dbuname,  $dbpass);
    mysql_select_db($dbname, $link);
 
    $username = $input->username;
    $password = $input->password;
    $first_name = $input->firstName;
    $last_name = $input->lastName;
    $email = $input->email;
    $address = $input->address;
    $country = $input->country;
    $postal_code = $input->postalCode;
 
 
    $sql="SELECT `password` FROM `customer_details` WHERE `user_name` = '$username'";
    $result=mysql_query($sql,$link);
    $name=mysql_fetch_array($result, MYSQL_NUM);
 
    $res = new registerResponse();
 
    if(empty($name))
    {
        $query = "INSERT INTO `customer_details`(`user_name`,`password`,`first_name`,".
				" `last_name`, `email`, `address`, `country`, `postel_code`) VALUES ('".
                      $username."', '".$password."', '".$firstName."', '".$lastName.
					"', '".$email."', '".$address."', '".$country."', '".$postalCode."')";
 
        $resutl=mysql_query($query,$link);
 
        if($result)  {
            $res->success = "SUCCESS";
        }
        else  {
            $res->success = "FAILS";
        }
    }
 
    else {
         $res->success = "USERNAME_ALREADY_EXISTS";
    }
 
    return $res;
}
 
 
/**
 * Service function getEvents
 * @param object of getEvents $input 
 * @return object of getEventsResponse 
 */
function getEvents($input) {
    // TODO: fill in the business logic
    // NOTE: $input is of type getEvents
    // NOTE: should return an object of type getEventsResponse
    $dbhost = DB_HOST;
    $dbname = DB_NAME;
    $dbuname = DB_USERNAME;
    $dbpass = DB_PASSWORD;
    $link=mysql_connect($dbhost,  $dbuname,  $dbpass);
    mysql_select_db($dbname, $link);
 
    global $current_username;
    $username = $current_username;
    $start_date_time = $input->startDateTime;
    $end_date_time = $input->endDateTime;
 
    function convert($datetime)
    {
        $date=substr($datetime,0,10);
        return $date;
    }
 
    $sql="SELECT user_id FROM `customer_details` WHERE `user_name` = '".$username."'";
    $result1=mysql_query($sql,$link);
    $userid=mysql_fetch_array($result1, MYSQL_NUM);
    $user_id=$userid[0];
 
    $start_date=convert($start_date_time);
    $end_date=convert($end_date_time);
 
 
    $sql2="SELECT * FROM `events` WHERE `user_id`='".$user_id."' AND `start_time` > '".
			$start_date."' AND `end_time` < '".$end_date."'";
    $result2=mysql_query($sql2,$link);
 
    $res = new getEventsResponse();
 
    $events = array();
 
    while($db_event=mysql_fetch_array($result2, MYSQL_NUM)){
        $event = new Event();
 
        $event->startDateTime = str_replace(" ", "T", $db_event[0]);
        $event->endDateTime = str_replace(" ", "T", $db_event[1]);
        $event->name = $db_event[2];
        $event->description = $db_event[3];
 
        $events[] = $event;    
    }
 
    $res->return = $events;
    return $res;
}
 
 
/**
 * Service function deleteEvents
 * @param object of deleteEvents $input 
 * @return object of deleteEventsResponse 
 */
function deleteEvents($input) {
    // TODO: fill in the business logic
    // NOTE: $input is of type deleteEvents
    // NOTE: should return an object of type deleteEventsResponse
    $dbhost = DB_HOST;
    $dbname = DB_NAME;
    $dbuname = DB_USERNAME;
    $dbpass = DB_PASSWORD;
    $link=mysql_connect($dbhost,$dbuname,$dbpass);
    mysql_select_db($dbname,$link);
 
    global $current_username;
    $user_name = $current_username;
    $start_date_time = $input->startDateTime;
    $end_date_time = $input->endDateTime;
 
    $sql="SELECT user_id FROM `customer_details` WHERE `user_name` = '".$user_name."'";
    $result1=mysql_query($sql,$link);
    $userId=mysql_fetch_array($result1, MYSQL_NUM);
    $user_id=$userId[0];
 
 
    $query="DELETE FROM `events` WHERE `user_id`='".$user_id."' AND `start_time`='".
			$start_date_time."' AND `end_time`='".$end_date_time."'";
    $result = mysql_query($query,$link);
 
    $res = new deleteEventsResponse();
    if($result)
    {
        $res->success = "SUCCESS";
    }
    else{
        $res->success = "FAILS";
    }
 
    return $res; 
}
 
 
/**
 * Service function addEvent
 * @param object of addEvent $input 
 * @return object of addEventResponse 
 */
function addEvent($input) {
    // TODO: fill in the business logic
    // NOTE: $input is of type addEvent
    // NOTE: should return an object of type addEventResponse
    $dbhost = DB_HOST;
    $dbname = DB_NAME;
    $dbuname = DB_USERNAME;
    $dbpass = DB_PASSWORD;
    $link=mysql_connect($dbhost,  $dbuname,  $dbpass);
    mysql_select_db($dbname, $link);
 
    global $current_username;
 
    $username=$current_username;
    $event = $input->event;
    $name = $event->name;
    $start_date_time = $event->startDateTime;
    $end_date_time = $event->endDateTime;
    $description = $event->description;
 
 
    $sql="SELECT user_id FROM `customer_details` WHERE `user_name` = '".$username."'";
    $result1=mysql_query($sql,$link);
    $userid=mysql_fetch_array($result1, MYSQL_NUM);
    $user_id=$userid[0];
 
    $query2="SELECT name FROM `events` WHERE `user_id`='".$user_id."' AND `start_time`='".
			$start_date_time."' AND `end_time`='".$end_date_time."'";
    $events=mysql_query($query2,$link);
    $event=mysql_fetch_array($events, MYSQL_NUM);
 
    $res = new addEventResponse(); 
    $res->success = "FAILS";
    if(empty($event))
    {
        $query = "INSERT INTO `events` (`start_time`,`end_time`,`name`, `description`, `user_id`) VALUES ('".
                $start_date_time."', '".$end_date_time."', '".$name."', '".$description."', '".$user_id."');";
        $db_ret=mysql_query($query,$link);
        if($db_ret){
            $res->success = "SUCCESS";
        }
    }
    else
    {
        $query= "UPDATE `events` SET `name`= '".$name."', `description`='".$description."' WHERE `user_id`= '".
					$user_id."' AND `start_time`= '".$start_date_time."' AND `end_time`= '".$end_date_time."'";
        $db_ret =mysql_query($query,$link);
 
        if($db_ret){
            $res->success = "SUCCESS";
        }
    }
 
    return $res;
}
 
 
// define the operations map
$operations = array(
    "login" => "login",
    "register" => "register",
    "getEvents" => "getEvents",
    "deleteEvents" => "deleteEvents",
    "addEvent" => "addEvent");
 
// define the actions => operations map
$actions = array(
    "urn:login" => "login",
    "urn:register" => "register",
    "urn:getEvents" => "getEvents",
    "urn:deleteEvents" => "deleteEvents",
    "urn:addEvent" => "addEvent");
 
// our security token
$security_token = new WSSecurityToken(array("passwordCallback" => "get_password",
                                      "passwordType" => "plain"));
// create service in WSDL mode
$service = new WSService(array ("wsdl" =>"Calendar.wsdl",
        "actions" => $actions,
        "classmap" => $class_map,
        "securityToken" => $security_token,
        "operations" => $operations));
 
// process client requests and reply 
$service->reply();
 
?>