Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2010-11-17 12:07:03

vitaliy1978
Участник
Зарегистрирован: 2010-05-11
Сообщений: 45
Рейтинг :   
Сайт

Очередность запуска плагинов

Ситуация следующая:
1). есть плагин, ответственный за геолокацию пользователей на сайте. Определяет где находится пользователь по его IP адресу.
2). Есть другие плагины, которые непротив использовать полученную плагином №1 информацию.

Вопрос:
1). Как сделать так, чтобе плагин геолокации вызвался самым первым? Предложение с патчением файлов CMS не принимаются.
2). Наличие плагина определяю по наличию папки в каталоге плагинов с именем мне нужного. Может есть какие функции ядра систем, используя которые можно получить ту-же информацию? Данная функция используется мной для получения доступа из плагинов к API плагина геолокации.

Не в сети

#2 2010-11-19 03:17:33

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Очередность запуска плагинов

vitaliy1978, установить плагину action который срабатывает раньше остальных, ну а если ты посмотришь на реализацию функции add_act, то увидишь, что можно и приоритет задавать при вызове плагинов, подписанных на один action.

Покажешь плагин, подскажу более подробней.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#3 2010-11-19 06:48:10

vitaliy1978
Участник
Зарегистрирован: 2010-05-11
Сообщений: 45
Рейтинг :   
Сайт

Re: Очередность запуска плагинов

Плагин выложу в ближайшее время. Сейчас пишу и тестирую его, плюс люди чистят помаленьку геобазу. Если в 2-х словах, то основной файл плагина идет так:

<?php
бла бла бла
add_act('index', 'plugin_geo_main');

function plugin_geo_main(){
	global $mysql;
	
	if(!isset($_SESSION['geodata'])){
		$ip=ip2int(plugin_geo_get_real_ip());
		
		$rec = $mysql->record('select country_id,region_id,city_id from '.prefix.'_geo_ipaddr where '.db_squote($ip).'>=ip_start and '.db_squote($ip).'<=ip_end and deleted=0 order by is_zone asc limit 1');
		if($rec){
			$_SESSION['geodata']['country_id']=$rec['country_id'];
			$_SESSION['geodata']['region_id']=$rec['region_id'];
			$_SESSION['geodata']['city_id']=$rec['city_id'];
		}else{
			$_SESSION['geodata']['country_id']=0;
			$_SESSION['geodata']['region_id']=0;
			$_SESSION['geodata']['city_id']=0;
		}
	}
}

?>

Так вот, значения сохраненные в сессии используется например плагином погоды, плагином интернет-магазина, моим плагином вывода новостей. И вопрос возник от того, что к моменту вызова этих плагинов геоплагин уже должен идентифицировать местоположение пользователя.

Не в сети

#4 2010-11-19 11:53:20

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Очередность запуска плагинов

vitaliy1978, делаешь так

В файле version
Actions: all; файл_твоего_плагина.php
Если ты используешь Acts, значит
Acts: all

В файле файл_твоего_плагина.php
Вместо add_act('index', 'plugin_geo_main');
Пишешь add_act('core', 'plugin_geo_main');

Таким образом твой плагин будет вызван сразу после авторизации, если надо раньше и хочешь без хаков, надо переписывать плагин авторизации, ну а если еще раньше, то без хака не обойтись.


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#5 2010-11-21 19:18:00

Amarelius
Модератор
Откуда Kiev
Зарегистрирован: 2008-10-24
Сообщений: 639
Рейтинг :   69 
Сайт

Re: Очередность запуска плагинов

vitaliy1978, посмотри, может пригодится База GeoIP – страны и города


Всегда ищу разработчиков в Киеве!
Ищешь работу программистом, пиши мне на ArnitUA@gmail.com

Не в сети

#6 2010-11-22 06:47:01

vitaliy1978
Участник
Зарегистрирован: 2010-05-11
Сообщений: 45
Рейтинг :   
Сайт

Re: Очередность запуска плагинов

Спасибо. Гляну. В настоящее время я закачал и использую базу http://ipgeobase.ru/ там правда только россия. Попробую maxmind тоже залить и объединить.

Не в сети

Подвал раздела

Работает на FluxBB