Почитать другие заметки или статьи

Давеча производил очередную миграцию с 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.

Например, так, как показано на рисунке ниже:

Вот, собственно говоря, и всё.

Задача решена.

Если у вас остались вопросы, а, может, вы решили выразить мне благодарность, сделать это можно в моей группе по ссылке ниже:

https://vk.com/sitogon

С уважением, Владимир Егоров