...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_product_section_helper.php
- Класс: \CCrmProductSectionHelper
- Вызов: CCrmProductSectionHelper::ImportSectionArray
public function ImportSectionArray($arSectionName, $level = 0) { $sectionID = 0; $level = intval($level); if (is_array($arSectionName) && $this->iblockModuleIncluded) { $nSections = count($arSectionName); if ($nSections > 0 && $level < $nSections && $this->catalogID > 0) { $curSectionName = ''; $curSectionPath = $parentSectionPath = ''; for ($i = 0; $i <= $level; $i++) { if ($i > 0) $curSectionPath .= '|'; $curSectionName = trim(strval($arSectionName[$i])); $curSectionPath .= $curSectionName; if ($i === ($level - 1)) $parentSectionPath = $curSectionPath; } if ($curSectionName !== '') { $curSectionHash = md5($curSectionPath); $parentSectionID = 0; if ($level > 0) { $parentSectionHash = md5($parentSectionPath); if (is_array($this->sectionByNameCache[$level - 1]) && isset($this->sectionByNameCache[$level - 1][$parentSectionHash])) { $parentSectionID = $this->sectionByNameCache[$level - 1][$parentSectionHash]; } } if ($parentSectionID > 0 || $level === 0) { $curSectionID = 0; if (is_array($this->sectionByNameCache[$level]) && isset($this->sectionByNameCache[$level][$curSectionHash])) { $curSectionID = $this->sectionByNameCache[$level][$curSectionHash]; } else { $dbRes = CIBlockSection::GetTreeList( array( '=IBLOCK_ID' => $this->catalogID, '=SECTION_ID' => $parentSectionID, '=NAME' => $curSectionName, '=DEPTH_LEVEL' => $level + 1, 'CHECK_PERMISSIONS' => 'N' ), array('ID', 'NAME', 'LEFT_MARGIN', 'RIGHT_MARGIN') ); if ($arRes = $dbRes->Fetch()) { $curSectionID = $this->sectionByNameCache[$level][$curSectionHash] = intval($arRes['ID']); } unset($dbRes, $arRes); } if ($curSectionID === 0) { $arSectionFields = array( 'CATALOG_ID' => $this->catalogID, 'SECTION_ID' => $parentSectionID, 'NAME' => $curSectionName ); $res = CCrmProductSection::Add($arSectionFields); if ($res !== false) { $curSectionID = $this->sectionByNameCache[$level][$curSectionHash] = intval($res); } } if ($level === ($nSections - 1)) { $sectionID = $curSectionID; } else { $sectionID = $this->ImportSectionArray($arSectionName, $level + 1); } } } } } return $sectionID; }