<?php
/**
* Composer autoload
*/
require_once __DIR__ . '/../vendor/autoload.php';
/**
* Used classes
*/
use WsdlToPhp\PackageBase\AbstractSoapClientBase;
use Ews\StructType\EwsRequestServerVersion;
use Ews\EnumType\EwsExchangeVersionType;
use Ews\StructType\EwsCreateItemType;
use Ews\StructType\EwsTargetFolderIdType;
use Ews\StructType\EwsDistinguishedFolderIdType;
use Ews\EnumType\EwsDistinguishedFolderIdNameType;
use Ews\StructType\EwsNonEmptyArrayOfAllItemsType;
use Ews\StructType\EwsTaskType;
use Ews\EwsClassMap;
use Ews\StructType\EwsBodyType;
use Ews\EnumType\EwsBodyTypeType;
/**
* Your Office 365 login
*/
define('EWS_WS_LOGIN', '***************************');
/**
* Your Office 365 passowrd
*/
define('EWS_WS_PASSWORD', '************');
/**
* Minimal options in order to instanciate the ServiceType named Get
*/
$options = array(
AbstractSoapClientBase::WSDL_URL => __DIR__ . '/../wsdl/services.wsdl',
AbstractSoapClientBase::WSDL_CLASSMAP => EwsClassMap::get(),
AbstractSoapClientBase::WSDL_LOGIN => EWS_WS_LOGIN,
AbstractSoapClientBase::WSDL_PASSWORD => EWS_WS_PASSWORD
);
/**
* Instanciation of the ServiceType get that gather all the operations beginnig with "get".
*/
$create = new \Ews\ServiceType\EwsCreate($options);
$create->setLocation('https://pod51036.outlook.com/ews/Exchange.asmx');
/**
* Configure the SoapHeader, each header's method begins with "setSoapHeader".
*/
$create->setSoapHeaderRequestServerVersion(new EwsRequestServerVersion(EwsExchangeVersionType::VALUE_EXCHANGE_2013_SP_1));
/**
* Send the request, you can customize the request by modifiying the new \Ews\StructType\EwsGetServerTimeZonesType() instance
*/
$items = new EwsNonEmptyArrayOfAllItemsType();
$task = new EwsTaskType();
$dueDate = new \DateTime('today + 5 day');
$task->setDueDate($dueDate->format('Y-m-d\TH:i:s\Z'))
->setBody(new EwsBodyType(EwsBodyTypeType::VALUE_TEXT, 'This task is very important, please do it as soon as possible'))
->setSubject('Sample task created with EWS')
->setReminderDueBy($dueDate->sub(new \DateInterval('PT1H'))
->format('Y-m-d\TH:i:s\Z'))
->setReminderIsSet(true);
$items->setTask($task);
$itemType = new EwsCreateItemType(new EwsTargetFolderIdType(null, new EwsDistinguishedFolderIdType(EwsDistinguishedFolderIdNameType::VALUE_TASKS)), $items);
$result = $create->CreateItem($itemType);
/**
* Debug informations provided by the utility methods
*/
if (true) {
echo 'XML Request: ' . $create->getLastRequest() . "\r\n";
echo 'Headers Request: ' . $create->getLastRequestHeaders() . "\r\n";
echo 'XML Response: ' . $create->getLastResponse() . "\r\n";
echo 'Headers Response: ' . $create->getLastResponseHeaders() . "\r\n";
}
/**
* Sample call for CreateItem operation/method
*/
if ($result !== false) {
/**
* Display the message
*/
foreach ($result->getResponseMessages()->getCreateItemResponseMessage() as $message) {
$responseCode = $message->getResponseCode();
echo PHP_EOL . sprintf('Response code: %s', $responseCode);
$itemsCreated = $message->getItems()->getTask();
if (is_array($itemsCreated)) {
foreach ($itemsCreated as $itemCreated) {
echo PHP_EOL . sprintf('Task created with id %s', $itemCreated->getItemId()->getId());
}
} else {
echo PHP_EOL . 'No message found';
}
echo PHP_EOL;
}
} else {
/**
* In this case, we get the \SoapFault object
*/
print_r($create->getLastErrorForMethod('\Ews\ServiceType\EwsCreate::CreateItem'));
}
|