• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/office365/startsynccontroller.php
  • Класс: BitrixCalendarSyncOffice365StartSyncController
  • Вызов: StartSyncController::fixUglyAccountName
private function fixUglyAccountName(Connection $connection): Connection
{
	if (substr($connection->getName(), 0,9) === 'Office365')
	{
		$currentName = $connection->getName();
		try {
			$context = Office365Context::getConnectionContext($connection);
			$userData = $context->getApiClient()->get('me');
			if (!empty($userData['userPrincipalName']))
			{
				if ($oldConnection = $this->getConnection(
					$connection->getOwner(),
					Helper::ACCOUNT_TYPE,
					$userData['userPrincipalName']
				))
				{
					$oldConnection->setDeleted(false);
					(new CoreMappersConnection())->delete($connection, ['softDelete' => false]);
					$connection = $oldConnection;
				}
				else
				{
					$connection->setName($userData['userPrincipalName']);
					$result = (new ConnectionManager())->update($connection);
					if (!$result->isSuccess())
					{
						$connection->setName($currentName);
					}
				}
			}
		} catch (Exception $e) {
			$connection->setName($currentName);
		}
	}
	$this->accountName = $connection->getName();

	return $connection;
}