summaryrefslogtreecommitdiffstats
path: root/modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php')
-rw-r--r--modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php1702
1 files changed, 1702 insertions, 0 deletions
diff --git a/modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php b/modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php
new file mode 100644
index 00000000..c25d7ecc
--- /dev/null
+++ b/modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php
@@ -0,0 +1,1702 @@
+<?php
+/**
+ * Contains \jamesiarmes\PhpEws\Client.
+ */
+
+namespace jamesiarmes\PhpEws;
+
+use \jamesiarmes\PhpNtlm\SoapClient;
+
+/**
+ * Base class of the Exchange Web Services application.
+ *
+ * @package php-ews\Client
+ */
+class Client
+{
+ /**
+ * Microsoft Exchange 2007
+ *
+ * @var string
+ */
+ const VERSION_2007 = 'Exchange2007';
+
+ /**
+ * Microsoft Exchange 2007 SP1
+ *
+ * @var string
+ */
+ const VERSION_2007_SP1 = 'Exchange2007_SP1';
+
+ /**
+ * Microsoft Exchange 2007 SP2
+ *
+ * @var string
+ */
+ const VERSION_2009 = 'Exchange2009';
+
+ /**
+ * Microsoft Exchange 2010
+ *
+ * @var string
+ */
+ const VERSION_2010 = 'Exchange2010';
+
+ /**
+ * Microsoft Exchange 2010 SP1
+ *
+ * @var string
+ */
+ const VERSION_2010_SP1 = 'Exchange2010_SP1';
+
+ /**
+ * Microsoft Exchange 2010 SP2
+ *
+ * @var string
+ */
+ const VERSION_2010_SP2 = 'Exchange2010_SP2';
+
+ /**
+ * Microsoft Exchange 2013.
+ *
+ * @var string
+ */
+ const VERSION_2013 = 'Exchange2013';
+
+ /**
+ * Microsoft Exchange 2013 SP1.
+ *
+ * @var string
+ */
+ const VERSION_2013_SP1 = 'Exchange2013_SP1';
+
+ /**
+ * Microsoft Exchange 2016.
+ *
+ * @var string
+ */
+ const VERSION_2016 = 'Exchange2016';
+
+ /**
+ * cURL options to be passed to the SOAP client.
+ *
+ * @var array
+ */
+ protected $curl_options = array();
+
+ /**
+ * SOAP headers used for requests.
+ *
+ * @var \SoapHeader[]
+ */
+ protected $headers = array();
+
+ /**
+ * Password to use when connecting to the Exchange server.
+ *
+ * @var string
+ */
+ protected $password;
+
+ /**
+ * Location of the Exchange server.
+ *
+ * @var string
+ */
+ protected $server;
+
+ /**
+ * SOAP client used to make the request
+ *
+ * @var \jamesiarmes\PhpNtlm\SoapClient
+ */
+ protected $soap;
+
+ /**
+ * Timezone to be used for all requests.
+ *
+ * @var string
+ */
+ protected $timezone;
+
+ /**
+ * Username to use when connecting to the Exchange server.
+ *
+ * @var string
+ */
+ protected $username;
+
+ /**
+ * Exchange impersonation
+ *
+ * @var \jamesiarmes\PhpEws\Type\ExchangeImpersonationType
+ */
+ protected $impersonation;
+
+ /**
+ * Microsoft Exchange version that we are going to connect to
+ *
+ * @var string
+ *
+ * @see Client::VERSION_2007
+ * @see Client::VERSION_2007_SP1
+ * @see Client::VERSION_2007_SP2
+ * @see Client::VERSION_2007_SP3
+ * @see Client::VERSION_2010
+ * @see Client::VERSION_2010_SP1
+ * @see Client::VERSION_2010_SP2
+ */
+ protected $version;
+
+ /**
+ * Constructor for the ExchangeWebServices class
+ *
+ * @param string $server
+ * @param string $username
+ * @param string $password
+ * @param string $version
+ * One of the Client::VERSION_* constants.
+ */
+ public function __construct(
+ $server = null,
+ $username = null,
+ $password = null,
+ $version = self::VERSION_2013
+ ) {
+ // Set the object properties.
+ $this->setServer($server);
+ $this->setUsername($username);
+ $this->setPassword($password);
+ $this->setVersion($version);
+ }
+
+ /**
+ * Returns the SOAP Client that may be used to make calls against the server
+ *
+ * @return \jamesiarmes\PhpNtlm\SoapClient
+ */
+ public function getClient()
+ {
+ // If the SOAP client has yet to be initialized then do so now.
+ if (empty($this->soap)) {
+ $this->initializeSoapClient();
+ }
+
+ return $this->soap;
+ }
+
+ /**
+ * Sets the cURL options that will be set on the SOAP client.
+ *
+ * @param array $options
+ */
+ public function setCurlOptions(array $options)
+ {
+ $this->curl_options = $options;
+
+ // We need to reinitialize the SOAP client.
+ $this->soap = null;
+ }
+
+ /**
+ * Sets the impersonation property
+ *
+ * @param \jamesiarmes\PhpEws\Type\ExchangeImpersonationType $impersonation
+ */
+ public function setImpersonation($impersonation)
+ {
+ $this->impersonation = $impersonation;
+
+ // We need to re-build the SOAP headers.
+ $this->headers = array();
+ }
+
+ /**
+ * Sets the password property
+ *
+ * @param string $password
+ */
+ public function setPassword($password)
+ {
+ $this->password = $password;
+
+ // We need to reinitialize the SOAP client.
+ $this->soap = null;
+ }
+
+ /**
+ * Sets the server property
+ *
+ * @param string $server
+ */
+ public function setServer($server)
+ {
+ $this->server = $server;
+
+ // We need to reinitialize the SOAP client.
+ $this->soap = null;
+ }
+
+ /**
+ * Sets the timezone to be used for all requests.
+ *
+ * @param string $timezone
+ */
+ public function setTimezone($timezone)
+ {
+ $this->timezone = $timezone;
+
+ // We need to re-build the SOAP headers.
+ $this->headers = array();
+ }
+
+ /**
+ * Sets the user name property
+ *
+ * @param string $username
+ */
+ public function setUsername($username)
+ {
+ $this->username = $username;
+
+ // We need to reinitialize the SOAP client.
+ $this->soap = null;
+ }
+
+ /**
+ * Sets the version property
+ *
+ * @param string $version
+ */
+ public function setVersion($version)
+ {
+ $this->version = $version;
+
+ // We need to re-build the SOAP headers.
+ $this->headers = array();
+ }
+
+ /**
+ * Adds one or more delegates to a principal's mailbox and sets specific
+ * access permissions.
+ *
+ * @since Exchange 2007 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\AddDelegateType $request
+ * @return \jamesiarmes\PhpEws\Response\AddDelegateResponseMessageType
+ */
+ public function AddDelegate($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Adds a distribution group to the instant messaging (IM) list in the
+ * Unified Contact Store.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\AddDistributionGroupToImListType $request
+ * @return \jamesiarmes\PhpEws\Response\AddDistributionGroupToImListResponseMessageType
+ */
+ public function AddDistributionGroupToImList($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Adds an existing instant messaging (IM) contact to a group.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\AddImContactToGroup $request
+ * @return \jamesiarmes\PhpEws\Response\AddImContactToGroupResponseMessageType
+ */
+ public function AddImContactToGroup($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Adds a new instant messaging (IM) group to a mailbox.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\AddImGroupType $request
+ * @return \jamesiarmes\PhpEws\Response\AddImGroupResponseMessageType
+ */
+ public function AddImGroup($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Adds a new contact to an instant messaging (IM) group.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\AddNewImContactToGroup $request
+ * @return \jamesiarmes\PhpEws\Response\AddNewImContactToGroupResponseMessageType
+ */
+ public function AddNewImContactToGroup($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Adds a new contact to a group based on a contact's phone number.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\AddNewTelUriContactToGroupType $request
+ * @return \jamesiarmes\PhpEws\Response\AddNewTelUriContactToGroupResponse
+ */
+ public function AddNewTelUriContactToGroup($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Sets a one-time or follow up action on all the items in a conversation.
+ *
+ * This operation allows you to categorize, move, copy, delete, and set the
+ * read state on all items in a conversation. Actions can also be set for
+ * new messages in a conversation.
+ *
+ * @since Exchange 2010 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\ApplyConversationActionType $request
+ * @return \jamesiarmes\PhpEws\Response\ApplyConversationActionResponseType
+ */
+ public function ApplyConversationAction($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Moves an item into the mailbox user's archive mailbox.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\ArchiveItemType $request
+ * @return \jamesiarmes\PhpEws\Response\ArchiveItemResponse
+ */
+ public function ArchiveItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Converts item and folder identifiers between formats that are accepted by
+ * Exchange Online, Exchange Online as part of Office 365, and on-premises
+ * versions of Exchange.
+ *
+ * @since Exchange 2007 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\ConvertIdType $request
+ * @return \jamesiarmes\PhpEws\Response\ConvertIdResponseType
+ */
+ public function ConvertId($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Copies folders in a mailbox.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\CopyFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\CopyFolderResponseType
+ */
+ public function CopyFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Copies items and puts the items in a different folder.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\CopyItemType $request
+ * @return \jamesiarmes\PhpEws\Response\CopyItemResponseType
+ */
+ public function CopyItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Creates either an item or file attachment and attaches it to the
+ * specified item.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\CreateAttachmentType $request
+ * @return \jamesiarmes\PhpEws\Response\CreateAttachmentResponseType
+ */
+ public function CreateAttachment($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Creates folders, calendar folders, contacts folders, tasks folders, and
+ * search folders.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\CreateFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\CreateFolderResponseType
+ */
+ public function CreateFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Creates a folder hierarchy.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\CreateFolderPathType $request
+ * @return \jamesiarmes\PhpEws\Response\CreateFolderPathResponseType
+ */
+ public function CreateFolderPath($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Creates items in the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\CreateItemType $request
+ * @return \jamesiarmes\PhpEws\Response\CreateItemResponseType
+ */
+ public function CreateItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Creates a managed folder in the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\CreateManagedFolderRequestType $request
+ * @return \jamesiarmes\PhpEws\Response\CreateManagedFolderResponseType
+ */
+ public function CreateManagedFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Creates a user configuration object on a folder.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\CreateUserConfigurationType $request
+ * @return \jamesiarmes\PhpEws\Response\CreateUserConfigurationResponseType
+ */
+ public function CreateUserConfiguration($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Deletes file and item attachments from an existing item in the Exchange
+ * store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\DeleteAttachmentType $request
+ * @return \jamesiarmes\PhpEws\Response\DeleteAttachmentResponseType
+ */
+ public function DeleteAttachment($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Deletes folders from a mailbox.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\DeleteFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\DeleteFolderResponseType
+ */
+ public function DeleteFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Deletes items in the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\DeleteItemType $request
+ * @return \jamesiarmes\PhpEws\Response\DeleteItemResponseType
+ */
+ public function DeleteItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Deletes a user configuration object on a folder.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\DeleteUserConfigurationType $request
+ * @return \jamesiarmes\PhpEws\Response\DeleteUserConfigurationResponseType
+ */
+ public function DeleteUserConfiguration($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Disables a mail app for Outlook.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\DisableAppType $request
+ * @return \jamesiarmes\PhpEws\Response\DisableAppResponseType
+ */
+ public function DisableApp($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Terminates a telephone call.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\DisconnectPhoneCallType $request
+ * @return \jamesiarmes\PhpEws\Response\DisconnectPhoneCallResponseMessageType
+ */
+ public function DisconnectPhoneCall($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Empties folders in a mailbox.
+ *
+ * Optionally, this operation enables you to delete the subfolders of the
+ * specified folder. When a subfolder is deleted, the subfolder and the
+ * messages within the subfolder are deleted.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\EmptyFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\EmptyFolderResponseType
+ */
+ public function EmptyFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Exposes the full membership of distribution lists.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\ExpandDLType $request
+ * @return \jamesiarmes\PhpEws\Response\ExpandDLResponseType
+ */
+ public function ExpandDL($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Exports items out of a mailbox.
+ *
+ * @since Exchange 2010 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\ExportItemsType $request
+ * @return \jamesiarmes\PhpEws\Response\ExportItemsResponseType
+ */
+ public function ExportItems($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Enumerates a list of conversations in a folder.
+ *
+ * @param \jamesiarmes\PhpEws\Request\FindConversationType $request
+ * @return \jamesiarmes\PhpEws\Response\FindConversationResponseMessageType
+ */
+ public function FindConversation($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Finds subfolders of an identified folder and returns a set of properties
+ * that describe the set of subfolders.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\FindFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\FindFolderResponseType
+ */
+ public function FindFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Searches for items that are located in a user’s mailbox.
+ *
+ * This operation provides many ways to filter and format how search results
+ * are returned to the caller.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\FindItemType $request
+ * @return \jamesiarmes\PhpEws\Response\FindItemResponseType
+ */
+ public function FindItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Finds messages that meet the specified criteria.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\FindMessageTrackingReportRequestType $request
+ * @return \jamesiarmes\PhpEws\Response\FindMessageTrackingReportResponseMessageType
+ */
+ public function FindMessageTrackingReport($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Returns all persona objects from a specified Contacts folder or retrieves
+ * contacts that match a specified query string.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\FindPeopleType $request
+ * @return \jamesiarmes\PhpEws\Response\FindPeopleResponseMessageType
+ */
+ public function FindPeople($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves app manifests.
+ *
+ * @since Exchange 2013 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetAppManifestsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetAppManifestsResponseType
+ */
+ public function GetAppManifests($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the URL for the app marketplace that a client can visit to
+ * acquire apps to install in a mailbox.
+ *
+ * @since Exchange 2013 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetAppMarketplaceUrl $request
+ * @return \jamesiarmes\PhpEws\Response\GetAppMarketplaceUrlResponseMessageType
+ */
+ public function GetAppMarketplaceUrl($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves existing attachments on items in the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetAttachmentType $request
+ * @return \jamesiarmes\PhpEws\Response\GetAttachmentResponseType
+ */
+ public function GetAttachment($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Gets a client access token for a mail app for Outlook.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetClientAccessTokenType $request
+ * @return \jamesiarmes\PhpEws\Response\GetClientAccessTokenResponseType
+ */
+ public function GetClientAccessToken($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves one or more sets of items that are organized in to nodes in a
+ * conversation.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetConversationItemsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetConversationItemsResponseType
+ */
+ public function GetConversationItems($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the delegate settings for a specified mailbox.
+ *
+ * @since Exchange 2007 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetDelegateType $request
+ * @return \jamesiarmes\PhpEws\Response\GetDelegateResponseMessageType
+ */
+ public function GetDelegate($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Returns configuration information for in-place holds, saved discovery
+ * searches, and the mailboxes that are enabled for discovery search.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetDiscoverySearchConfigurationType $request
+ * @return \jamesiarmes\PhpEws\Response\GetDiscoverySearchConfigurationResponseMessageType
+ */
+ public function GetDiscoverySearchConfiguration($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Used by pull subscription clients to request notifications from the
+ * Client Access server.
+ *
+ * The response returns an array of items and events that have occurred in a
+ * mailbox since the last the notification.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetEventsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetEventsResponseType
+ */
+ public function GetEvents($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Gets folders from the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\GetFolderResponseType
+ */
+ public function GetFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the mailboxes that are under a specific hold and the associated
+ * hold query.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetHoldOnMailboxesType $request
+ * @return \jamesiarmes\PhpEws\Response\GetHoldOnMailboxesResponseMessageType
+ */
+ public function GetHoldOnMailboxes($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the list of instant messaging (IM) groups and IM contact
+ * personas in a mailbox.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetImItemListType $request
+ * @return \jamesiarmes\PhpEws\Response\GetImItemListResponseMessageType
+ */
+ public function GetImItemList($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves information about instant messaging (IM) groups and IM contact
+ * personas.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetImItemsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetImItemsResponse
+ */
+ public function GetImItems($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves Inbox rules in the identified user's mailbox.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetInboxRulesRequestType $request
+ * @return \jamesiarmes\PhpEws\Response\GetInboxRulesResponseType
+ */
+ public function GetInboxRules($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Gets folders from the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetItemType $request
+ * @return \jamesiarmes\PhpEws\Response\GetItemResponseType
+ */
+ public function GetItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the mail tips information for the specified mailbox.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetMailTipsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetMailTipsResponseMessageType
+ */
+ public function GetMailTips($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves tracking information about the specified messages.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetMessageTrackingReportRequestType $request
+ * @return \jamesiarmes\PhpEws\Response\GetMessageTrackingReportResponseMessageType
+ */
+ public function GetMessageTrackingReport($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves details about items that cannot be indexed.
+ *
+ * This includes, but is not limited to, the item identifier, an error code,
+ * an error description, when an attempt was made to index the item, and
+ * additional information about the file.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetNonIndexableItemDetailsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetNonIndexableItemDetailsResponseMessageType
+ */
+ public function GetNonIndexableItemDetails($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the count of items that cannot be indexed in a mailbox.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetNonIndexableItemStatisticsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetNonIndexableItemStatisticsResponseMessageType
+ */
+ public function GetNonIndexableItemStatistics($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Provides the email account password expiration date for the current user.
+ *
+ * @since Exchange 2010 SP2
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetPasswordExpirationDateType $request
+ * @return \jamesiarmes\PhpEws\Response\GetPasswordExpirationDateResponseMessageType
+ */
+ public function GetPasswordExpirationDate($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves a set of properties that are associated with a persona.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetPersonaType $request
+ * @return \jamesiarmes\PhpEws\Response\GetPersonaResponseMessageType
+ */
+ public function GetPersona($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves information about the specified telephone call.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetPhoneCallInformationType $request
+ * @return \jamesiarmes\PhpEws\Response\GetPhoneCallInformationResponseMessageType
+ */
+ public function GetPhoneCallInformation($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves reminders for calendar and task items.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetRemindersType $request
+ * @return \jamesiarmes\PhpEws\Response\GetRemindersResponseMessageType
+ */
+ public function GetReminders($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the room lists that are available within the Exchange
+ * organization.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetRoomListsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetRoomListsResponseMessageType
+ */
+ public function GetRoomLists($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the rooms within the specified room list.
+ *
+ * @since Exchange 2010 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetRoomsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetRoomsResponseMessageType
+ */
+ public function GetRooms($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves a scoped set of searchable mailboxes for discovery searches.
+ *
+ * The scope of searchable mailboxes returned in the response is determined
+ * by the search filter and whether distribution group membership is
+ * expanded.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetSearchableMailboxesType $request
+ * @return \jamesiarmes\PhpEws\Response\GetSearchableMailboxesResponseMessageType
+ */
+ public function GetSearchableMailboxes($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieve the timezones supported by the server.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetServerTimeZonesType $request
+ * @return \jamesiarmes\PhpEws\Response\GetServerTimeZonesResponseType
+ */
+ public function GetServerTimeZones($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves configuration information for the specified type of service.
+ *
+ * This operation can return configuration settings for the Unified
+ * Messaging, Protection Rules, and Mail Tips services.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetServiceConfigurationType $request
+ * @return \jamesiarmes\PhpEws\Response\GetServiceConfigurationResponseMessageType
+ */
+ public function GetServiceConfiguration($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves the local folder identifier of a specified shared folder.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetSharingFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\GetSharingFolderResponseMessageType
+ */
+ public function GetSharingFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Gets an opaque authentication token that identifies a sharing invitation.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetSharingMetadataType $request
+ * @return \jamesiarmes\PhpEws\Response\GetSharingMetadataResponseMessageType
+ */
+ public function GetSharingMetadata($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Requests notifications from the Client Access server.
+ *
+ * The GetStreamingEvents response returns an array of items and events that
+ * have occurred in a mailbox since the last the notification.
+ *
+ * @since Exchange 2010 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetStreamingEventsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetStreamingEventsResponseType
+ */
+ public function GetStreamingEvents($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Provides detailed information about the availability of a set of users,
+ * rooms, and resources within a specified time period.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetUserAvailabilityRequestType $request
+ * @return \jamesiarmes\PhpEws\Response\GetUserAvailabilityResponseType
+ */
+ public function GetUserAvailability($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves a user configuration object from a folder.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetUserConfigurationType $request
+ * @return \jamesiarmes\PhpEws\Response\GetUserConfigurationResponseType
+ */
+ public function GetUserConfiguration($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Gets a mailbox user's Out of Office (OOF) settings and messages.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetUserOofSettingsRequest $request
+ * @return \jamesiarmes\PhpEws\Response\GetUserOofSettingsResponse
+ */
+ public function GetUserOofSettings($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves a user photo from Active Directory Domain Services (AD DS).
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetUserPhotoType $request
+ * @return \jamesiarmes\PhpEws\Response\GetUserPhotoResponseMessageType
+ */
+ public function GetUserPhoto($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Retrieves a list of all default, system folder, and personal tags that
+ * are associated with a user by means of a system policy or that were
+ * applied by the user.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\GetUserRetentionPolicyTagsType $request
+ * @return \jamesiarmes\PhpEws\Response\GetUserRetentionPolicyTagsResponseMessageType
+ */
+ public function GetUserRetentionPolicyTags($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Installs a mail app for Outlook in a mailbox.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\InstallAppType $request
+ * @return \jamesiarmes\PhpEws\Response\InstallAppResponseType
+ */
+ public function InstallApp($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Sets the IsRead property on all items, in one or more folders, to
+ * indicate that all items are either read or unread.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\MarkAllItemsAsRead $request
+ * @return \jamesiarmes\PhpEws\Response\MarkAllItemsAsReadResponseType
+ */
+ public function MarkAllItemsAsRead($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Adds and removes users from the blocked email list and moves email
+ * messages to the Junk Email folder.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\MarkAsJunkType $request
+ * @return \jamesiarmes\PhpEws\Response\MarkAsJunkResponseType
+ */
+ public function MarkAsJunk($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Moves folders from a specified folder and puts them in another folder.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\MoveFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\MoveFolderResponseType
+ */
+ public function MoveFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Moves one or more items to a single destination folder.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\MoveItemType $request
+ * @return \jamesiarmes\PhpEws\Response\MoveItemResponseType
+ */
+ public function MoveItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Initiates a dismiss or snooze action on a reminder.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\PerformReminderActionType $request
+ * @return \jamesiarmes\PhpEws\Response\PerformReminderActionResponseMessageType
+ */
+ public function PerformReminderAction($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Initiates an outbound call and plays a message over the telephone.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\PlayOnPhoneType $request
+ * @return \jamesiarmes\PhpEws\Response\PlayOnPhoneResponseMessageType
+ */
+ public function PlayOnPhone($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Refreshes the specified local folder with the latest data from the folder
+ * that is being shared.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\RefreshSharingFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\RefreshSharingFolderResponseMessageType
+ */
+ public function RefreshSharingFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Removes contacts from the Lync instant messaging (IM) list when Lync uses
+ * Exchange for the contact store.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\RemoveContactFromImListType $request
+ * @return \jamesiarmes\PhpEws\Response\RemoveContactFromImListResponseMessageType
+ */
+ public function RemoveContactFromImList($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Removes one or more delegates from a user's mailbox.
+ *
+ * @since Exchange 2007 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\RemoveDelegateType $request
+ * @return \jamesiarmes\PhpEws\Response\RemoveDelegateResponseMessageType
+ */
+ public function RemoveDelegate($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Removes a distribution group from the Lync instant messaging (IM) list
+ * when Lync uses Exchange for the contact store.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\RemoveDistributionGroupFromImListType $request
+ * @return \jamesiarmes\PhpEws\Response\RemoveDistributionGroupFromImListResponseMessageType
+ */
+ public function RemoveDistributionGroupFromImList($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Removes a single IM contact from an IM group.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\RemoveImContactFromGroupType $request
+ * @return \jamesiarmes\PhpEws\Response\RemoveImContactFromGroupResponseMessageType
+ */
+ public function RemoveImContactFromGroup($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Removes a single instant messaging (IM) group from a mailbox.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\RemoveImGroupType $request
+ * @return \jamesiarmes\PhpEws\Response\RemoveImGroupResponseMessageType
+ */
+ public function RemoveImGroup($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Resolves ambiguous email addresses and display names.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\ResolveNamesType $request
+ * @return \jamesiarmes\PhpEws\Response\ResolveNamesResponseType
+ */
+ public function ResolveNames($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Searches mailboxes for occurrences of terms in mailbox items.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\SearchMailboxesType $request
+ * @return \jamesiarmes\PhpEws\Response\SearchMailboxesResponseType
+ */
+ public function SearchMailboxes($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Sends e-mail messages that are located in the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\SendItemType $request
+ * @return \jamesiarmes\PhpEws\Response\SendItemResponseType
+ */
+ public function SendItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Sets a mailbox hold policy on mailboxes.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\SetHoldOnMailboxesType $request
+ * @return \jamesiarmes\PhpEws\Response\SetHoldOnMailboxesResponseMessageType
+ */
+ public function SetHoldOnMailboxes($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Changes the display name of an instant messaging (IM) group.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\SetImGroupType $request
+ * @return \jamesiarmes\PhpEws\Response\SetImGroupResponseMessageType
+ */
+ public function SetImGroup($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Sets a mailbox user's Out of Office (OOF) settings and message.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\SetUserOofSettingsRequest $request
+ * @return \jamesiarmes\PhpEws\Response\SetUserOofSettingsResponse
+ */
+ public function SetUserOofSettings($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Subscribes client applications to either push or pull notifications.
+ *
+ * It is important to be aware that the structure of the request messages
+ * and responses is different depending on the type of event notification.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\SubscribeType $request
+ * @return \jamesiarmes\PhpEws\Response\SubscribeResponseType
+ */
+ public function Subscribe($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Synchronizes folders between the computer that is running Microsoft
+ * Exchange Server and the client.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\SyncFolderHierarchyType $request
+ * @return \jamesiarmes\PhpEws\Response\SyncFolderHierarchyResponseType
+ */
+ public function SyncFolderHierarchy($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Synchronizes items between the Exchange server and the client.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\SyncFolderItemsType $request
+ * @return \jamesiarmes\PhpEws\Response\SyncFolderItemsResponseType
+ */
+ public function SyncFolderItems($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Uninstalls a mail app for Outlook.
+ *
+ * @since Exchange 2013
+ *
+ * @param \jamesiarmes\PhpEws\Request\UninstallAppType $request
+ * @return \jamesiarmes\PhpEws\Response\UninstallAppResponseType
+ */
+ public function UninstallApp($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Ends a pull notification subscription.
+ *
+ * Use this operation rather than letting a subscription timeout. This
+ * operation is only valid for pull notifications.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\UnsubscribeType $request
+ * @return \jamesiarmes\PhpEws\Response\UnsubscribeResponseType
+ */
+ public function Unsubscribe($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Updates delegate permissions on a principal's mailbox.
+ *
+ * @since Exchange 2007 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\UpdateDelegateType $request
+ * @return \jamesiarmes\PhpEws\Response\UpdateDelegateResponseMessageType
+ */
+ public function UpdateDelegate($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Modifies properties of an existing item in the Exchange store.
+ *
+ * Each UpdateFolder operation consists of the following:
+ * - A FolderId element that specifies a folder to update.
+ * - An internal path of an element in the folder, as specified by the
+ * folder shape, which specifies the data to update.
+ * - A folder that contains the new value of the updated field, if the
+ * update is not a deletion.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\UpdateFolderType $request
+ * @return \jamesiarmes\PhpEws\Response\UpdateFolderResponseType
+ */
+ public function UpdateFolder($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Updates the authenticated user's Inbox rules by applying the specified
+ * operations.
+ *
+ * This operation is used to create an Inbox rule, to set an Inbox rule, or
+ * to delete an Inbox rule.
+ *
+ * @since Exchange 2010 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\UpdateInboxRulesRequestType $request
+ * @return \jamesiarmes\PhpEws\Response\UpdateInboxRulesResponseType
+ */
+ public function UpdateInboxRules($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Used to modify the properties of an existing item in the Exchange store.
+ *
+ * @since Exchange 2007
+ *
+ * @param \jamesiarmes\PhpEws\Request\UpdateItemType $request
+ * @return \jamesiarmes\PhpEws\Response\UpdateItemResponseType
+ */
+ public function UpdateItem($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Updates a user configuration object on a folder.
+ *
+ * @since Exchange 2010
+ *
+ * @param \jamesiarmes\PhpEws\Request\UpdateUserConfigurationType $request
+ * @return \jamesiarmes\PhpEws\Response\UpdateUserConfigurationResponseType
+ */
+ public function UpdateUserConfiguration($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Uploads a stream of items into an Exchange mailbox.
+ *
+ * @since Exchange 2010 SP1
+ *
+ * @param \jamesiarmes\PhpEws\Request\UploadItemsType $request
+ * @return \jamesiarmes\PhpEws\Response\UploadItemsResponseType
+ */
+ public function UploadItems($request)
+ {
+ return $this->makeRequest(__FUNCTION__, $request);
+ }
+
+ /**
+ * Initializes the SoapClient object to make a request
+ *
+ * @return \jamesiarmes\PhpNtlm\SoapClient
+ */
+ protected function initializeSoapClient()
+ {
+ $this->soap = new SoapClient(
+ dirname(__FILE__) . '/assets/services.wsdl',
+ array(
+ 'user' => $this->username,
+ 'password' => $this->password,
+ 'location' => 'https://' . $this->server . '/EWS/Exchange.asmx',
+ 'classmap' => ClassMap::getMap(),
+ 'curlopts' => $this->curl_options,
+ 'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
+ )
+ );
+
+ return $this->soap;
+ }
+
+ /**
+ * Makes the SOAP call for a request.
+ *
+ * @param string $operation
+ * The operation to be called.
+ * @param \jamesiarmes\PhpEws\Request $request
+ * The request object for the operation.
+ * @return \jamesiarmes\PhpEws\Response
+ * The response object for the operation.
+ */
+ protected function makeRequest($operation, $request)
+ {
+ $this->getClient()->__setSoapHeaders($this->soapHeaders());
+ $response = $this->soap->{$operation}($request);
+
+ return $this->processResponse($response);
+ }
+
+ /**
+ * Process a response to verify that it succeeded and take the appropriate
+ * action
+ *
+ * @throws \Exception
+ *
+ * @param \stdClass $response
+ * @return \stdClass
+ */
+ protected function processResponse($response)
+ {
+ // If the soap call failed then we need to throw an exception.
+ $code = $this->soap->getResponseCode();
+ if ($code != 200) {
+ throw new \Exception(
+ "SOAP client returned status of $code.",
+ $code
+ );
+ }
+
+ return $response;
+ }
+
+ /**
+ * Builds the soap headers to be included with the request.
+ *
+ * @return \SoapHeader[]
+ */
+ protected function soapHeaders()
+ {
+ // If the headers have already been built, no need to do so again.
+ if (!empty($this->headers)) {
+ return $this->headers;
+ }
+
+ $this->headers = array();
+
+ // Set the schema version.
+ $this->headers[] = new \SoapHeader(
+ 'http://schemas.microsoft.com/exchange/services/2006/types',
+ 'RequestServerVersion Version="' . $this->version . '"'
+ );
+
+ // If impersonation was set then add it to the headers.
+ if (!empty($this->impersonation)) {
+ $this->headers[] = new \SoapHeader(
+ 'http://schemas.microsoft.com/exchange/services/2006/types',
+ 'ExchangeImpersonation',
+ $this->impersonation
+ );
+ }
+
+ if (!empty($this->timezone)) {
+ $this->headers[] = new \SoapHeader(
+ 'http://schemas.microsoft.com/exchange/services/2006/types',
+ 'TimeZoneContext',
+ array(
+ 'TimeZoneDefinition' => array(
+ 'Id' => $this->timezone,
+ )
+ )
+ );
+ }
+
+ return $this->headers;
+ }
+}