Joomla 1.5 com_user и импорт пользовательских плагинов, таких как Joomla 1.6 и выше

При доступе к компоненту com_users в Joomla 1.6 и 1.7 в интерфейсе приложение автоматически импортирует все плагины из группы «user». Очевидно, что это очень полезно, если вы не хотите создавать компонент, чтобы просто передавать некоторые переменные в плагин.

ОК. давайте сделаем это проще:

  1. Пользователь получает ссылку активации: http://example.com/index.php?option=com_users&task=edit&emailactivation=1&u=63&d077b8106=1 и нажимает на нее.
  2. Конечно, компонент будет опускать emailactivation и другие параметры, просто обращаясь «Редактировать форму профиля» (или форму для входа для гостей).
  3. Затем JApplication импортирует все плагины из группы « user », которая запускает __constructors

В принципе, с помощью __constructor плагина можно настроить простое действие, подобное приведенному ниже:

class plgUserAccountactivation extends JPlugin { public function __construct(& $subject, $config) { parent::__construct($subject, $config); if(isset($_GET['emailactivation'])) { // check token // activate account, email or whatever // redirect with message } } } 

Вау! Он работает, нет необходимости создавать целый контроллер для обработки одной простой задачи.

Но держись на минуту …

  • В ссылке change index.php? Option = com_users to index.php? Option = com_user
  • И давайте попробуем Joomla 1.5 …

Эй, эй, ничего не происходит. Com_user ничего не импортировал и __конструктор не вызвал.

Я очень обеспокоен этим в Joomla 1.5, и мне не хочется писать весь компонент.

Если у кого-нибудь есть какая-то яркая идея, пожалуйста, дайте мне знать.

Изменить: я решил проблему, отправив ссылку в следующей форме:

http: /example.com/index.php? option = com_user & task = logout & emailactivation = 1 & u = 63 & d077b8106 = 1

Таким образом, пользовательские плагины включены и выполняются __конструкторы. Но это так легкомысленно, как task = logout на самом деле не поощряет клик по ссылке.

Проблема с 1.5 заключается в том, что события более ограничены. Доступны следующие события: Joomla 1.5 Plugin Events – Пользователь . Думаю, поэтому ваш плагин не инициирован.

Как сделать это системным плагином и проверить активацию в свойствах URL / запроса? Что-то вроде:

 class plgSystemUseractiavation extends JPlugin { function onAfterInitialise(){ $u = &JURI::getInstance(); $option = trim(strtolower($u->getVar('option'))); $emailactivation = trim(strtolower($u->getVar('emailactivation'))); if( strlen($option < 1) ){ // for SEF... $option = trim(strtolower(JRequest::getString('option'))); } $app =& JFactory::getApplication(); $appName = trim(strtolower($app->getName())); if( $appName === 'site' ){ if( ( $option === 'com_users' ) || ( $option === 'com_user' ) ){ if( $emailactivation === '1' ){ // check token // activate account, email or whatever // redirect with message } } } } }