- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/delivery/externallocationmap.php
- Класс: BitrixSaleDeliveryfor
- Вызов: for::fillNormalizedTable
static function fillNormalizedTable($startId = false, $timeout = 0)
{
set_time_limit(0);
$startTime = mktime(true);
$lastProcessedId = 0;
$con = BitrixMainApplication::getConnection();
$sqlHelper = $con->getSqlHelper();
if(intval($startId) <= 0)
$con->queryExecute("DELETE FROM b_sale_hdaln");
$query = "SELECT
L.ID,
L.LEFT_MARGIN,
L.RIGHT_MARGIN,
N.NAME_UPPER
FROM
b_sale_location AS L
INNER JOIN b_sale_loc_name AS N ON L.ID = N.LOCATION_ID
INNER JOIN b_sale_loc_type AS T ON L.TYPE_ID = T.ID
WHERE
N.LANGUAGE_ID = 'ru'
AND (T.CODE = 'VILLAGE' OR T.CODE = 'CITY')";
if($startId !== false)
$query .= " AND L.ID > ".strval(intval($startId));
$query .= " ORDER BY ID ASC";
$res = $con->query($query);
while($loc = $res->fetch())
{
$con->queryExecute("
INSERT INTO
b_sale_hdaln (LOCATION_ID, LEFT_MARGIN, RIGHT_MARGIN, NAME)
VALUES(
".intval($loc['ID']).",
".intval($loc['LEFT_MARGIN']).",
".intval($loc['RIGHT_MARGIN']).",
'".$sqlHelper->forSql(
preg_replace(
'/s*((.*))/i'.BX_UTF_PCRE_MODIFIER,
'',
BitrixSaleLocationComparator::flatten($loc['NAME_UPPER']))
)."'
)
");
$lastProcessedId = $loc['ID'];
if($timeout > 0 && (mktime(true)-$startTime) >= $timeout)
break;
}
return $lastProcessedId;
}