Просмотров: 12696 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 17.07.2019

Работа с Диском

Модуль Диск не имеет административной страницы настроек. Тем не менее достаточно часто возникает необходимость изменить что-то в его работе. Рассмотрим такие часто встречающиеся задачи и их решения.

  • Корректное добавление нового хранилища
  • Переименование диска с использованием API
  • Удаление диска из базы и из файловой системы
  • Удаление дисков групп, отключение и подключение их пользователям

  • Как корректно добавить новое хранилище с пошаговым мастером, что обозначают параметры этого мастера

    Для добавления нового хранилища перейдите с правами администратора системы на страницу https://ваш_портал/docs/index.php:

    Если нужно подключить имеющийся сетевой диск, то воспользуйтесь ссылкой Подключить сетевой диск. В открывшемся окне скопируйте адрес для подключения и подключите диск штатным для ОС Windows способом. (Если забыли, то воспользуйтесь ссылкой Как подключить библиотеку как сетевой диск) во всплывшем окне.

    Если требуется создать новое хранилище, то нажмите ссылку Добавить хранилище, откроется окно мастера:

    Пройдите шаги этого мастера. Все окна в шагах достаточно информативны без документации, однако, если возникли проблемы, обратитесь к описанию создания библиотеки С помощью средств модулей Библиотека документов и Информационные блоки в продукте реализована возможность работы с библиотекой документов компании.

    Подробнее ...
    в Библиотеке документов. Мастер полностью аналогичен, за исключением работы с инфоблоком на третьем шаге: модуль Диск не работает с инфоблоками.


    Как переименовать диск (отображаемое имя) с использованием API

    Хранилища пользователей "слушают" события переименования пользователей и после этого переименовываются сами. Если есть потребность сделать это через API, то сделайте это так:

    <?php
    \Bitrix\Main\Loader::includeModule('disk');
    $storageId = 100; //id хранилища Диска, которые вы желаете переименовать. См. таблицу b_disk_storage
    $newName = 'Tomorrow'; //новое, желаемое имя
    $errors = null;
    
    $storage = \Bitrix\Disk\Storage::loadById($storageId);
    if($storage)
    {
        if(!$storage->rename($newName))
        {
            $errors = $storage->getErrors();
        }
    }


    Как удалить диск из базы и из файловой системы

    Если удалить группу или пользователя, то удалится и её/его диск. Удаление с помощью API реализуется так:

    <?php
    \Bitrix\Main\Loader::includeModule('disk');
    $userId = 1; //id пользователя, от имени которого будет совершаться удаление
    $storageId = 100; //id хранилища Диска, которые вы желаете переименовать. См. таблицу b_disk_storage
    $errors = null;
    
    $storage = \Bitrix\Disk\Storage::loadById($storageId);
    if($storage)
    {
        if(!$storage->delete($userId))
        {
            $errors = $storage->getErrors();
        }
    }


    Как удалять диски групп, отключать и подключать их пользователям

    Не каждый пользователь подключает к себе диск при вступлении в группу, а производственная необходимость требует такого действия. Администратору доступно с помощью API управление процессами подключения дисков для всех пользователей.

    Как удалять диски групп?
    <?php
    \Bitrix\Main\Loader::includeModule('disk');
    $userId = 1; //id пользователя, от имени которого будет совершаться удаление
    $groupId = 345; //id группы соц.сети, хранилище которой нужно удалить
    $errors = null;
    
    $storage = \Bitrix\Disk\Driver::getInstance()->getStorageByGroupId($groupId);
    if($storage)
    {
        if(!$storage->delete($userId))
        {
            $errors = $storage->getErrors();
        }
    }

    Как подключить пользователю 444 диск группы с ID 345

    <?php
    \Bitrix\Main\Loader::includeModule('disk');
    $groupId = 345; //id группы соц.сети
    $toUserId = 444; //id пользователя, к которому нужно подключить хранилище группы
    $errors = null;
    
    $groupStorage = \Bitrix\Disk\Driver::getInstance()->getStorageByGroupId($groupId);
    if($groupStorage)
    {
        $errorCollection = new Bitrix\Disk\Internals\Error\ErrorCollection;
        if(!\Bitrix\Disk\Sharing::connectGroupToSelfUserStorage($toUserId, $groupStorage, $errorCollection))
        {
            $errors = $errorCollection->toArray();
        }
    }

    Как отключить у пользователя 444 диск группы с ID 345

    <?php
    \Bitrix\Main\Loader::includeModule('disk');
    $userId = 1; //id пользователя, от имени которого будет совершаться удаление
    $groupId = 345; //id группы соц.сети
    $toUserId = 444; //id пользователя, у которому нужно отключить хранилище группы
    $errors = null;
    
    $groupStorage = \Bitrix\Disk\Driver::getInstance()->getStorageByGroupId($groupId);
    if($groupStorage)
    {
        $errorCollection = new Bitrix\Disk\Internals\Error\ErrorCollection;
        $sharing = \Bitrix\Disk\Sharing::load(array(
            '=TO_ENTITY' => \Bitrix\Disk\Sharing::CODE_USER . $toUserId,
            'REAL_OBJECT_ID' => $groupStorage->getRootObjectId(),
            'REAL_STORAGE_ID' => $groupStorage->getId(),
            'TYPE' => \Bitrix\Disk\Internals\SharingTable::TYPE_TO_USER,
        ));
    
        if($sharing)
        {
            if(!$sharing->delete($userId))
            {
                $errors = $sharing->getErrors();
            }
        }
    }

    Внимание! Публичные ссылки недоступны, если публичная часть сайта закрыта.


    О хранении файлов в диске. Немного теории.


    Документация по теме:



    5


    Курсы разработаны в компании «1С-Битрикс»