• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/file.php
  • Класс: BitrixDiskFile
  • Вызов: File::add
static function add(array $data, ErrorCollection $errorCollection)
{
	$parent = null;
	if(isset($data['PARENT']) && $data['PARENT'] instanceof Folder)
	{
		$parent = $data['PARENT'];
		unset($data['PARENT']);
	}

	/** @var File $file */
	$file = parent::add($data, $errorCollection);
	if($file)
	{
		if($parent !== null)
		{
			$file->setAttributes(array('PARENT' => $parent));
		}

		$versionData = array(
			'ID' => $file->getFileId(),
			'FILE_SIZE' => $file->getSize(),
		);

		if(!empty($data['UPDATE_TIME']))
		{
			$versionData['UPDATE_TIME'] = $data['UPDATE_TIME'];
		}
		if(!empty($data['ETAG']))
		{
			$versionData['ETAG'] = $data['ETAG'];
		}

		$version = $file->addVersion($versionData, $file->getCreatedBy());
		if(!$version)
		{
			$errorCollection->add($file->getErrors());
			$file->delete(SystemUser::SYSTEM_USER_ID);
			return null;
		}

		$event = new Event(Driver::INTERNAL_MODULE_ID, "onAfterAddFile", array($file));
		$event->send();
	}

	return $file;
}