DokuWiki постоянно развивается, и с обновлениями меняется API для работы с событиями. Если вы используете плагины, такие как Bootstrap Wrapper Plugin, вам может понадобиться адаптировать код для совместимости с новыми версиями. В этой статье мы рассмотрим конкретный пример: замену устаревшего вызова trigger_event() в файле popup.php плагина Bootstrap Wrapper Plugin.
Bootstrap Wrapper Plugin добавляет поддержку Bootstrap компонентов в DokuWiki, включая обработку медиа-менеджера и попапов. В файле popup.php этого плагина есть код, который запускает событие для медиа-менеджера. Давайте разберёмся, где это происходит и как обновить код.
popup.phpФайл popup.php является частью Bootstrap Wrapper Plugin и обычно расположен в директории плагина:
lib/plugins/bootstrapwrapper/exe/popup.php[ваш_сайт]/lib/plugins/bootstrapwrapper/exe/popup.php.exe/popup.php внутри архива плагина.Этот файл отвечает за обработку попапов и интеграцию с медиа-менеджером DokuWiki. В нём может быть код, который запускает событие 'MEDIAMANAGER_STARTED'.
В старых версиях плагина (или если код не обновлён) в popup.php используется функция trigger_event(). Вот пример того, как это может выглядеть:
popup.php<?php
// ... другой код плагина ...
$tmp = array();
// Старый вызов события
trigger_event('MEDIAMANAGER_STARTED', $tmp);
session_write_close();
// ... остальной код ...
?>
Этот код запускает событие 'MEDIAMANAGER_STARTED' и передаёт в него массив $tmp. Однако в новых версиях DokuWiki функция trigger_event() устарела и может не работать корректно.
Event::createAndTrigger()Чтобы обновить код, замените старый вызов на новый API с классом Event. Вот как это сделать:
<?php
// ... другой код плагина ...
use dokuwiki\Extension\Event; // Импорт класса Event
$tmp = array();
// Новый вызов события
Event::createAndTrigger('MEDIAMANAGER_STARTED', $tmp);
session_write_close();
// ... остальной код ...
?>
Или, если вы предпочитаете не использовать use, можно вызвать с полным пространством имён:
<?php
// ... другой код плагина ...
$tmp = array();
// Новый вызов события с полным именем класса
\dokuwiki\Extension\Event::createAndTrigger('MEDIAMANAGER_STARTED', $tmp);
session_write_close();
// ... остальной код ...
?>
use dokuwiki\Extension\Event; в начало файла (после <?php), чтобы PHP знал о классе. Если файл уже имеет другие use-выражения, добавьте эту строку к ним.trigger_event('MEDIAMANAGER_STARTED', $tmp) → Event::createAndTrigger('MEDIAMANAGER_STARTED', $tmp).createAndTrigger() принимает те же параметры: имя события и данные (по ссылке). Если нужно, можно добавить третий параметр — действие по умолчанию (callable) и четвёртый — флаг отмены (bool, по умолчанию true).popup.php, чтобы можно было откатить изменения.Обновление Bootstrap Wrapper Plugin — простой процесс: найдите popup.php, замените trigger_event() на Event::createAndTrigger() и добавьте импорт класса. Это обеспечит совместимость с современными версиями DokuWiki и улучшит производительность.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()