Skip to content

Instantly share code, notes, and snippets.

@mborodov
Last active July 13, 2023 13:24
Show Gist options
  • Save mborodov/0b022e2d360ea2046d6f9b2c3f439bec to your computer and use it in GitHub Desktop.
Save mborodov/0b022e2d360ea2046d6f9b2c3f439bec to your computer and use it in GitHub Desktop.
Bitrix Tips
<?php
/**
* Метод получает ссылку на открытие файла в Google Drive
* @param $userId - ID пользователя для диска
* @param $folderId - ID папки в диске
* @param $fileName - Имя файла ддя поиска
* @return bool|string - Возвращаем либо ссылку на google drive либо false
*/
public static function getFileExtLinkFromUserDisk($userId, $folderId, $fileName)
{
if (!\Bitrix\Main\Loader::includeModule('disk'))
return false;
// Подключим хранилище пользователя
$storage = \Bitrix\Disk\Driver::getInstance()->getStorageByUserId($userId);
if (!$storage)
return false;
// Перейдем в нужную папку
$folder = \Bitrix\Disk\Folder::loadById($folderId);
$securityContext = $storage->getCurrentUserSecurityContext();
$file = false;
// Найдем файл в папке по имени
foreach ($folder->getChildren($securityContext) as $item) {
// Пропускаем папки
if ($item instanceof Folder) continue;
// Ищем нужный по имени файл
if (mb_convert_encoding($fileName, 'UTF-8', 'auto') === mb_convert_encoding($item->getName(), 'UTF-8', 'auto')) {
$file = $item;
break;
}
}
if (empty($file)) return false;
// Сформируем публичную ссылку для просмотра
$extLink = $file->addExternalLink(['TYPE' => \Bitrix\Disk\Internals\ExternalLinkTable::TYPE_MANUAL]);
return 'https://drive.google.com/viewerng/viewer?url=' . PORTAL_URL. '/docs/pub/'
. $extLink->getHash() . '/download/?%26&embedded=true';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment