Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
siv1987

(SIV41) Author Post GeoLocation

Recommended Posts

У всех конечно устанавливается без проблем, но не у всех есть возможность устанавливать расширения на сервере. В принципе внедрить метод для работы с php расширением не сложно, там всего одна функция для вызова, а вот в качестве альтернативы в виде php библиотеки сделаю интеграцию с Maxmind GeoIP2. Установка библиотеки немного сложнее (относительно конечно), но за то база данных там имеет мулти-язычность. Хотя и говорил что новые сервисы больше добавлять не буду, а буду расширять функционал из шаблоного плагина в полноценный класс для геолокации на форуме, с поддержкой гугл мэпс и пр.

Share this post


Link to post
Share on other sites

Обновлен до 1.0.4.

По многочисленным просьбам участников добавлены новые и, скорее всего последние, geo сервисы - php-geoip и maxmind geoip2. Существующие сервисы должны уже удовлетворить всех, даже самых взыскательных пользователей.

  • Upvote 1

Share this post


Link to post
Share on other sites

Спасибо огромное!

 

У внешних бесплатных сервисов есть два серьезных минуса: 1) медленная обработка запроса, 2) быстро достигается предел бесплатных запросов, в результате, сервис перестает отдавать результат.

Share this post


Link to post
Share on other sites

Отпишитесь потом о работе, ибо с модулем php негде было протестировать.

Share this post


Link to post
Share on other sites

У внешних бесплатных сервисов есть два серьезных минуса: 1) медленная обработка запроса, 2) быстро достигается предел бесплатных запросов, в результате, сервис перестает отдавать результат.

1) Да, время генерации страницы немного увеличивается, но для этого есть кеширование и настройка доступа по группам

2) Второе вытекает из первого - кеширование. Возьмем к примеру средний форум по количеству активных пользователей в месяц 1000 и сервис с лимитом в 10000 запросов. Установим кеширование ip на 15 дней. На 1 ip приходится два запроса в месяц, умножим на 1000 активных и получаем 2000 запросов в месяц, плюс 10000 в запас для старых сообщений и 3000 для динамичных ип. Итого имеем ~6000 запросов - чуть больше половины. Остается еще половина для тех пользователей, у кого каждое сообщение с нового ip адреса. Более точно спрогнозировать количество запросов можно посчитав число уникальных ip сообщений за один месяц: SELECT COUNT(*) FROM ( SELECT ip_address FROM forums_posts WHERE post_date > UNIX_TIMESTAMP( NOW() - INTERVAL 1 MONTH ) GROUP BY ip_address ) z. Если не кешировать и для каждого сообщения с тем же ип делать отдельный запрос то да, так вы и за неделю упретесь в лимит и на куда меньшем форуме.

У сторонних geo-сервисов тоже есть свои преимущества - не нужно устанавливать дополнительное ПО, актуальность и размер базы данных.

  • Upvote 1

Share this post


Link to post
Share on other sites

Отличный плагин, а можешь добавить опцию место расположения города:

1. Рядом с IP как сейчас

2. Под аватаром

Share this post


Link to post
Share on other sites
2. Под аватаром

Где именно под аватаром?

Share this post


Link to post
Share on other sites

В шаблоне postContainer доступна переменная $comment с массивом geoLocation - {{if $comment->geoLocation['city']}}$comment->geoLocation['city']{{endif}}

  • Upvote 1

Share this post


Link to post
Share on other sites

Вставляю в этот шаблон {{if $comment->geoLocation['city']}}$comment->geoLocation['city']{{endif}}

либо ничего либо ошибка с просьбой восстановить шаблон по умолчанию

:(

Share this post


Link to post
Share on other sites

Так ничего или ошибка с просьбой восстановить шаблон?

Вот дефолтное условие которое используется в плагине:

 

{{if !empty( $comment->geoLocation['city'] )}}<span class="geolocation" data-ipsTooltip title="{$comment->geoLocation['countryName']}">{$comment->geoLocation['city']}</span>{{endif}}

Share this post


Link to post
Share on other sites

Обновлен до 1.0.5

Обнаружился один неприятный баг. Некоторые пользователи стали жаловаться на ошибку при поиске IP в панели модератора.

IPS сервис геолокации хранит в массиве country не название страны а ее код, тогда как плагин наоборот записывал полное имя. При совместном использование, объект \IPS\GeoLocation выбрасывал исключение на попутку загрузить языковую строку с именем страны. Из-за того, что IPS не добавили перехват этого исключения, оно приводило к фатальной ошибке.

Спасибо viru за багрепорт.

 

Fatal error:  Method IPS\\GeoLocation::__toString() must not throw an exception, caught UnderflowException: lang_not_exists__country-\xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd1\x8f in /system/Theme/Theme.php(744) : eval()'d code on line 0, referer: http://forum.ru/modcp/ip-tools/
Stack trace:, referer: http://forum.ru/modcp/ip-tools/
1. {main}() /index.php:0, referer: http://forum.ru/modcp/ip-tools/
2. IPS\\_Dispatcher->run() /index.php:13, referer: http://forum.ru/modcp/ip-tools/
3. IPS\\Dispatcher\\_Controller->execute() /system/Dispatcher/Dispatcher.php:129, referer: http://forum.ru/modcp/ip-tools/
4. IPS\\core\\modules\\front\\modcp\\_modcp->manage() /system/Dispatcher/Controller.php:96, referer: http://forum.ru/modcp/ip-tools/
5. call_user_func:{/applications/core/modules/front/modcp/modcp.php:67}() /applications/core/modules/front/modcp/modcp.php:67, referer: http://forum.ru/modcp/ip-tools/
6. IPS\\core\\extensions\\core\\ModCp\\_IPTools->manage() /applications/core/modules/front/modcp/modcp.php:67, referer: http://forum.ru/modcp/ip-tools/
7. IPS\\Theme\\_SandboxedTemplate->ipLookup() /applications/core/extensions/core/ModCp/IPTools.php:123, referer: http://forum.ru/modcp/ip-tools/
8. IPS\\Theme\\_SandboxedTemplate->__call() /applications/core/extensions/core/ModCp/IPTools.php:123, referer: http://forum.ru/modcp/ip-tools/
9. call_user_func_array:{/system/Theme/SandboxedTemplate.php:57}() /system/Theme/SandboxedTemplate.php:57, referer: http://forum.ru/modcp/ip-tools/
10. IPS\\Theme\\class_core_global_members->ipLookup() /system/Theme/SandboxedTemplate.php:57, referer: http://forum.ru/modcp/ip-tools/

Share this post


Link to post
Share on other sites

У меня небольшое предложение по плагину. Можно добавить, чтобы клик по определившемуся месту перекидывал а Google Maps (или просто в гугл-поиск). У нас например на форуме очень широкая география пользователей. Всегда интересно, где такой город Whitby, Canada. А тут нажал на ссылку - и сразу увидел. Если делать переход просто в поиск, то гугл еще и краткую справку по месту предлагает, фото, историю из Википедии.

 

Еще раз спасибо за ваш плагин.

  • Upvote 2

Share this post


Link to post
Share on other sites

Можно добавить, чтобы клик по определившемуся месту перекидывал а Google Maps (или просто в гугл-поиск).

В следующем обновление как раз планировал добавить всплывающие окно с местоположением на карте. Просто нет времени пока разбираться с попап-окнами.

 

 

ebd9645e4091t.jpg

  • Upvote 3

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...