function DeleteEwsCalendarItem($username, $password, $array_item) { if (count($array_item) < 1) { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'EWS_ACTION' => 'DELETECALENDAR', 'STATUS_REQUEST' => 'EMPTY_CALENDAR_ITEM'); return $a_rdv; } $item_id = $array_item['ID']; $change_key = $array_item['CHANGEKEY']; //echo $item_id.'<br />'; //echo $change_key.'<br />'; if (trim($item_id) == '' || $item_id == null || (trim($change_key) == '' || $change_key == null)) { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'EWS_ACTION' => 'DELETECALENDAR', 'STATUS_REQUEST' => 'CALENDAR_ITEM_ID_EMPTY'); return $a_rdv; } $rootpath = APPPATH . '\\libraries'; include $rootpath . '\\config_ews\\config_ews.php'; $ews = new ExchangeWebServices($hostmail, $username, $password); $request = new EWSType_DeleteItemType(); $request->ItemIds->ItemId->Id = $item_id; $request->ItemIds->ItemId->ChangeKey = $change_key; // HARD_DELETE / MOVE_TO_DELETED_ITEMS / SOFT_DELETE $request->DeleteType = EWSType_DisposalType::HARD_DELETE; //SEND_TO_NONE //SEND_ONLY_TO_ALL //SEND_TO_ALL_AND_SAVE_COPY $request->SendMeetingCancellations = EWSType_CalendarItemCreateOrDeleteOperationType::SEND_ONLY_TO_ALL; $a_rdv = array(); try { $response = $ews->DeleteItem($request); } catch (EWS_Exception $e) { if ($e->getCode() == 401) { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'EWS_ACTION' => 'DELETECALENDAR', 'STATUS_REQUEST' => 'CONNEXION_ERROR'); } else { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'EWS_ACTION' => 'DELETECALENDAR', 'STATUS_REQUEST' => $e->getMessage()); } return $a_rdv; } $ResponseClass = $response->ResponseMessages->DeleteItemResponseMessage->ResponseClass; $ResponseCode = $response->ResponseMessages->DeleteItemResponseMessage->ResponseCode; $key_array = $item_id . '||' . $change_key; if ($ResponseClass == 'Error') { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'EWS_ACTION' => 'DELETECALENDAR', 'STATUS_REQUEST' => 'ERROR'); } else { $a_rdv[$key_array] = array("REQUEST_RESULT" => true, 'EWS_ACTION' => 'DELETECALENDAR', 'STATUS_REQUEST' => 'ITEMDELETED'); } return $a_rdv; }
<?php ini_set('max_execution_time', 0); require_once 'ExchangeWebServices.php'; require_once 'NTLMSoapClient.php'; require_once 'NTLMSoapClient/Exchange.php'; require_once 'EWS_Exception.php'; require_once 'EWSType.php'; spl_autoload_register(function ($class) { $class = explode('_', $class); if ($class[0] == 'EWSType') { require_once $class[0] . '/' . $class[1] . '.php'; } }); $ews = new ExchangeWebServices($host, $username, $password); $request = new EWSType_FindItemType(); $request->ItemShape = new EWSType_ItemResponseShapeType(); $request->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::DEFAULT_PROPERTIES; $request->Traversal = EWSType_ItemQueryTraversalType::SHALLOW; $request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType(); $request->ParentFolderIds->FolderId = new EWSType_FolderIdType(); $request->ParentFolderIds->FolderId->Id = 'AAAUAHYtYmxvdEBsZWdhbGxhaXMuY29tAC4AAAAAAMPesS06BSxGv2vT074n9t0BAGVrQK4Od55NofVQDQdf3qoAAWioEzQAAA=='; $request->ParentFolderIds->FolderId->ChangeKey = 'AQAAABYAAABla0CuDneeTaH1UA0HX96qAAFosmUp'; // request $result = $ews->FindItem($request); if ($result->ResponseMessages->FindItemResponseMessage->ResponseCode == 'NoError' && $result->ResponseMessages->FindItemResponseMessage->ResponseClass == 'Success') { $count = $result->ResponseMessages->FindItemResponseMessage->RootFolder->TotalItemsInView; for ($i = 0; $i < $count; $i++) { $message_id = $result->ResponseMessages->FindItemResponseMessage->RootFolder->Items->Message[$i]->ItemId->Id; $request = new EWSType_GetItemType(); $request->ItemShape = new EWSType_ItemResponseShapeType();
function CreateEwsCalendarItem($username, $password, $array_item) { if (count($array_item) < 1) { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'STATUS_REQUEST' => 'EMPTY_CALENDAR_ITEM'); return $a_rdv; } $rootpath = addslashes($_SERVER["DOCUMENT_ROOT"]); include $rootpath . '\\config_ews\\config_ews.php'; $ews = new ExchangeWebServices($hostmail, $username, $password); $request = new EWSType_CreateItemType(); $request->Items = new EWSType_NonEmptyArrayOfAllItemsType(); $request->Items->CalendarItem = new EWSType_CalendarItemType(); if (isset($array_item['SUJET']) == true) { if (trim($array_item['SUJET']) != '' && $array_item['SUJET'] != null) { $request->Items->CalendarItem->Subject = trim($array_item['SUJET']); } else { $request->Items->CalendarItem->Subject = ''; } } else { $request->Items->CalendarItem->Subject = ''; } if (isset($array_item['OU']) == true) { if (trim($array_item['OU']) != '' && $array_item['OU'] != null) { $request->Items->CalendarItem->Location = trim($array_item['OU']); } else { $request->Items->CalendarItem->Location = ''; } } else { $request->Items->CalendarItem->Location = ''; } $temp_start_date = $array_item['START_DATE']; $a_date = explode('-', $temp_start_date); $temp_start_date = $a_date[2] . '-' . $a_date[1] . '-' . $a_date[0]; $request->Items->CalendarItem->Start = $temp_start_date . 'T' . $array_item['START_HEURE'] . 'Z'; $temp_start_date = $array_item['END_DATE']; $a_date = explode('-', $temp_start_date); $temp_start_date = $a_date[2] . '-' . $a_date[1] . '-' . $a_date[0]; $request->Items->CalendarItem->End = $temp_start_date . 'T' . $array_item['END_HEURE'] . 'Z'; if (isset($array_item['ALLDAY']) == false) { $request->Items->CalendarItem->IsAllDayEvent = false; } else { if ($array_item['ALLDAY'] != true) { $request->Items->CalendarItem->IsAllDayEvent = false; } else { $request->Items->CalendarItem->IsAllDayEvent = true; } // false - true } if (isset($array_item['BUSYSTATUS']) == false) { $request->Items->CalendarItem->LegacyFreeBusyStatus = 'Free'; } else { if ($array_item['BUSYSTATUS'] != 'Free' && $array_item['BUSYSTATUS'] != 'Busy') { $request->Items->CalendarItem->LegacyFreeBusyStatus = 'Free'; } else { $request->Items->CalendarItem->LegacyFreeBusyStatus = $array_item['BUSYSTATUS']; } // Busy - Free } if (isset($array_item['CATEGORY']) == true) { $request->Items->CalendarItem->Categories = new EWSType_ArrayOfStringsType(); $request->Items->CalendarItem->Categories->String = $array_item['CATEGORY']; //$request->Items->CalendarItem->Categories->String = array('Catégorie Rouge','Urgent'); } if (isset($array_item['BODY']) == true) { if (trim($array_item['BODY']) != '' && $array_item['BODY'] != null) { if (isset($array_item['BODYTYPE']) != true) { $request->Items->CalendarItem->Body->BodyType = 'Text'; } else { if ($array_item['BODY'] != 'HTML') { $request->Items->CalendarItem->Body->BodyType = 'Text'; } else { $request->Items->CalendarItem->Body->BodyType = 'HTML'; } // Text - HTML } $request->Items->CalendarItem->Body->_ = trim($array_item['BODY']); } } if (isset($array_item['REQ_INVITE']) == true) { if (count($array_item['REQ_INVITE']) > 0) { // Setup the RequiredAttendees array $request->Items->CalendarItem->RequiredAttendees = array(); $array_attendees = $array_item['REQ_INVITE']; foreach ($array_attendees as $i => $array_temp) { $request->Items->CalendarItem->RequiredAttendees[$i] = new EWSType_AttendeeType(); $request->Items->CalendarItem->RequiredAttendees[$i]->Mailbox = new EWSType_EmailAddressType(); $request->Items->CalendarItem->RequiredAttendees[$i]->Mailbox->Name = $array_temp['NAME']; $request->Items->CalendarItem->RequiredAttendees[$i]->Mailbox->EmailAddress = $array_temp['EMAIL']; $request->Items->CalendarItem->RequiredAttendees[$i]->Mailbox->RoutingType = "SMTP"; } } } if (isset($array_item['OPT_INVITE']) == true) { if (count($array_item['OPT_INVITE']) > 0) { // Setup the OptionalAttendees array $request->Items->CalendarItem->OptionalAttendees = array(); $array_attendees = $array_item['OPT_INVITE']; foreach ($array_attendees as $i => $array_temp) { $request->Items->CalendarItem->OptionalAttendees[$i] = new EWSType_AttendeeType(); $request->Items->CalendarItem->OptionalAttendees[$i]->Mailbox = new EWSType_EmailAddressType(); $request->Items->CalendarItem->OptionalAttendees[$i]->Mailbox->Name = $array_temp['NAME']; $request->Items->CalendarItem->OptionalAttendees[$i]->Mailbox->EmailAddress = $array_temp['EMAIL']; $request->Items->CalendarItem->OptionalAttendees[$i]->Mailbox->RoutingType = "SMTP"; } } } //SEND_TO_NONE //SEND_ONLY_TO_ALL //SEND_TO_ALL_AND_SAVE_COPY if (isset($array_item['SENDINVIT']) == true) { switch (trim($array_item['SENDINVIT'])) { case 'SEND_TO_NONE': $request->SendMeetingInvitations = EWSType_CalendarItemCreateOrDeleteOperationType::SEND_TO_NONE; break; case 'SEND_ONLY_TO_ALL': $request->SendMeetingInvitations = EWSType_CalendarItemCreateOrDeleteOperationType::SEND_ONLY_TO_ALL; break; case 'SEND_TO_ALL_AND_SAVE_COPY': $request->SendMeetingInvitations = EWSType_CalendarItemCreateOrDeleteOperationType::SEND_TO_ALL_AND_SAVE_COPY; break; default: $request->SendMeetingInvitations = EWSType_CalendarItemCreateOrDeleteOperationType::SEND_TO_NONE; break; } } else { $request->SendMeetingInvitations = EWSType_CalendarItemCreateOrDeleteOperationType::SEND_TO_NONE; } $a_rdv = array(); try { $response = $ews->CreateItem($request); } catch (EWS_Exception $e) { if ($e->getCode() == 401) { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'STATUS_REQUEST' => 'CONNEXION_ERROR'); } else { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'STATUS_REQUEST' => $e->getMessage()); } return $a_rdv; } $ResponseClass = $response->ResponseMessages->CreateItemResponseMessage->ResponseClass; $ResponseCode = $response->ResponseMessages->CreateItemResponseMessage->ResponseCode; if ($ResponseClass == 'Error') { $a_rdv['FAILT'] = array("REQUEST_RESULT" => false, 'STATUS_REQUEST' => 'ERROR'); return $a_rdv; } $array_ech = $response->ResponseMessages->CreateItemResponseMessage->Items->CalendarItem; $key_array = $array_ech->ItemId->Id . '||' . $array_ech->ItemId->ChangeKey; $a_rdv[$key_array] = array("REQUEST_RESULT" => true, "ID" => $array_ech->ItemId->Id, "CHANGEKEY" => $array_ech->ItemId->ChangeKey); return $a_rdv; }