Работа Joomla 1.0.x на версии PHP 5.3

Хаки Joomla


Здравствуйте дорогие друзья и любители Joomla. Сегодня я хотел бы поговорить о самой первой линейки Joomla 1.0.х и ее работе с php версии 5.3 и выше, точнее о некорректной ее работе. Я понимаю, что линейку Joomla 1.0.x уже давно никто не использует, но все же я начал создавать сайты именно с нее и сейчас на обслуживании у меня есть пару сайтов. Так вот, линейка Joomla 1.0.x в связке с php 5.3 не выводит содержимое компонента com_content, а вместо статей или новостей просто пустота. И сегодня я хочу представить временное решение, которое поможет исправить данное положение.

Работа Joomla 1.0.x на версии PHP 5.3

Работа Joomla 1.0.x на версии PHP 5.3

Сразу хочу заметить, что данный способ временный и вам нужно обновить ваш сайт на Joomla 1.0.x до последней версии CMS Joomla.

Заставляем работать Joomla 1.0.x на версии PHP 5.3 и выше

  1. Вносим изменения в com_content, в файле /includes/Cache/Lite/Function.php находим строчку:
    $arguments = func_get_args();

    и заменяем её на:

    $arguments = func_get_args();
    $numargs = func_num_args();
    for($i=1; $i < $numargs; $i++){
    $arguments[$i] = &$arguments[$i];
    }
  2. Исправляем com_contact, находим в /includes/vcard.class.php функцию:
    function quoted_printable_encode($input, $line_max=76, $space_conv=false)
    {
    /* … */
    }

    заменяем на:

    if(!function_exists(‘quoted_printable_encode’))
    
    {
    
    function quoted_printable_encode($input, $line_max=76, $space_conv=false)
    
    {
    
    /* … */
    
    }
    
    }
    
    
  3. В PHP 5.3.3 были больше не поддерживаются функции ereg*(). Решение проблем с ereg*() заключается в замене этой функции на preg_match() по следующим алгоритмам:
    ereg(«\.([^\.]*$)», $this->file_src_name, $extension);

    заменить на

    preg_match(«/\.([^\.]*$)/», $this->file_src_name, $extension);

    ———————————-

    $this->file_dst_name_body = ereg_replace(«[^A-Za-z0-9_]«, «», $this->file_dst_name_body);

    заменить на

    $this->file_dst_name_body = preg_replace(«/[^A-Za-z0-9_]/», «», $this->file_dst_name_body);

    ———————————-

    eregi(«\.([^\.]*$)», $this->file_src_name, $extension);

    заменить на

    preg_match(«/\.([^\.]*$)/i», $this->file_src_name, $extension);

    ———————————-

    split (string pattern, string string [, int limit])

    заменить на

    preg_split ( string pattern, string subject [, int limit [, int flags]] )
    
    

Еще раз хочу напомнить, что это только временный выход из такой ситуации и вам лучше обновить Joomla 1.0.x до последней версии.

А скоро выйдет статья о том как заставить работать плагин комментариев SocComments вместе с JComments в компоненте K2. Увидимся.

Joomla Блог Nauca – научись работать с Joomla

Хочешь получать на e-mail свежие статьи о компонентах, модулях, плагинах и других полезных вещах связанных с Joomla? Не пропусти ничего полезного, подпишись на новости блога Nauca: