Перенос Joomla 1.5 на php 5.3

Взломали давеча мне несколько сайтов, которые работали на старой Joomla 1.5. Зловредин почистил, движок и компоненты пообновлял, шелы вычистил, дыры позакрывал. За одним махом решил сменить и хостинг. Учитывая, что новые Джумлы любят PHP версии 5.3 его и поставил на VPS (спасибо eqvia.com, поддержка выше всяких похвал).

Кто бы мог подумать, что к новому PHP 5.3 Joomla 1.5 и многие её компоненты не готовы.

Старый добрый YOOtooltip и Parameter 2 to plgContentYOOtooltip() expected to be a reference

Замечательный, для своего времени, плагин, позволяет создавать всплывающие подсказки. Сейчас все используют новомодные решения от nonumber.nl и им подобные, но на старых проектах YOOtooltip ещё встречается.

При переводе Joomla 1.5.26 на PHP 5.3+ я столкнулся с ошибкой:
Warning: Parameter 2 to plgContentYOOtooltip() expected to be a reference, value given in ~/example.com/libraries/joomla/event/dispatcher.php on line 136

Решение:

В файле ~/example.com/joomla/libraries/joomla/event/dispatcher.php меняем строку 136:

До
$result[] = call_user_func_array($observer['handler'], $args);
После
$args2 = array();
foreach ($args as $k => $v) {
    $args2[] = &$args[$k];
}
$result[] = call_user_func_array($observer['handler'], $args2);

Пакет Jumi - мой гибкий друг и Parameter 2 to plgContentJumi::onPrepareContent() expected to be a reference

При переводе Joomla 1.5.26 на PHP 5.3+ я столкнулся с ошибкой:
JUMI Warning: Parameter 2 to plgContentJumi::onPrepareContent() expected to be a reference, value given in ~/example.com/libraries/joomla/event/event.php on line 67

Решение:

В файле ~/example.com/joomla/libraries/joomla/event/event.php меняем строку 67:

До
return call_user_func_array ( array($this, $event), $args );
После
$args2 = array();
foreach ($args as $k => $v) {
    $args2[] = &$args[$k];
}
return call_user_func_array ( array($this, $event), $args2 );

Много полезного на тему проблем с переводом Joomla 1.5 на PHP новых версий можно почерпнуть здесь.

Add comment


Security code
Refresh

Found a typo? Please select it and press Ctrl + Enter.