• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/document/onlyoffice/onlyofficehandler.php
  • Класс: BitrixDiskDocumentOnlyOfficeOnlyOfficeHandler
  • Вызов: OnlyOfficeHandler::renameDocument
static function renameDocument(string $documentKey, string $newName): Result
{
	$result = new Result();

	$http = new HttpClient([
		'socketTimeout' => 5,
		'streamTimeout' => 10,
		'version' => HttpClient::HTTP_1_1,
	]);

	if (!Application::getInstance()->isUtfMode())
	{
		$newName = Encoding::convertEncoding($newName, SITE_CHARSET, 'UTF-8');
	}

	$postBody = [
		'c' => self::CMD_META,
		'key' => $documentKey,
		'meta' => [
			'title' => $newName,
		],
	];

	$configuration = new DocumentOnlyOfficeConfiguration();
	$cloudRegistrationData = $configuration->getCloudRegistrationData();
	if ($cloudRegistrationData)
	{
		$renameDocument = new DocumentOnlyOfficeCloudRenameDocument($cloudRegistrationData['serverHost']);

		return $renameDocument->rename($postBody);
	}

	$http->setHeader('Content-Type', 'application/json');
	$secretKey = ServiceLocator::getInstance()->get('disk.onlyofficeConfiguration')->getSecretKey();
	$http->setHeader('Authorization', 'Bearer ' . JWT::encode($postBody, $secretKey));

	$url = self::getApiUrlRoot() . '/coauthoring/CommandService.ashx';
	$postFields = Json::encode($postBody);
	if ($http->post($url, $postFields) === false)
	{
		return $result->addError(new MainError('Server is not available.'));
	}
	if ($http->getStatus() !== 200)
	{
		return $result->addError(new MainError('Server is not available. Status ' . $http->getStatus()));
	}

	$response = Json::decode($http->getResult());
	if (isset($response['error']) && $response['error'] !== 0)
	{
		return $result->addError(new MainError("Server sent error code {{$response['error']}}"));
	}

	return $result;
}