• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/folder.php
  • Класс: BitrixDiskFolder
  • Вызов: Folder::restore
public function restore($restoredBy)
{
	if (!$this->isDeleted())
	{
		return true;
	}

	$this->errorCollection->clear();

	$parameters = array(
		'select' => array(
			'*',
			'DEPTH_LEVEL' => 'PATH_CHILD.DEPTH_LEVEL',
		),
		'filter' => array(
			'PATH_CHILD.PARENT_ID' => $this->id,
			'!==DELETED_TYPE' => ObjectTable::DELETED_TYPE_NONE,
		),
		'order' => array('DEPTH_LEVEL' => 'DESC')
	);

	$objectIterator = FolderTable::getList(static::prepareGetListParameters($parameters));
	foreach ($objectIterator as $objectRow)
	{
		if ($objectRow['ID'] == $this->id)
		{
			continue;
		}

		$object = BaseObject::buildFromArray($objectRow);

		/** @var Folder|File */
		if($object instanceof Folder)
		{
			/** @see BitrixDiskFolder::restoreNonRecursive */
			$object->restoreNonRecursive($restoredBy);
		}
		elseif($object instanceof File)
		{
			$object->restoreInternal($restoredBy);
		}
	}

	$needRecalculate = $this->deletedType == ObjectTable::DELETED_TYPE_CHILD;
	$statusRestoreNonRecursive = $this->restoreInternal($restoredBy);
	if($statusRestoreNonRecursive && $needRecalculate)
	{
		$this->recalculateDeletedTypeAfterRestore($restoredBy);
	}

	if($statusRestoreNonRecursive)
	{
		Driver::getInstance()->sendChangeStatusToSubscribers($this);
	}

	return $statusRestoreNonRecursive;
}