• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/controller/syncajax.php
  • Класс: BitrixCalendarControllerSyncAjax
  • Вызов: SyncAjax::createIcloudConnectionAction
public function createIcloudConnectionAction($appleId, $appPassword)
{
	$params['ENTITY_ID'] = CCalendar::getCurUserId();
	$params['ENTITY_TYPE'] = 'user';
	$params['SERVER_HOST'] = ICloudHelper::SERVER_PATH;
	$params['SERVER_USERNAME'] = trim($appleId);
	$params['SERVER_PASSWORD'] = trim($appPassword);
	$params['NAME'] = str_replace('#NAME#', $params['SERVER_USERNAME'], ICloudHelper::CONNECTION_NAME);

	if (!Loader::includeModule('dav'))
	{
		$this->addError(new Error(Loc::getMessage('EC_SYNCAJAX_DAV_REQUIRED')));

		return [
			'status' => 'error',
			'message' => Loc::getMessage('EC_SYNCAJAX_DAV_REQUIRED'),
		];
	}
	$typeModel = TypeModel::createFromXmlId($params['ENTITY_TYPE']);
	$accessController = new TypeAccessController(CCalendar::GetUserId());
	if (!$accessController->check(ActionDictionary::ACTION_TYPE_EDIT, $typeModel, []))
	{
		$this->addError(new Error('Access Denied'));

		return [
			'status' => 'error',
			'message' => 'Access Denied',
		];
	}
	if (!preg_match("/[a-z]{4}-[a-z]{4}-[a-z]{4}-[a-z]{4}/", $params['SERVER_PASSWORD']))
	{
		$this->addError(new Error('Incorrect app password'));

		return [
			'status' => 'incorrect_app_pass',
			'message' => 'Incorrect app password'
		];
	}

	$vendorSyncManager = new IcloudVendorSyncManager();

	$connection = $vendorSyncManager->initConnection($params);
	if (!$connection)
	{
		$this->addError(new Error(Loc::getMessage('EC_SYNCALAX_ICLOUD_WRONG_AUTH')));

		return [
			'status' => 'error',
			'message' => Loc::getMessage('EC_SYNCALAX_ICLOUD_WRONG_AUTH'),
		];
	}

	return [
		'status' => 'success',
		'connectionId' => $connection
	];
}