• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/baseobject.php
  • Класс: BitrixDiskBaseObject
  • Вызов: BaseObject::moveInSameStorage
protected function moveInSameStorage(Folder $folder, $movedBy)
{
	$driver = Driver::getInstance();
	$subscriberManager = $driver->getSubscriberManager();

	$subscribersBeforeMove = $subscriberManager->collectSubscribersSmart($this);

	$realFolderId = $folder->getRealObject()->getId();
	/** @var ObjectTable $tableClassName */
	$tableClassName = $this->getTableClassName();

	$moveResult = $tableClassName::move($this->id, $realFolderId);
	if(!$moveResult->isSuccess())
	{
		$this->errorCollection->addFromResult($moveResult);
		return null;
	}
	$this->setAttributesFromResult($moveResult);

	$driver->getRightsManager()->setAfterMove($this);

	$subscribersAfterMove = $subscriberManager->collectSubscribersSmart($this);
	$driver->getDeletedLogManager()->markAfterMove(
		$this,
		array_unique(array_diff($subscribersBeforeMove, $subscribersAfterMove)),
		$movedBy
	);
	//notify new subscribers (in DeletedLog we notify subscribers only missed access)
	if($this instanceof Folder)
	{
		$driver->cleanCacheTreeBitrixDisk(array_keys($subscribersAfterMove));
	}
	$driver->sendChangeStatus($subscribersAfterMove);

	ObjectTable::updateSyncTime($this->id, new DateTime());
	$driver->sendChangeStatus($subscriberManager->collectSubscribersFromSubtree($this));

	return $this;
}