• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangeclient.php
  • Класс: CDavExchangeClient
  • Вызов: CDavExchangeClient::Test
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" => "vas2@sfbdsgdf.df",
							"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" => "vas2@sfbdsgdf.df",
								"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;
}