• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/copy/integration/group.php
  • Класс: BitrixDiskCopyIntegrationGroup
  • Вызов: Group::copyFolders
private function copyFolders(
	int $groupId,
	int $copiedGroupId,
	Folder $folder,
	Folder $targetFolder,
	array &$mapFolderIds
)
{
	$mapFolderIds[$folder->getId()] = $targetFolder->getId();

	$this->setFolderRights(
		$groupId,
		$copiedGroupId,
		$folder,
		$targetFolder
	);

	$children = $folder->getChildren(
		$this->securityContext,
		[
			'select' => [
				'*',
				'HAS_SUBFOLDERS',
			]
		]
	);
	foreach ($children as $child)
	{
		if ($child instanceof Folder)
		{
			$newFolder = $targetFolder->addSubFolder(
				[
					'NAME' => $child->getName(),
					'CREATED_BY' => $this->executiveUserId,
				]
			);
			if ($newFolder)
			{
				$mapFolderIds[$child->getId()] = $newFolder->getId();

				if ($child->getChildren($this->securityContext))
				{
					$this->copyFolders(
						$groupId,
						$copiedGroupId,
						$child,
						$newFolder,
						$mapFolderIds
					);
				}
			}
		}
	}
}