Для начала, в модуле Диск нужно включить настройку позволяющую устанавливать квоту дискам сотрудников ( Настройки - Настройки модулей - Диск )
Теперь при помощи методов API можно устанавливать дисковые квоты для сотрудников.
Обработчик события - добавление нового пользователя.
Если вы решили ввести дисковые квоты, тогда следует задуматься о том, что новым сотрудникам должна по умолчанию устанавливаться выбранный вами размер квоты.
Реализуем установку квоты по умолчанию при помощи использования события onAfterUserAdd, которое вызывается после завершения процесса добавления нового пользователя.
Для реализации обработчика события создадим класс UserAddHandler
use \Bitrix\Main\EventManager;
use \Bitrix\Main\Loader;
use \Bitrix\Disk\Driver;
class UserAddHandler
{
public static function onAfterUserAdd(&$fields)
{
if (isset($fields['ID']) && intval($fields['ID']) > 0) {
$userId = intval($fields['ID']);
self::setDiskQuota($userId, 100 * 1024 * 1024); // 100 MB in bytes
}
}
private static function setDiskQuota($userId, $quotaSize)
{
if (!Loader::includeModule('disk')) {
return;
}
$storage = Driver::getInstance()->getStorageByUserId($userId);
$storage->setSizeLimit($quotaSize);
}
}
Подключите класс в init.php вашего сайта. Обычно init.php находится в папке /bitrix/php_interface/ или /local/php_interface/
require_once($_SERVER['DOCUMENT_ROOT'] . '/path/to/user_add_handler.php');
Так же нужно добавить в init.php функцию обработки события
// Установка дисковой квоты в 100 Мб для новых пользователей
\Bitrix\Main\EventManager::getInstance()->addEventHandler('main', 'onAfterUserAdd', ['UserAddHandler','onAfterUserAdd'], false, 9999);
Обязательно в обработчике события должен быть указан последний параметр - сортировка - который отвечает за очерёдность вызова обработчиков событий в системе. Установка квоты должна происходить после того, как для пользователя будет инициирован диск. Поэтому устанавливаем сортировке значении 9999, чтобы наша обработка события вызывалась гарантирована последней.