• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/internals/objectpath.php
  • Класс: BitrixDiskInternalsObjectPathTable
  • Вызов: ObjectPathTable::moveTo
static function moveTo($objectId, $toNodeId)
{
	$objectId = (int)$objectId;
	$toNodeId = (int)$toNodeId;

	$connection = Application::getInstance()->getConnection();
	$table = static::getTableName();

	$sql = "
		DELETE a FROM {$table} a
			JOIN {$table} d
				ON a.OBJECT_ID = d.OBJECT_ID
			LEFT JOIN {$table} x
				ON x.PARENT_ID = d.PARENT_ID AND x.OBJECT_ID = a.PARENT_ID
			WHERE d.PARENT_ID = {$objectId} AND x.PARENT_ID IS NULL
	";

	$connection->queryExecute($sql);

	$sql = "
		INSERT INTO {$table} (PARENT_ID, OBJECT_ID, DEPTH_LEVEL)
			SELECT stree.PARENT_ID, subtree.OBJECT_ID, stree.DEPTH_LEVEL+subtree.DEPTH_LEVEL+1
			FROM {$table} stree JOIN {$table} subtree ON subtree.PARENT_ID = {$objectId} AND stree.OBJECT_ID = {$toNodeId}
	";

	$connection->queryExecute($sql);
}