- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/baseobject.php
- Класс: BitrixDiskBaseObject
- Вызов: BaseObject::markDeletedInternal
protected function markDeletedInternal($deletedBy, $deletedType = ObjectTable::DELETED_TYPE_ROOT)
{
if ($this->deletedType == $deletedType)
{
return true;
}
$this->errorCollection->clear();
$subscriberManager = Driver::getInstance()->getSubscriberManager();
foreach($subscriberManager->getSharingsByObject($this) as $sharing)
{
$sharing->delete($deletedBy);
}
//with status unreplied, declined (not approved)
SharingTable::deleteByFilter(array(
'REAL_OBJECT_ID' => $this->id,
));
if ($deletedType == ObjectTable::DELETED_TYPE_CHILD)
{
$nameAfterDelete = $this->getNameWithoutTrashCanSuffix();
}
elseif ($deletedType == ObjectTable::DELETED_TYPE_ROOT)
{
//we want to delete object as root. It means it has to have unique name. In this way we clean the name,
//and after we make it unique.
$nameAfterDelete = UiText::appendTrashCanSuffix($this->getNameWithoutTrashCanSuffix());
}
else
{
$nameAfterDelete = $this->getNameWithoutTrashCanSuffix();
}
if (!static::isUniqueName($nameAfterDelete, $this->getParentId(), $this->getId()))
{
$nameAfterDelete = static::generateUniqueName($nameAfterDelete, $this->getParentId());
}
$data = [
'CODE' => null,
'NAME' => $nameAfterDelete,
'DELETED_TYPE' => $deletedType,
];
$alreadyDeleted = $this->isDeleted();
if (!$alreadyDeleted)
{
$data['DELETE_TIME'] = new DateTime();
$data['DELETED_BY'] = $deletedBy;
}
$status = $this->update($data);
if ($status)
{
$driver = Driver::getInstance();
$driver->getDeletionNotifyManager()->put($this, $deletedBy);
$driver->getIndexManager()->dropIndexByModuleSearch($this);
$event = new Event(Driver::INTERNAL_MODULE_ID, "onAfterMarkDeletedObject", array($this, $deletedBy, $deletedType));
$event->send();
}
if ($deletedType == ObjectTable::DELETED_TYPE_ROOT)
{
$this->createLinkInTrashcan($deletedBy);
}
return $status;
}