public static function Test($scheme, $server, $port, $userName, $userPassword, $mailbox, $arPFolders = array(), $bDebug = false) { $arAvailableFolders = array("calendar", "contacts", "tasks"); if (!is_array($arPFolders)) { $arPFolders = array($arPFolders); } $arFolders = array(); foreach ($arPFolders as $value) { if (in_array($value, $arAvailableFolders)) { $arFolders[] = $value; } } if (count($arFolders) <= 0) { $arFolders = $arAvailableFolders; } $arMessages = array(); if (in_array("calendar", $arFolders)) { $e = new CDavExchangeCalendar($scheme, $server, $port, $userName, $userPassword); if ($bDebug) { $e->Debug(); } $calendarId = null; $r = $e->AddCalendar(array("NAME" => "TestCalendarFolderName4", "MAILBOX" => $mailbox)); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $calendarId = $v; } if (is_null($calendarId)) { $arMessages[] = array("ERROR", "Calendar folder creation error."); } else { $arMessages[] = array("SUCCESS", "Calendar folder was successfully created (Id = " . $calendarId["XML_ID"] . ", ChangeKey = " . $calendarId["MODIFICATION_LABEL"] . ")."); $r = $e->UpdateCalendar($calendarId, array("NAME" => "New TestCalendarFolderName4")); $arMessages = array_merge($arMessages, $e->GetErrors()); $calendarId = null; foreach ($r as $v) { $calendarId = $v; } if (is_null($calendarId)) { $arMessages[] = array("ERROR", "Calendar folder modification error."); } else { $arMessages[] = array("SUCCESS", "Calendar folder was successfully updated (Id = " . $calendarId["XML_ID"] . ", ChangeKey = " . $calendarId["MODIFICATION_LABEL"] . ")."); $bFound = false; $r = $e->GetCalendarsList(array("MAILBOX" => $mailbox)); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestCalendarFolderName4" && $v["XML_ID"] == $calendarId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Calendar folder is not found by list."); } else { $arMessages[] = array("SUCCESS", "Calendar folder was successfully found by list."); $bFound = false; $r = $e->GetCalendarById($calendarId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestCalendarFolderName4" && $v["XML_ID"] == $calendarId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Calendar folder is not found by id."); } else { $arMessages[] = array("SUCCESS", "Calendar folder was successfully found by id."); $itemId = null; $arFields = array("MAILBOX" => $mailbox, "CALENDAR_ID" => $calendarId["XML_ID"], "NAME" => "TestCalendarItem Name", "DETAIL_TEXT" => "TestCalendarItem detail text", "DETAIL_TEXT_TYPE" => "html", "PROPERTY_IMPORTANCE" => "normal", "PROPERTY_REMIND_SETTINGS" => "20_min", "ACTIVE_FROM" => "16.10.2011 09:00:00", "ACTIVE_TO" => "16.10.2011 09:30:00", "PROPERTY_LOCATION" => "Some location"); $r = $e->Add($arFields); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $itemId = $v; } if (is_null($itemId)) { $arMessages[] = array("ERROR", "Calendar item creation error."); } else { $arMessages[] = array("SUCCESS", "Calendar item was successfully created (Id = " . $itemId["XML_ID"] . ", ChangeKey = " . $itemId["MODIFICATION_LABEL"] . ")."); $arFields = array("NAME" => "New TestCalendarItem Name", "DETAIL_TEXT" => "TestCalendarItem detail text", "DETAIL_TEXT_TYPE" => "text", "ACTIVE_FROM" => "17.10.2011 09:00:00", "ACTIVE_TO" => "17.10.2011 09:30:00", "PROPERTY_LOCATION" => "Some new location"); $r = $e->Update($itemId, $arFields); $itemId = null; $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $itemId = $v; } if (is_null($itemId)) { $arMessages[] = array("ERROR", "Calendar item modification error."); } else { $arMessages[] = array("SUCCESS", "Calendar item was successfully updated (Id = " . $itemId["XML_ID"] . ", ChangeKey = " . $itemId["MODIFICATION_LABEL"] . ")."); $bFound = false; $r = $e->GetList(array("Mailbox" => $mailbox, "CalendarId" => $calendarId["XML_ID"]), array("ItemShape" => "AllProperties")); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestCalendarItem Name" && $v["XML_ID"] == $itemId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Calendar item is not found by list."); } else { $arMessages[] = array("SUCCESS", "Calendar item was successfully found by list."); $bFound = false; $r = $e->GetById($itemId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestCalendarItem Name" && $v["XML_ID"] == $itemId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Calendar item is not found by id."); } else { $arMessages[] = array("SUCCESS", "Calendar item was successfully found by id."); $r = $e->Delete($itemId["XML_ID"]); if (!$r) { $arMessages[] = array("ERROR", "Calendar item deletion error."); } else { $arMessages[] = array("SUCCESS", "Calendar item was successfully deleted."); $bFound = false; $r = $e->GetList(array("Mailbox" => $mailbox, "CalendarId" => $calendarId["XML_ID"]), array("ItemShape" => "IdOnly")); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $bFound = true; } if ($bFound) { $arMessages[] = array("ERROR", "Calendar folder should be empty."); } else { $arMessages[] = array("SUCCESS", "Calendar folder is empty."); $r = $e->DeleteCalendar($calendarId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); if ($r) { $arMessages[] = array("SUCCESS", "Calendar folder was successfully deleted."); } else { $arMessages[] = array("ERROR", "Calendar folder deletion error."); } } } } } } } } } } } } if (in_array("contacts", $arFolders)) { $e = new CDavExchangeContacts($scheme, $server, $port, $userName, $userPassword); if ($bDebug) { $e->Debug(); } $addressbookId = null; $r = $e->AddAddressbook(array("NAME" => "TestAddressbookFolderName4", "MAILBOX" => $mailbox)); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $addressbookId = $v; } if (is_null($addressbookId)) { $arMessages[] = array("ERROR", "Contacts folder creation error."); } else { $arMessages[] = array("SUCCESS", "Contacts folder was successfully created (Id = " . $addressbookId["XML_ID"] . ", ChangeKey = " . $addressbookId["MODIFICATION_LABEL"] . ")."); $r = $e->UpdateAddressbook($addressbookId, array("NAME" => "New TestAddressbookFolderName4")); $arMessages = array_merge($arMessages, $e->GetErrors()); $addressbookId = null; foreach ($r as $v) { $addressbookId = $v; } if (is_null($addressbookId)) { $arMessages[] = array("ERROR", "Contacts folder modification error."); } else { $arMessages[] = array("SUCCESS", "Contacts folder was successfully updated (Id = " . $addressbookId["XML_ID"] . ", ChangeKey = " . $addressbookId["MODIFICATION_LABEL"] . ")."); $bFound = false; $r = $e->GetAddressbooksList(array("MAILBOX" => $mailbox)); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestAddressbookFolderName4" && $v["XML_ID"] == $addressbookId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Contacts folder is not found by list."); } else { $arMessages[] = array("SUCCESS", "Contacts folder was successfully found by list."); $bFound = false; $r = $e->GetAddressbookById($addressbookId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestAddressbookFolderName4" && $v["XML_ID"] == $addressbookId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Contacts folder is not found by id."); } else { $arMessages[] = array("SUCCESS", "Contacts folder was successfully found by id."); $itemId = null; $arFields = array("MAILBOX" => $mailbox, "ADDRESSBOOK_ID" => $addressbookId["XML_ID"], "NAME" => "TestAddressbookItem Name", "LAST_NAME" => "MyLastName", "SECOND_NAME" => "MySecondName", "EMAIL" => "*****@*****.**", "WORK_POSITION" => "Programmer", "WORK_ZIP" => "236001", "WORK_CITY" => "Kaliningrad", "WORK_STREET" => "Kirov str., 261", "PERSONAL_PHONE" => "6547646546", "PERSONAL_MOBILE" => "55435656", "WORK_PHONE" => "876467343", "WORK_FAX" => "345737365", "WORK_COMPANY" => "Bitrix", "WORK_WWW" => "http://www.1c-bitrix.com", "PERSONAL_ICQ" => "535435353", "WORK_COUNTRY" => 23); $r = $e->Add($arFields); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $itemId = $v; } if (is_null($itemId)) { $arMessages[] = array("ERROR", "Contacts item creation error."); } else { $arMessages[] = array("SUCCESS", "Contacts item was successfully created (Id = " . $itemId["XML_ID"] . ", ChangeKey = " . $itemId["MODIFICATION_LABEL"] . ")."); $arFields = array("NAME" => "New TestAddressbookItem Name", "LAST_NAME" => "My new LastName", "SECOND_NAME" => "MySecondName", "EMAIL" => "*****@*****.**", "WORK_POSITION" => "Programmer", "WORK_ZIP" => "236001", "WORK_CITY" => "Kaliningrad", "WORK_STREET" => "Kirov str., 261", "PERSONAL_PHONE" => "6547646546", "PERSONAL_MOBILE" => "55435656", "WORK_PHONE" => "876467343", "WORK_FAX" => "345737365", "WORK_COMPANY" => "Bitrix", "WORK_WWW" => "http://www.1c-bitrix.com", "PERSONAL_ICQ" => "535435353", "WORK_COUNTRY" => 23); $r = $e->Update($itemId, $arFields); $itemId = null; $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $itemId = $v; } if (is_null($itemId)) { $arMessages[] = array("ERROR", "Contacts item modification error."); } else { $arMessages[] = array("SUCCESS", "Contacts item was successfully updated (Id = " . $itemId["XML_ID"] . ", ChangeKey = " . $itemId["MODIFICATION_LABEL"] . ")."); $bFound = false; $r = $e->GetList(array("Mailbox" => $mailbox, "AddressbookId" => $addressbookId["XML_ID"]), array("ItemShape" => "AllProperties")); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestAddressbookItem Name" && $v["XML_ID"] == $itemId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Contacts item is not found by list."); } else { $arMessages[] = array("SUCCESS", "Contacts item was successfully found by list."); $bFound = false; $r = $e->GetById($itemId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestAddressbookItem Name" && $v["XML_ID"] == $itemId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Contacts item is not found by id."); } else { $arMessages[] = array("SUCCESS", "Contacts item was successfully found by id."); $r = $e->Delete($itemId["XML_ID"]); if (!$r) { $arMessages[] = array("ERROR", "Contacts item deletion error."); } else { $arMessages[] = array("SUCCESS", "Contacts item was successfully deleted."); $bFound = false; $r = $e->GetList(array("Mailbox" => $mailbox, "AddressbookId" => $addressbookId["XML_ID"]), array("ItemShape" => "IdOnly")); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $bFound = true; } if ($bFound) { $arMessages[] = array("ERROR", "Contacts folder should be empty."); } else { $arMessages[] = array("SUCCESS", "Contacts folder is empty."); $r = $e->DeleteAddressbook($addressbookId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); if ($r) { $arMessages[] = array("SUCCESS", "Contacts folder was successfully deleted."); } else { $arMessages[] = array("ERROR", "Contacts folder deletion error."); } } } } } } } } } } } } if (in_array("tasks", $arFolders)) { $e = new CDavExchangeTasks($scheme, $server, $port, $userName, $userPassword); if ($bDebug) { $e->Debug(); } $folderId = null; $r = $e->AddFolder(array("NAME" => "TestFolderFolderName6", "MAILBOX" => $mailbox)); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $folderId = $v; } if (is_null($folderId)) { $arMessages[] = array("ERROR", "Tasks folder creation error."); } else { $arMessages[] = array("SUCCESS", "Tasks folder was successfully created (Id = " . $folderId["XML_ID"] . ", ChangeKey = " . $folderId["MODIFICATION_LABEL"] . ")."); $r = $e->UpdateFolder($folderId, array("NAME" => "New TestFolderFolderName6")); $arMessages = array_merge($arMessages, $e->GetErrors()); $folderId = null; foreach ($r as $v) { $folderId = $v; } if (is_null($folderId)) { $arMessages[] = array("ERROR", "Tasks folder modification error."); } else { $arMessages[] = array("SUCCESS", "Tasks folder was successfully updated (Id = " . $folderId["XML_ID"] . ", ChangeKey = " . $folderId["MODIFICATION_LABEL"] . ")."); $bFound = false; $r = $e->GetFoldersList(array("MAILBOX" => $mailbox)); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestFolderFolderName6" && $v["XML_ID"] == $folderId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Tasks folder is not found by list."); } else { $arMessages[] = array("SUCCESS", "Tasks folder was successfully found by list."); $bFound = false; $r = $e->GetFolderById($folderId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["NAME"] == "New TestFolderFolderName6" && $v["XML_ID"] == $folderId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Tasks folder is not found by id."); } else { $arMessages[] = array("SUCCESS", "Tasks folder was successfully found by id."); $itemId = null; $arFields = array("MAILBOX" => $mailbox, "FOLDER_ID" => $folderId["XML_ID"], "SUBJECT" => "TestFolderItem Name", "BODY" => "Should be done!", "BODY_TYPE" => "text", "IMPORTANCE" => "High", "START_DATE" => "20.10.2011", "DUE_DATE" => "25.10.2011", "PERCENT_COMPLETE" => "0", "STATUS" => "NotStarted", "TOTAL_WORK" => "123", "REMINDER_MINUTES_BEFORE_START" => 365); $r = $e->Add($arFields); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $itemId = $v; } if (is_null($itemId)) { $arMessages[] = array("ERROR", "Tasks item creation error."); } else { $arMessages[] = array("SUCCESS", "Tasks item was successfully created (Id = " . $itemId["XML_ID"] . ", ChangeKey = " . $itemId["MODIFICATION_LABEL"] . ")."); $arFields = array("SUBJECT" => "New TestFolderItem Name", "BODY" => "Should be done!!!", "BODY_TYPE" => "text", "IMPORTANCE" => "Low", "START_DATE" => "20.10.2011", "DUE_DATE" => "24.10.2011", "PERCENT_COMPLETE" => "0", "STATUS" => "NotStarted", "TOTAL_WORK" => "23", "REMINDER_MINUTES_BEFORE_START" => 365); $r = $e->Update($itemId, $arFields); $itemId = null; $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $itemId = $v; } if (is_null($itemId)) { $arMessages[] = array("ERROR", "Tasks item modification error."); } else { $arMessages[] = array("SUCCESS", "Tasks item was successfully updated (Id = " . $itemId["XML_ID"] . ", ChangeKey = " . $itemId["MODIFICATION_LABEL"] . ")."); $bFound = false; $r = $e->GetList(array("Mailbox" => $mailbox, "FolderId" => $folderId["XML_ID"]), array("ItemShape" => "AllProperties")); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["SUBJECT"] == "New TestFolderItem Name" && $v["XML_ID"] == $itemId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Tasks item is not found by list."); } else { $arMessages[] = array("SUCCESS", "Tasks item was successfully found by list."); $bFound = false; $r = $e->GetById($itemId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { if ($v["SUBJECT"] == "New TestFolderItem Name" && $v["XML_ID"] == $itemId["XML_ID"]) { $bFound = true; } } if (!$bFound) { $arMessages[] = array("ERROR", "Tasks item is not found by id."); } else { $arMessages[] = array("SUCCESS", "Tasks item was successfully found by id."); $r = $e->Delete($itemId["XML_ID"]); if (!$r) { $arMessages[] = array("ERROR", "Tasks item deletion error."); } else { $arMessages[] = array("SUCCESS", "Tasks item was successfully deleted."); $bFound = false; $r = $e->GetList(array("Mailbox" => $mailbox, "FolderId" => $folderId["XML_ID"]), array("ItemShape" => "IdOnly")); $arMessages = array_merge($arMessages, $e->GetErrors()); foreach ($r as $v) { $bFound = true; } if ($bFound) { $arMessages[] = array("ERROR", "Tasks folder should be empty."); } else { $arMessages[] = array("SUCCESS", "Tasks folder is empty."); $r = $e->DeleteFolder($folderId["XML_ID"]); $arMessages = array_merge($arMessages, $e->GetErrors()); if ($r) { $arMessages[] = array("SUCCESS", "Tasks folder was successfully deleted."); } else { $arMessages[] = array("ERROR", "Tasks folder deletion error."); } } } } } } } } } } } } return $arMessages; }
public static function DoDataSync($paramUserId, &$lastError) { if (DAV_EXCH_DEBUG) { CDav::WriteToLog("Starting EXCHANGE sync...", "SYNCE"); } $exchangeScheme = COption::GetOptionString("dav", "exchange_scheme", "http"); $exchangeServer = COption::GetOptionString("dav", "exchange_server", ""); $exchangePort = COption::GetOptionString("dav", "exchange_port", "80"); $exchangeUsername = COption::GetOptionString("dav", "exchange_username", ""); $exchangePassword = COption::GetOptionString("dav", "exchange_password", ""); if (empty($exchangeServer)) { CAgent::RemoveAgent("CDavExchangeCalendar::DataSync();", "dav"); COption::SetOptionString("dav", "agent_calendar", "N"); return null; } static $arWeekDayMap = array("sunday" => 6, "monday" => 0, "tuesday" => 1, "wednesday" => 2, "thursday" => 3, "friday" => 4, "saturday" => 5); $exchange = new CDavExchangeCalendar($exchangeScheme, $exchangeServer, $exchangePort, $exchangeUsername, $exchangePassword); if (GW_DEBUG) { $exchange->Debug(); } $exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", ""); $exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y"); self::InitUserEntity(); $maxNumber = 15; $index = 0; $bShouldClearCache = null; $paramUserId = intval($paramUserId); $arUserFilter = array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false); if ($paramUserId > 0) { $arUserFilter["ID_EQUAL_EXACT"] = $paramUserId; } if ($exchangeUseLogin == "N") { $arUserFilter["!UF_BXDAVEX_MAILBOX"] = false; } $dbUserList = CUser::GetList($by = "UF_BXDAVEX_CALSYNC", $order = "asc", $arUserFilter, array("SELECT" => array("ID", "LOGIN", "UF_BXDAVEX_MAILBOX", "UF_BXDAVEX_CALSYNC"))); while ($arUser = $dbUserList->Fetch()) { $index++; if ($index > $maxNumber) { break; } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("Processing user [" . $arUser["ID"] . "] " . $arUser["LOGIN"], "SYNCE"); } $GLOBALS["USER_FIELD_MANAGER"]->Update("USER", $arUser["ID"], array("UF_BXDAVEX_CALSYNC" => ConvertTimeStamp(time(), FULL))); $mailbox = $exchangeUseLogin == "Y" ? $arUser["LOGIN"] . $exchangeMailbox : $arUser["UF_BXDAVEX_MAILBOX"]; if (empty($mailbox)) { $lastError = GetMessage("DAV_EC_EMPTY_MAILBOX"); continue; } $arCalendarsList = $exchange->GetCalendarsList(array("mailbox" => $mailbox)); $arErrorsTmp = $exchange->GetErrors(); if (count($arErrorsTmp) > 0) { $txt = ''; foreach ($arErrorsTmp as $v) { if (!empty($txt)) { $txt .= ", "; } $txt .= "[" . $v[0] . "] " . $v[1]; } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("ERROR: " . $txt, "SYNCE"); } $lastError = $txt; continue; } if (!is_array($arCalendarsList)) { $lastError = "Incorrect Data from Exchange Server"; continue; } $bShouldClearCache = false; $arUserCalendars = array(array("XML_ID" => "calendar_" . $arUser["ID"], "NAME" => GetMessage("DAV_EC_CALENDAR"), "MODIFICATION_LABEL" => "")); foreach ($arCalendarsList as $value) { $arUserCalendars[] = array("XML_ID" => $value["XML_ID"], "NAME" => $value["NAME"], "MODIFICATION_LABEL" => $value["MODIFICATION_LABEL"]); } $tmpNumCals = count($arUserCalendars); $arUserCalendars = CCalendar::SyncCalendars("exchange", $arUserCalendars, "user", $arUser["ID"]); $tmpNumItems = 0; foreach ($arUserCalendars as $userCalendar) { $userCalendarXmlId = $userCalendar["XML_ID"]; $userCalendarXmlId = $userCalendarXmlId == "calendar_" . $arUser["ID"] ? "calendar" : $userCalendarXmlId; $arCalendarItemsList = $exchange->GetList(array("mailbox" => $mailbox, "CalendarId" => $userCalendarXmlId), array("ItemShape" => "IdOnly")); $arUserCalendarItems = array(); foreach ($arCalendarItemsList as $value) { $arUserCalendarItems[] = array("XML_ID" => $value["XML_ID"], "MODIFICATION_LABEL" => $value["MODIFICATION_LABEL"]); } $arModifiedUserCalendarItems = CCalendar::SyncCalendarItems("exchange", $userCalendar["CALENDAR_ID"], $arUserCalendarItems); $tmpNumItems += count($arModifiedUserCalendarItems); if (is_array($arModifiedUserCalendarItems)) { foreach ($arModifiedUserCalendarItems as $value) { $arModifiedCalendarItem = $exchange->GetById($value["XML_ID"]); if (is_array($arModifiedCalendarItem) && count($arModifiedCalendarItem) > 0) { $arModifiedCalendarItem = $arModifiedCalendarItem[0]; $arModifyEventArray = array("ID" => $value["ID"], "NAME" => $arModifiedCalendarItem["NAME"], "DESCRIPTION" => $arModifiedCalendarItem["DESCRIPTION"], "XML_ID" => $arModifiedCalendarItem["XML_ID"], "PROPERTY_LOCATION" => $arModifiedCalendarItem["PROPERTY_LOCATION"], "DATE_FROM" => $arModifiedCalendarItem["ACTIVE_FROM"], "DATE_TO" => $arModifiedCalendarItem["ACTIVE_TO"], "SKIP_TIME" => $arModifiedCalendarItem["SKIP_TIME"], "PROPERTY_IMPORTANCE" => $arModifiedCalendarItem["PROPERTY_IMPORTANCE"], "PROPERTY_ACCESSIBILITY" => $arModifiedCalendarItem["PROPERTY_FREEBUSY"], "PROPERTY_REMIND_SETTINGS" => $arModifiedCalendarItem["PROPERTY_REMIND_SETTINGS"], "PROPERTY_PERIOD_TYPE" => "NONE", "PROPERTY_BXDAVEX_LABEL" => $arModifiedCalendarItem["MODIFICATION_LABEL"], "PRIVATE_EVENT" => strtolower($arModifiedCalendarItem["PROPERTY_SENSITIVITY"]) == 'private'); if ($arModifiedCalendarItem["IS_RECURRING"]) { if ($arModifiedCalendarItem["RECURRING_TYPE"] == "MONTHLY_ABSOLUTE" || $arModifiedCalendarItem["RECURRING_TYPE"] == "MONTHLY_RELATIVE" || $arModifiedCalendarItem["RECURRING_TYPE"] == "MONTHLY") { $arModifyEventArray["PROPERTY_PERIOD_TYPE"] = "MONTHLY"; } elseif ($arModifiedCalendarItem["RECURRING_TYPE"] == "YEARLY_ABSOLUTE" || $arModifiedCalendarItem["RECURRING_TYPE"] == "YEARLY_RELATIVE" || $arModifiedCalendarItem["RECURRING_TYPE"] == "YEARLY") { $arModifyEventArray["PROPERTY_PERIOD_TYPE"] = "YEARLY"; } elseif ($arModifiedCalendarItem["RECURRING_TYPE"] == "WEEKLY") { $arModifyEventArray["PROPERTY_PERIOD_TYPE"] = "WEEKLY"; } elseif ($arModifiedCalendarItem["RECURRING_TYPE"] == "DAILY") { $arModifyEventArray["PROPERTY_PERIOD_TYPE"] = "DAILY"; } if (isset($arModifiedCalendarItem["RECURRING_INTERVAL"])) { $arModifyEventArray["PROPERTY_PERIOD_COUNT"] = $arModifiedCalendarItem["RECURRING_INTERVAL"]; } if ($arModifyEventArray["PROPERTY_PERIOD_TYPE"] == "WEEKLY") { if (isset($arModifiedCalendarItem["RECURRING_DAYSOFWEEK"])) { $ar = preg_split("/[;,\\s]/i", $arModifiedCalendarItem["RECURRING_DAYSOFWEEK"]); $ar1 = array(); foreach ($ar as $v) { $ar1[] = $arWeekDayMap[strtolower($v)]; } $arModifyEventArray["PROPERTY_PERIOD_ADDITIONAL"] = implode(",", $ar1); } } $arModifyEventArray["PROPERTY_EVENT_LENGTH"] = MakeTimeStamp($arModifyEventArray["ACTIVE_TO"]) - MakeTimeStamp($arModifyEventArray["ACTIVE_FROM"]); if ($arModifyEventArray["PROPERTY_EVENT_LENGTH"] <= 0) { $arModifyEventArray["PROPERTY_EVENT_LENGTH"] = 86400; } if (isset($arModifiedCalendarItem["RECURRING_ENDDATE"])) { $arModifyEventArray["ACTIVE_TO"] = $arModifiedCalendarItem["RECURRING_ENDDATE"]; } elseif (isset($arResultItem["RECURRING_NUMBEROFOCCURRENCES"])) { $eventTime = self::GetPeriodicEventTime(MakeTimeStamp($arModifyEventArray["ACTIVE_TO"]), array("freq" => $arModifyEventArray["PROPERTY_PERIOD_TYPE"], "interval" => $arModifyEventArray["PROPERTY_PERIOD_COUNT"], "byday" => $arModifyEventArray["PROPERTY_PERIOD_ADDITIONAL"]), $arResultItem["RECURRING_NUMBEROFOCCURRENCES"]); $arModifyEventArray["ACTIVE_TO"] = date($GLOBALS["DB"]->DateFormatToPHP(FORMAT_DATETIME), $eventTime); } else { $arModifyEventArray["ACTIVE_TO"] = ConvertTimeStamp(mktime(0, 0, 0, 12, 31, 2025), "FULL"); } } CCalendar::ModifyEvent($userCalendar["CALENDAR_ID"], $arModifyEventArray); $bShouldClearCache = true; } } } } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("Sync " . intval($tmpNumCals) . " calendars, " . intval($tmpNumItems) . " items", "SYNCE"); } } if ($bShouldClearCache) { CCalendar::SyncClearCache(); } if (DAV_EXCH_DEBUG) { CDav::WriteToLog("EXCHANGE sync finished", "SYNCE"); } return $bShouldClearCache; }