• Модуль: translate
  • Путь к файлу: ~/bitrix/modules/translate/lib/index/pathindexcollection.php
  • Класс: BitrixTranslateIndexPathIndexCollection
  • Вызов: PathIndexCollection::collectAssignment
public function collectAssignment(TranslateFilter $filter = null): self
{
	// /bitrix/(mobileapp|templates|components|activities|wizards|gadgets|js|..)
	foreach (TranslateASSIGNMENT_TYPES as $assignmentId)
	{
		$pathEntryRes = IndexInternalsPathIndexTable::getList([
			'filter' => [
				'=PATH' => '/bitrix/'. $assignmentId,
			],
			'select' => ['ID', 'PATH'],
		]);
		while ($path = $pathEntryRes->fetchObject())
		{
			IndexInternalsPathIndexTable::bulkUpdate(
				['ASSIGNMENT' => $assignmentId],
				['=DESCENDANTS.PARENT_ID' => $path->getId()]
			);
		}
	}

	$pathModulesRes = IndexInternalsPathIndexTable::getList([
		'filter' => [
			'=PATH' => '/bitrix/modules',
		],
		'select' => ['ID'],
	]);
	while ($pathModules = $pathModulesRes->fetch())
	{
		$pathList = IndexInternalsPathIndexTable::getList([
			'filter' => [
				'=PARENT_ID' => $pathModules['ID'],
				'!=MODULE_ID' => null,
			],
			'select' => ['ID', 'PATH', 'MODULE_ID'],
		]);
		while ($modulePath = $pathList->fetchObject())
		{
			$moduleId = $modulePath->getModuleId();

			foreach (TranslateASSIGNMENT_TYPES as $assignmentId)
			{
				$filterPaths = [
					// /bitrix/modules/[moduleName]/install/[smth]
					'/bitrix/modules/'.$moduleId.'/install/'. $assignmentId,
					// /bitrix/modules/[moduleName]/lang/#LANG_ID#/[smth]
					'/bitrix/modules/'.$moduleId.'/lang/#LANG_ID#/'. $assignmentId,
					// /bitrix/modules/[moduleName]/lang/#LANG_ID#/install/[smth]
					'/bitrix/modules/'.$moduleId.'/lang/#LANG_ID#/install/'. $assignmentId,
					// /bitrix/modules/[moduleName]/install/bitrix/templates/[templateName]
					'/bitrix/modules/'.$moduleId.'/install/bitrix/'. $assignmentId,
					// /bitrix/modules/[moduleName]/handlers/delivery/[smth]
					// /bitrix/modules/[moduleName]/handlers/paysystem/[smth]
					'/bitrix/modules/'.$moduleId.'/handlers/'. $assignmentId,
				];
				if ($assignmentId == 'templates')
				{
					// /bitrix/modules/[moduleName]/install/public/templates/[templateName]
					$filterPaths[] = '/bitrix/modules/'.$moduleId.'/install/public/'. $assignmentId;
				}
				$pathEntryRes = IndexInternalsPathIndexTable::getList([
					'filter' => [
						'=PATH' => $filterPaths,
						'=DESCENDANTS.PARENT_ID' => $modulePath->getId(),
					],
					'select' => ['ID', 'PATH'],
				]);
				while ($path = $pathEntryRes->fetchObject())
				{
					IndexInternalsPathIndexTable::bulkUpdate(
						['ASSIGNMENT' => $assignmentId],
						['=DESCENDANTS.PARENT_ID' => $path->getId()]
					);
				}
			}
		}
	}

	return $this;
}