- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/storage.php
- Класс: BitrixDiskStorage
- Вызов: Storage::add
static function add(array $data, ErrorCollection $errorCollection)
{
if(!is_subclass_of($data['ENTITY_TYPE'], ProxyTypeBase::className()))
{
throw new SystemException('Invalid class for ProxyType. Must be subclass of ProxyTypeBase');
}
$rootObjectData = array();
if(!empty($data['ROOT_OBJECT']))
{
$rootObjectData = $data['ROOT_OBJECT'];
unset($data['ROOT_OBJECT']);
}
$storage = parent::add($data, $errorCollection);
if(!$storage)
{
return null;
}
$folderData = array_merge(array_intersect_key($rootObjectData, array(
'CREATE_TIME' => true,
'UPDATE_TIME' => true,
'XML_ID' => true,
)), array(
'NAME' => UiText::correctFilename($storage->getName()),
'STORAGE_ID' => $storage->getId(),
));
$folder = Folder::add($folderData, $errorCollection);
if(!$folder)
{
return null;
}
$success = $storage->update(array('ROOT_OBJECT_ID' => $folder->getId()));
if(!$success)
{
return null;
}
$storage->rootObject = $folder;
$event = new Event(Driver::INTERNAL_MODULE_ID, "onAfterAddStorage", array($storage));
$event->send();
$storage->clearByTagCommonStorages();
return $storage;
}