jComments 2.3: Ошибка is_a(): Deprecated.
Во время создания блога да и других сайтов, в глобальных настройках я всегда выставляю показ ошибок - "для разработчиков (все ошибки PHP)", что бы устранить косяки кодеров. Ведь любые ошибки, даже самые незначительные напрягают сервер. Хотя с последним я утверждать не буду - не системный администратор. Но чистый код все же лучше!
И так, в процессе создания блога столкнулся с косяком разработчиков jComments 2.3, странно но почему то они все еще используют функцию is_a в коде, которая уже как бы устарела и в php5 не рекомендуется к применению. По видимому она унаследовала со времен Joomla 1.0
Сама функция проверяет принадлежность текущего объекта к указанному классу. В PHP 5 и выше рекомендуется использовать оператор instanceof. В общем прекращаем лить воду и исправляем баг.
В файле сайт.ру/components/com_jcomments/libraries/joomlatune/template.php находим:
if (!is_a($tmpl, 'JoomlaTuneTemplate')) { unset($tmpl); $this->raiseError('Incorrect template: ' . $template); return false; }
и заменяем на:
if (!($tmpl instanceof JoomlaTuneTemplate)) { unset($tmpl); $this->raiseError('Incorrect template: ' . $template); return false; }
Вот как то так.
Вот еще парочка баг-фиксов для бэкенда:
Открываем сайт.ру/administrator/components/com_jcomments/admin.jcomments.html.php:
<td align="center"><?php echo JCommentsHTML::_('grid.checkedout', $row, $i); ?></td>
меняем на:
<td align="center"><?php echo JHtml::_('grid.id', $i, $row->id); ?></td>
Хак исправляет баг с checkbox списка комментариев.
Открываем сайт.ру/administrator/components/com_jcomments/admin.jcomments.migration.php:
function getSources()
меняем на:
public static function getSources()
Небольшая правочка в синтаксисе php.
Ну и для тех кто не любит копирайты, открываем сайт.ру/components/com_jcomments/jcomments.class.php:
if ($lang == 'russian' || $lang == 'ukrainian' || $lang == 'belorussian' || $lang == 'ru-RU' || $lang == 'uk-UA' || $lang == 'be-BY') { $tmpl->addGlobalVar('support', base64_decode('PGEgaHJlZj0iaHR0cDovL3d3dy5qb29tbGF0dW5lLnJ1IiB0aXRsZT0iSkNvbW1lbnRzIiB0YXJnZXQ9Il9ibGFuayI+SkNvbW1lbnRzPC9hPg==')); } else { $tmpl->addGlobalVar('support', base64_decode('PGEgaHJlZj0iaHR0cDovL3d3dy5qb29tbGF0dW5lLmNvbSIgdGl0bGU9IkpDb21tZW50cyIgdGFyZ2V0PSJfYmxhbmsiPkpDb21tZW50czwvYT4=')); }
меняем на:
if ($lang == 'russian' || $lang == 'ukrainian' || $lang == 'belorussian' || $lang == 'ru-RU' || $lang == 'uk-UA' || $lang == 'be-BY') { $tmpl->addGlobalVar('support', ''); } else { $tmpl->addGlobalVar('support', ''); }
Спасибо за внимание!