Давеча производил очередную миграцию с Joomla 3 на Joomla 5 и всплыла ошибка, которая ранее не встречалась в моей практике. Заголовок данной заметки, собственно, и описывает ошибку. Любопытно то, что вменяемого решения я не смог прочитать ни на одном из форумов. Поэтому я решил посвятить данному вопросу небольшую статью.
Проблема заключается в том, что в Joomla 5 класс 'Jarchive' был удален навсегда.
И если вам повстречалось расширение, разработанное под ранние версии Joomla, где этот класс использовался, необходимо добавить данный класс в это самое расширение.
Однако, прежде чем добавлять класс, необходимо ответить на несколько вопросов.
Зачем нужен данный класс и для чего он использовался?
На самом деле практическую ценность у данного класса нёс метод «extract», который позволял распаковывать архивы.
Данному методу передавался путь к архиву, который требуется разархивировать, а также путь к каталогу, куда необходимо осуществить разархивирование.
Соответственно, наша задача создать php файл, в котором мы создадим класс Jarchive, который в свою очередь будет включать метод extract.
Метод будет принимать два параметра и распаковывать указанный архив в заданную директорию.
Распаковывать мы будем с помощью встроенного в php класса ZipArchive.
Сам пример я взял с просторов сети, однако, вы его можете усовершенствовать. В частности, добавить проверки на существование исходного файла или каталога, куда будет производиться распаковка.
Итак, готовый пример:
class JArchive { public static function extract($file, $folder) { $zip = new ZipArchive; if ($zip->open($file) === TRUE) { $zip->extractTo($folder); $zip->close(); return true; } else { return false; } } }
Далее необходимо подключить файл с данным кодом в расширение, где происходит ошибка.
Сделать это можно с помощью команды require_once.
Например, так, как показано на рисунке ниже:
Вот, собственно говоря, и всё.
Задача решена.
Если у вас остались вопросы, а, может, вы решили выразить мне благодарность, сделать это можно в моей группе по ссылке ниже:
С уважением, Владимир Егоров