• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangeclient.php
  • Класс: CDavExchangeClient
  • Вызов: CDavExchangeClient::FormatRecurrenceFieldsArray
protected function FormatRecurrenceFieldsArray($key, $value, &$arFields)
{
	$bProcessed = false;

	switch ($key)
	{
		case "RecurringStartDate":
		case "RecurringEndDate":
			$bProcessed = true;
			$arFields[$key] = date("Y-m-d", MakeTimeStamp($value));
			break;
		case "RecurringType":
			$bProcessed = true;
			$ar = array(
				"none" => "NONE",
				"monthly_absolute" => "MONTHLY_ABSOLUTE",
				"monthly_relative" => "MONTHLY_RELATIVE",
				"yearly_absolute" => "YEARLY_ABSOLUTE",
				"yearly_relative" => "YEARLY_RELATIVE",
				"monthly" => "MONTHLY",
				"yearly" => "YEARLY",
				"weekly" => "WEEKLY",
				"daily" => "DAILY"
			);

			if (empty($value))
			{
				$value = "NONE";
			}
			$value = mb_strtolower($value);

			if (array_key_exists($value, $ar))
			{
				if ($ar[$value] !== "NONE")
				{
					$arFields[$key] = $ar[$value];
					$arFields["Recurrence"] = true; // Error ErrorSchemaValidation in Exchange 2013
				}
			}
			else
			{
				$this->arError[] = array("WrongRecurringType", "Available values for RecurringType are NONE, MONTHLY_ABSOLUTE, MONTHLY_RELATIVE, YEARLY_ABSOLUTE, YEARLY_RELATIVE, WEEKLY, DAILY");
			}
			break;

		case "RecurringDayOfWeekIndex":
			$bProcessed = true;
			$ar = array("first" => "First", "second" => "Second", "third" => "Third", "fourth" => "Fourth", "last" => "Last", 1 => "First", 2 => "Second", 3 => "Third", 4 => "Fourth");

			$value = mb_strtolower($value);
			if (array_key_exists($value, $ar))
			{
				$arFields[$key] = $ar[$value];
			}
			else
			{
				$this->arError[] = [
					"WrongRecurringDayOfWeekIndex",
					"Available values for RecurringDayOfWeekIndex are First, Second, Third, Fourth, Last"
				];
			}
			break;

		case "RecurringMonth":
			$bProcessed = true;
			$ar = array("january" => "January", "february" => "February", "march" => "March", "april" => "April", "may" => "May", "june" => "June", "july" => "July", "august" => "August", "september" => "September", "october" => "October", "november" => "November", "december" => "December", 1 => "January", 2 => "February", 3 => "March", 4 => "April", 5 => "May", 6 => "June", 7 => "July", 8 => "August", 9 => "September", 10 => "October", 11 => "November", 12 => "December");

			$value = mb_strtolower($value);
			if (array_key_exists($value, $ar))
			{
				$arFields[$key] = $ar[$value];
			}
			else
			{
				$this->arError[] = [
					"WrongRecurringMonth",
					"Available values for RecurringMonth are January, February, March, April, May, June, July, August, September, October, November, December"
				];
			}
			break;

		case "RecurringDaysOfWeek":
			$bProcessed = true;
			$ar = array("sunday" => "Sunday", "monday" => "Monday", "tuesday" => "Tuesday", "wednesday" => "Wednesday", "thursday" => "Thursday", "friday" => "Friday", "saturday" => "Saturday", "day" => "Day", "weekday" => "Weekday", "weekendday" => "WeekendDay", 0 => "Sunday", 1 => "Monday", 2 => "Tuesday", 3 => "Wednesday", 4 => "Thursday", 5 => "Friday", 6 => "Saturday", 7 => "Sunday");

			$value = mb_strtolower($value);
			$arValue = explode(",", $value);
			foreach ($arValue as $value1)
			{
				$arValue1 = explode(" ", $value1);
				foreach ($arValue1 as $value2)
				{
					$value2 = trim($value2);
					if (!empty($value2))
					{
						if (array_key_exists($value2, $ar))
						{
							if (isset($arFields[$key]) && $arFields[$key] <> '')
							{
								$arFields[$key] .= " ";
							}
							$arFields[$key] .= $ar[$value2];
						}
						else
						{
							$this->arError[] = array("WrongRecurringDaysOfWeek", "Available values for RecurringDaysOfWeek are Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Day, Weekday, WeekendDay");
						}
					}
				}
			}
			break;
	}

	return $bProcessed;
}