public static function createTypes($types, $existed = false) { // read existed if ($existed === false) { $existed = static::getExistedTypes(); } // here we try to add type names for ALL languages $langs = Location\Admin\NameHelper::getLanguageList(); foreach ($types as $line) { // for sure unset($line['SELECTORLEVEL']); unset($line['DEFAULTSELECT']); $names = array(); if (!is_array($line['NAME'])) { $line['NAME'] = array(); } if (is_array($langs)) { foreach ($langs as $lid => $f) { $names[ToUpper($lid)] = static::getTranslatedName($line['NAME'], $lid); } } if (!isset($existed[$line['CODE']])) { $existed[$line['CODE']] = static::createType($line); } else { // ensure it has all appropriate translations // we can not use ::updateMultipleForOwner() here, because user may rename his types manually Location\Name\TypeTable::addAbsentForOwner($existed[$line['CODE']], $names); } } return $existed; }
public static function createBaseTypes() { $types = array('COUNTRY' => array('CODE' => 'COUNTRY', 'SORT' => 100, 'DISPLAY_SORT' => 700, 'NAME' => array()), 'REGION' => array('CODE' => 'REGION', 'SORT' => 300, 'DISPLAY_SORT' => 500, 'NAME' => array()), 'CITY' => array('CODE' => 'CITY', 'SORT' => 600, 'DISPLAY_SORT' => 100, 'NAME' => array())); $langs = array(); $res = \Bitrix\Main\Localization\LanguageTable::getList(); while ($item = $res->Fetch()) { $MESS = array(); @(include $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/sale/lang/' . $item['LID'] . '/lib/location/migration/migrate.php'); if (!empty($MESS)) { $types['COUNTRY']['NAME'][$item['LID']]['NAME'] = $MESS['SALE_LOCATION_TYPE_COUNTRY']; $types['REGION']['NAME'][$item['LID']]['NAME'] = $MESS['SALE_LOCATION_TYPE_REGION']; $types['CITY']['NAME'][$item['LID']]['NAME'] = $MESS['SALE_LOCATION_TYPE_CITY']; } $langs[$item['LID']] = true; } $typeCode2Id = array(); $res = Location\TypeTable::getList(array('select' => array('ID', 'CODE'))); while ($item = $res->Fetch()) { $typeCode2Id[$item['CODE']] = $item['ID']; } foreach ($types as $code => &$type) { foreach ($langs as $lid => $f) { $type['NAME'][$lid] = \Bitrix\Sale\Location\Admin\NameHelper::getTranslatedName($type['NAME'], $lid); } if (!isset($typeCode2Id[$type['CODE']])) { $typeCode2Id[$type['CODE']] = Location\TypeTable::add($type); } else { // ensure it has all appropriate translations // we can not use ::updateMultipleForOwner() here, because user may rename types manually Location\Name\TypeTable::addAbsentForOwner($typeCode2Id[$type['CODE']], $type['NAME']); } } return $typeCode2Id; }