Большое изменение API модуля. Добавлена совместимость с API Битрикса. Минимальная версия Главного модуля 1С-Битрикс теперь 17.0.9.
Добавлена поддержка функционала Геолокации Битрикса. Теперь модуль содержит один из Обработчиков геолокации, дополнительно к предустановленным.
Модуль может теперь использоваться в типовом функционале Битрикса для поиска города (например в стандартном поиске местоположения в новой форме заказа), если включить обработчик на странице списка обработчиков геолокации.
После обновления на странице «Настройки - Настройки продукта - Геолокация» должен появиться новый обработчик. Или он будет в списке на кнопке «Добавить».
Совместимость API со версиями модуля сохранена. Обновлять можно на сайтах, где раньше модуль стоял.
Если страшно обновлять, то сделайте бекап папки /bitrix/modules/askaron.geo/
Метод \Askaron\Geo\Info::getIp() теперь внутри вызывает стандартный \Bitrix\Main\Service\GeoIp\Manager::getRealIp(). Они практически одинаковые.
Метод \Askaron\Geo\Info::getIp(), как и раньше, возвращает другой $ip, если вызывали \Askaron\Geo\Info::setIp( $ip )
Метод \Askaron\Geo\Info::getSxGeoCityFull( $ip = '' ) теперь содержит необязательный параметр $ip. Если IP не задан или пустой, то как и раньше адрес берется из \Askaron\Geo\Info::getIp().
Метод \Askaron\Geo\Info::getSxGeoCityFull() теперь совсем нежелательно использовать в своём коде.
Как и раньше работает метод $arLocation = \Askaron\Geo\Location::getLocation();
Но ещё появился типовой метод Битрикса с нашим и другими обработчиками. Возвращает объект геолокации, или null, когда не найдено, или выключены все обработчики.
$result = \Bitrix\Main\Service\GeoIp\Manager::getDataResult( \Askaron\Geo\Info::getIp(), "ru");
Метод \Askaron\Geo\Info::getSxGeoCityFull() работает быстрее, чем \Bitrix\Main\Service\GeoIp\Manager::getDataResult(). Но это практически незаметно.
Метод \Bitrix\Main\Service\GeoIp\Manager::getDataResult() работает с любыми обработчиками геолокации, поэтому используйте теперь его.
Метод $arLocation = \Askaron\Geo\Location::getLocation(); теперь внутри себя вызывает \Bitrix\Main\Service\GeoIp\Manager::getDataResult и обращается ко всем установленным обработчикам.
Если все обработчики геолокации выключены, или ничего не найдено, то вызывает \Askaron\Geo\Info::getSxGeoCityFull второй раз, для совместимости на сайтах, где раньше стоял модуль.
\Askaron\Geo\Location::getLocation(); запоминает результат у пользователя поэтому лишняя нагрузка не создается.