Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
<?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();
Ejemplo n.º 3
0
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;
}