- Merge in fixes for PHP8
- Upgrading the version of Guzzle that's used in HttpPlayback
- Upgrading the version of PHPUnit used to allow for PHP 8
- This breaks backwards compatibility with PHP 5.x
- Fixing issue of any non-success responses failing XML check (since the body is not XML)
- Fixing a problem with contacts over a different primary address introduced in
0.9.7
- Implementing CustomAuth options
- Added a
$options = []
parameter to various methods - Made
ExchangeWebServices::drillDownResponses()
static - Added a
NotificationAPI::handlePushNotification()
method - Added a
NotificationAPI::subscribeToPushNotifications()
method - Allowed
BaseFolderIdType
to any method that used to only accept FolderIdType, so you can use Distinguished IDs - Fetching the default folder for Calendar, Inbox or Contacts now just constructs the DistinguishedId instead of going to EWS
- Adding simple usage for
addReplyTo
andsetReplyTo
- Adding a simple usage for
setFrom
CalendarAPI::areAvailable
will now check for an error and throw a useful Exception- Updated the Restriction format to allow for multiple If's and nexted And's/Or's
- Fixed an issue with certain characters in the XML (Issue #180)
- Added an
options
parameter toCalendarAPI::updateCalendarItem()
- Allow strings to be passed in to
MessageType::setBccRecipients
andMessageType::setCcRecipients
as well as their functions to add recipients, just like we do for To Recipients
- Fixed some bugs with the usage of ensureIsArray
- Added
ExchangeWebServices::VERSION_2016
and support for that version in Autodiscover
- Added
API::emptyFolder(Type\FolderIdType $folderId, $deleteType = 'SoftDelete', $deleteSubFolders = false, array $options = [])
- Added
MailAPI::emptyTrash(array $options = [])
- Added
CalendarAPI::getAvailabilityFor($startTime, $endTime, array $users, array $options = [])
- Added
CalendarAPI::areAvailable($startTime, $endTime, $period, array $users, array $options = [])
- Exchange Exceptions now contain the response in
ExchangeException::getResponse()
- Added
ContactsAPI::pickCalendarFolder($displayName)
- Added
API::createContactsFolder($names, FolderIdType $parentFolder, $options = [])
- Changed the default ItemShape of
listChanges
toAllProperties
- Updated the HttpPlayback version requirement to
^1.0
- Moved HttpPlayback in to it's own library
- Removed deprecated functions
- Deprecated
API::deleteFolder
in favor ofAPI::deleteFolders()
- Moved the following classes. Old empty classes were put in place until
0.10
garethp\ews\Mail\MailAPI
->garethp\ews\MailAPI
garethp\ews\Calendar\CalendarAPI
->garethp\ews\CalendarAPI
garethp\ews\Contacts\ContactsAPI
->garethp\ews\ContactsAPI
- Introduced an experimental middleware pattern in to ExchangeWebServices to handle request transformation
- listItemChanges now returns up to 100 items, instead of 10
- Added
API::getNextPage($request)
. However, this won't work as expected for Calendar items. - Fixed a bug in
FindFolderParentType::offsetGet()
- Added docblocks to the ExchangeWebServices class
- Added
ItemUpdateBuilder::buildUpdateItemChanges()
to keep all of that logic out of the API class - Added support for deleting a whole physical address, like so
PhysicalAddress:Home
- Removed the
contacts:PhysicalAddress:Country
DictionaryURI, as it's non-existent - Added a FieldURIManager class to handle all of the FieldURI logic
- Made
API::listItemChanges
compatible with Exchange 2007 - Adding public folder example
- Fixed updating contacts postalCode or countryOrRegion
- Added more enumeration types. They're now auto-generated
- Changed
EWSAutodiscover
. Previously it existed, but it was known if it worked or not. It's now been cleaned up and tested - HTTP Playback can now playback exceptions
- Fixed value of
PhoneNumberKeyType::TTY_TTD_PHONE
- Add the ability to delete fields when updating an item
- Fixing a segmentation fault
- Changes the namespace of this package from
jamesiarmes\PEWS
togarethp\ews
- Add the ability to delete fields when updating an item
- Fixing a segmentation fault
- Added four new Exception types and corrected what
ExchangeWebServices
throws
- Added a
API::convertIdFormat($itemId, $oldFormat, $destinationFormat, $mailbox)
function
- Removed
NTLMSoapClient\Exchange
. Folded the few lines of functionality in toNTLMSoapClient
- Added
API::getServerTimezones($timezoneIDs = array(), $fullTimezoneData = false)
- Added
CalendarAPI::acceptMeeting($itemId, $message, $sensitivity = 'Private', $options = array()
- Added
CalendarAPI::declineMeeting($itemId, $message, $sensitivity = 'Private', $options = array()
- Added
ContactsAPI::createContacts($contact, $options=array())
- Added
ContactsAPI::updateContactItem($itemId, $changes)
- Added some contact examples
- Introduced the
API::deleteFolder($folderId)
method - Improved OAuth Documentation
- If a response doesn't have a 'ResponseMessages' Property (such as
GetUserAvailabilityResponseType
), then don't drill down response levels and instead simply return the response
- Added
ContactsAPI
for simple usage - Added examples for the ContactsAPI
- Added
API::getChildrenFolders($parentFolderId, $options)
- Made
FindFolderParentType
andArrayOfFoldersType
iterable like the previous updates - Added a
CalendarAPI::setFolderId($folderId)
method
MailAPI::getMailItems()
now returns theFindItemParentType
, which as of0.7.0
is iterable.
- Implemented
ArrayAccess
,AggregateIterator
andCountable
onArrayOfRealItemsType
,FindItemParentType
andGroupedItemsType
to let you iterate over them directly. This should allow you to use responses more effectively and access other data that was previous lost (such as whether or not the responses returned were paginated). This is a breaking change becausegetCalendarItems()
now returned aFindItemParentType
object which, while you can use as an array, will return false on is_array()
- Adding an option to get the raw responses from requests instead of having them drilled down automatically
- getAttachment not returns the mimeContent of the attachment, which will allow for saving the file
- Added
ItemAttachmentType::getItemAttachment()
which will return whichever item is not null - Field URI's for updating items are now case insensitive and will either return preference:name or item:name or throw and exception
- Fixed a bug in
CalendarAPI::createCalendarItems()
that caused options not to be overridden
- Added an
$options
parameter inCalendarAPI::createCalendarItems($items, $options)
to allow you to override the default options - Allow you to create
ItemIdType
with only an$itemId
and not a$changeKey
- Extracted the authentication part of the call in to a configuration option for future authentication
- Added an
ExchangeWebServicesAuth
class for generating these options - Moved API and ExchangeWebServices constructors to static functions.
$api->buildClient()
will now be deprecated and removed in 0.7.0. Please use$api = API::withUsernameAndPassword($server, $username, $password)
instead - Added support for Office 365 with tokens instead of usernames and passwords. This is an experimental feature
- Fixed a bug where Guzzle wasn't actually attempting NTLM Authentication. It does now
- Fixed file names for the recordings for the test. This should allow installation on windows machines again
- Added a
FolderIdType $folderId
option toMailAPI::getMailItems()
andMailAPI::getUnreadMailItems()
. Because this is a minor BC breaking change, it gets a new new minor version, since this is a pre-1.0 release.
- Added an
API::getMailbox(string $folderName = null)
function - Added a
MailAPI::setFolderId(FolderIdType $folderId)
function - Added a
MailAPI::pickMailboxFolder(string $displayName, string|FolderIdType $parentFolder)
function - With the above functions you can now get mail items from folders other than the inbox
- Version 0.6.0+ will change the
getMailItems
signature to include a folder to pick from as well
- Fixing but in
MailAPI::markEmailAsRead()
and allowing you to set it as unread through the same function
- Adding ability to get the attachments of an eamil
- Fixed a test for Travis to pass
- Allows the parentFolder in getFolderByDisplayName to be a folderId or a string
- Added simple support for creating folders
- Added simple support for moving items
- Added simple support for restrictions when getting mail
- Fixed support for impersonation and access of other mailboxes by including the primarySmtpEmailAddress option, which will automatically be sent to the server when you request a folderId()
- Fixed result for updateCalendarItem
- Replaced all array_merge with array_replace_recursive
- Added a constructor for ItemIdType
- Added an example for sending mail
- Massive Breaking Change
- Some basic mail fetching functions
- Easy to use examples
- Objects for everything. All Auto-Generated
- Made impersonating users easier
- Updating Type::buildFromArray
- Added Body to typemap
- Added automatic getters and setters (
$calenderItem->getSubject()
for CalendarItem example) - Added automatic casting for Start and End in CalendarItem (
$calendarItem->setStart(new \DateTime())
will work)
- Made HttpPlayback to be instanced instead of static (Can make it write to more than one file)
- Added Automatic getters and setters for items (Can do $item->getItemId() for example)
- Added CalendarItem to the classmap for SoapClient (Getting CalendarItems will return that class now)
- Added a TODO file
- Fixed bug where setting recordLocation sets to mode
- Added Changelog
- Added
deleteItems($items, $options = array())
anddeleteCalendarItem($itemId, $changeKey)
- Added
deleteAllCalendarItems($from = '12:00 AM', $to = '11:59 PM');
- Added support for DateTime to be passed in to
getCalendarItems
anddeleteAllCalendarItems
- Added support for Timezones to be passed in
- Added HttpPlayback abilities
- Improved some unit tests
- Improved outputs to remove levels of traversal
- Initial Release of the PSR-4 version of php-ews