...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integrity/volatile/fieldcategory.php
- Класс: Bitrix\Crm\Integrity\Volatile\FieldCategory
- Вызов: FieldCategory::getCategoryByPath
public function getCategoryByPath(string $fieldPathName): array { $result = [ 'categoryId' => static::UNDEFINED, 'categoryPrefixTitle' => '', 'params' => [], ]; $fieldInfo = FieldInfo::getInstance(); [$path, $name] = array_values($fieldInfo->splitFieldPath($fieldPathName)); $fieldPathLength = mb_strlen($path); if ($fieldPathLength <= 0) { if ($name === 'ADDRESS') { $result['categoryId'] = static::ADDRESS; } else { $result['categoryId'] = static::ENTITY; } } else { $subTypeCode1 = ($fieldPathLength >= 2) ? mb_substr($path, 0, 2) : ''; if ($fieldPathLength === 2) { if ($subTypeCode1 === FieldCategory::PREFIX_MULTI) { $multiFieldType = $name; $multiFieldTypeMap = CCrmFieldMulti::GetEntityTypes(); if (isset($multiFieldTypeMap[$multiFieldType])) { $result['categoryId'] = static::MULTI; $result['params']['multiFieldType'] = $multiFieldType; } } elseif ($subTypeCode1 === FieldCategory::PREFIX_REQUISITE) { if ($name === EntityRequisite::ADDRESS) { $result['categoryId'] = static::ADDRESS; } } } elseif ( $fieldPathLength >= 5 && $path[2] === '.' && $subTypeCode1 === FieldCategory::PREFIX_REQUISITE ) { $countryCode = mb_substr($path, 3, 2); $countryId = (int)GetCountryIdByCode($countryCode); if ($fieldPathLength === 5) { $result['categoryId'] = static::REQUISITE; $result['params']['countryId'] = $countryId; } elseif ($countryId > 0 && $fieldPathLength === 8 && $path[5] === '.') { $subTypeCode2 = mb_substr($path, 6); if ($subTypeCode2 === FieldCategory::PREFIX_BANK_DETAIL) { $result['categoryId'] = static::BANK_DETAIL; $result['params']['countryId'] = $countryId; } } } } $result['categoryPrefixTitle'] = $this->getCategoryPrefixTitle($result['categoryId']); return $result; }