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

	$this->errorCollection->clear();

	$driver = Driver::getInstance();
	$driver->getSubscriberManager()->preloadSharingsForSubtree($this);

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

	$success = true;
	$objectIterator = FolderTable::getList(static::prepareGetListParameters($parameters));
	foreach ($objectIterator as $objectRow)
	{
		if ($objectRow['ID'] == $this->id)
		{
			//to modify current object. Don't make another instance of $this->id
			$object = $this;
		}
		else
		{
			$object = BaseObject::buildFromArray($objectRow);
		}

		/** @var Folder|File */
		if($object instanceof Folder)
		{
			$deleteType = ObjectTable::DELETED_TYPE_CHILD;
			if ($objectRow['ID'] == $this->id)
			{
				$deleteType = ObjectTable::DELETED_TYPE_ROOT;
			}

			/** @see BitrixDiskFolder::markDeletedNonRecursiveInternal */
			$success = $object->markDeletedNonRecursiveInternal($deletedBy, $deleteType);
		}
		elseif($object instanceof File)
		{
			$success = $object->markDeletedInternal($deletedBy, ObjectTable::DELETED_TYPE_CHILD);
		}
	}

	$driver->getDeletedLogManager()->finalize();
	$driver->getDeletionNotifyManager()->send();

	return $success;
}