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