- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/location/import/compiler/compiler.php
- Класс: BitrixSaleLocationImportCompileris
- Вызов: is::generateExportTreeUkrain
private function generateExportTreeUkrain()
{
$this->eTreeDB->dropCodeIndex();
$this->eTreeDB->restoreExportOffset();
$cd2r = $this->getDataFromCSV('ukrain_kazakhstan', 'ukrain_district2region');
$tree = array();
$tree['NODES'][self::UKRAIN_YANDEX_CODE] = array(
'NAME' => array(
'RU' => array('NAME' => 'Украина'),
'UA' => array('NAME' => 'Україна'),
'EN' => array('NAME' => 'Ukraine')
),
'TYPE_CODE' => 'COUNTRY',
'SOURCE' => self::SOURCE_YANDEX,
'ID' => self::UKRAIN_YANDEX_CODE,
'EXT' => array(
'YAMARKET' => array(
self::UKRAIN_YANDEX_CODE
)
)
);
foreach($cd2r as $line)
{
// add country district
if(!isset($tree['NODES'][$line['CDID']]))
{
$tree['NODES'][$line['CDID']] = array(
'NAME' => $line['CDNAME'],
'TYPE_CODE' => 'COUNTRY_DISTRICT',
'SOURCE' => self::SOURCE_YANDEX,
'ID' => $line['CDID'],
'PARENT_ID' => self::UKRAIN_YANDEX_CODE,
'EXT' => array(
'YAMARKET' => array(
$line['CDID'] // country district id in file
),
)
);
}
$tree['EDGES'][self::UKRAIN_YANDEX_CODE][$line['CDID']] = true;
$regionId = 'r'.md5($line['RNAME']['UA']['NAME']);
if($line['RNAME']['UA']['NAME'] == 'Севастополь, Місто' || $line['RNAME']['UA']['NAME'] == 'Автономна Республіка Крим')
$source = self::SOURCE_UKRAIN;
else
$source = self::SOURCE_YANDEX;
if($line['RNAME']['UA']['NAME'] == 'Севастополь, Місто')
{
$typeCode = 'SUBREGION';
}
else
{
$typeCode = 'REGION';
}
// add region
if(!isset($tree['NODES'][$regionId]))
{
$tree['NODES'][$regionId] = array(
'NAME' => $line['RNAME'],
'TYPE_CODE' => $typeCode,
'SOURCE' => $source,
'ID' => $regionId,
'PARENT_ID' => $line['CDID'],
);
if($source == self::SOURCE_YANDEX)
$tree['NODES'][$regionId]['EXT']['YAMARKET'][] = $line['RID'];
}
$tree['EDGES'][$line['CDID']][$regionId] = true;
}
$res = $this->getDataFromCSV('ukrain_kazakhstan', 'ukrain');
foreach($res as $line)
{
if($line['REGION'] == 'Автономна республіка Крим')
$line['REGION'] = 'Автономна Республіка Крим';
$line['REGION'] = $this->mb_str_replace('Місто', 'місто', $line['REGION']);
$line['SUBREGION'] = $this->mb_str_replace('Місто', 'місто', $line['SUBREGION']);
$line['CITY'] = $this->mb_str_replace('Місто', 'місто', $line['CITY']);
$regionId = 'r'.md5($line['REGION']);
$subRegionId = 'sr'.md5($line['SUBREGION']);
$cityId = 'c'.md5($line['CITY']);
if($line['REGION'] != 'Севастополь, Місто')
{
if(!isset($tree['NODES'][$subRegionId]))
{
$tree['NODES'][$subRegionId] = array(
'NAME' => array('UA' => array('NAME' => $line['SUBREGION'])),
'TYPE_CODE' => 'SUBREGION',
'SOURCE' => self::SOURCE_UKRAIN,
'ID' => $subRegionId,
'PARENT_ID' => $regionId,
'EXT' => array()
);
if(!isset($tree['EDGES'][$regionId][$subRegionId]))
$tree['EDGES'][$regionId][$subRegionId] = true;
}
}
if(!isset($tree['NODES'][$cityId]))
{
$tree['NODES'][$cityId] = array(
'NAME' => array('UA' => array('NAME' => $line['CITY'])),
'TYPE_CODE' => 'CITY',
'SOURCE' => self::SOURCE_UKRAIN,
'ID' => $cityId,
'PARENT_ID' => $subRegionId,
'EXT' => array()
);
if(!isset($tree['EDGES'][$subRegionId][$cityId]))
$tree['EDGES'][$subRegionId][$cityId] = true;
}
}
foreach($tree['EDGES'] as $k => $edges)
$tree['EDGES'][$k] = array_keys($edges);
$this->data['TREES']['UKRAIN'] = $tree;
$this->generateExportTreePutUkrainBundle(array(self::UKRAIN_YANDEX_CODE));
unset($this->data['TREES']['UKRAIN']);
$this->eTreeDB->doneInsert();
}