From b409fbb72591b43df7431e83e30d6c00ea633f21 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 5 Apr 2018 15:08:52 +0200 Subject: [locationinfo] Add exchange backend Closes #3170 --- .../jamesiarmes/PhpEws/Client.php | 1702 ++++++++++++++++++++ 1 file changed, 1702 insertions(+) create mode 100644 modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php (limited to 'modules-available/locationinfo/exchange-includes/jamesiarmes/PhpEws/Client.php') 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 @@ +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; + } +} -- cgit v1.2.3-55-g7522