• Модуль: 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;
}