- Модуль: 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;
}