Перейти к основному содержанию

phpBB — проверка версии расширения

phpBB

Данная инструкция будет полезна начинающим разработчикам расширений для популярного форума phpBB. Если вы написали своё расширение поддерживаете его, обновляете, то было бы неплохо дать владельцам форумов, использующих ваше расширение, возможность без труда обновиться до последней стабильной версии.

Механизм проверки новой версии расширения в форуме phpBB имеется, сама проверка срабатывает в момент входа на страницу расширения в админке, или при нажатии на ссылку "Перепроверить все версии". Есть также механизм отправки уведомлений администраторам форумов о новых версиях.

Расширения, зарегистрированные в phpBB’s Customisation Database, автоматически получают этот функционал. Но мне, к примеру, там регистрироваться лень, а проверку последней версии надо бы сделать.

Проверка версии расширения

Данная инструкция актуальна для версии phpBB 3.3.

composer.json

В файл composer.json добавляем блок version-check, в котором указываем путь на свой сайт (или не свой) к JSON файлу с информацией о последних версиях расширения:

"extra": {
    "version-check": {
        "host": "my.site.com",
        "directory": "/versions",
        "filename": "acme_version_file.json",
        "ssl": false
    }
}
  • host — домен вашего сайта
  • directory — путь, директория или несколько директорий. Обратите внимание, первый символ — слеш, в конце нет слеша.
  • filename — имя JSON файла, может быть с любым расширением или вообще без него
  • ssl — тип протокола: HTTP или HTTPS

Получится URL:

http://my.site.com/versions/acme_version_file.json

По этому пути вы должны будете разместить JSON файл определённого формата, в котором укажете информацию о последних версиях.

Пример composer.json

  • {
    	"name": "ovelissimo/yametrika",
    	"type": "phpbb-extension",
    	"description": "That extension insert Yandex Metrica code in every page of your forum. For phpBB 3.2-3.3. You can manage it at ACP > GENERAL > Board configuration > Board settings > Yandex Metrika",
    	"homepage": "https://internet-lab.ru",
    	"version": "1.0.4",
    	"time": "2022-11-07",
    	"keywords": ["phpbb", "extension", "metrika", "yandex", "yandex metrika"],
    	"license": "GPL-2.0",
    	"authors": [
    		{
    			"name": "Ovelissimo",
    			"homepage": "https://internet-lab.ru",
    			"email": "info@internet-lab.ru",
    			"role": "Admin"
    		}
    	],
    	"require": {
    		"php": ">=5.3.3"
    	},
    
    	"extra": {
    		"display-name": "Yandex Metrika",
    		"soft-require": {
    			"phpbb/phpbb": ">=3.2.0"
    		},
    		"version-check": {
                "host": "internet-lab.ru",
                "directory": "/phpbb",
                "filename": "yametrika",
                "ssl": true
            }
    	}
    }

В данном примере JSON файл размещён по адресу:

https://internet-lab.ru/phpbb/yametrika

Примечание

У меня у JSON файла с версиями расширения мог меняться URL, нужно было сделать возможность в любой момент изменить путь таким образом, чтобы для пользователей это осталось прозрачным.

  • Я пытался на данный URL повесить редирект на динамическую страницу — редиректы недопустимы, файл должен существовать.
  • Я пытался передать в URL параметры — параметры тоже недопустимы, ошибка.
  • Я пытался проксировать URL, но на целевом ресурсе происходит ещё один редирект, что делает проксирование бесполезным.

Пришлось создать PHP файл, который внутри с помощью readfile считывает удалённый файл по URL с параметрами и редиректами и записывает его в буфер вывода.

JSON

По указанному нами URL нужно выложить JSON файл с описанием последних версий расширения. Пример из документации:

{
    "stable": {
        "1.0": {
            "current": "1.0.0",
            "announcement": "http://my.site.com/version_1.0.0",
            "download": "http://my.site.com/version_1.0.0.zip",
            "eol": null,
            "security": false
        }
    },
    "unstable": {
        "1.0": {
            "current": "1.0.1",
            "announcement": "http://my.site.com/version_1.0.1",
            "eol": null,
            "security": false
        },
        "1.1": {
            "current": "1.1.0-b4",
            "announcement": "http://my.site.com/version_1.1.0",
            "eol": null,
            "security": false
        }
    }
}
  • stable/unstable — это как-бы бранчи, один из них должен существовать обязательно. Могут быть оба. В нестабильной ветке можно указывать разрабатываемую версию.
  • X.Y — мажорная версия расширения, на ваш вкус и цвет.
  • current — текущая минорная версия расширения в данном бранче.
  • announcement — ссылка на страницу с информацией о выпуске. Любой URL.
  • download — ссылка на файл с версией расширения.

Пример JSON

  • {
        "stable": {
            "1.0": {
                "current": "1.0.4",
                "announcement": "https:\/\/internet-lab.ru\/phpbb_yandex_metrika_1_0_4",
                "download": "https:\/\/internet-lab.ru\/libraries\/phpbb\/ext.php?name=ovelissimo_yametrika_1.0.4.zip",
                "eol": null,
                "security": false
            }
        }
    }

Теги

 

Похожие материалы

phpBB 3.3.8 — Breadcrumb Menu ошибка PHP: Trying to access array offset on value of type bool

Для форума phpBB есть хорошее расширение под названием Breadcrumb Menu. Оно добавляет простую вещь — выпадающие списки форумов при наведении на хлебные крошки.

Теги

Делюсь переводом расширения Contact Admin для phpBB 3.3.8

Интегрируем форму обратной связи на форум, используем расширение Contact Admin 1.3.7. Локализации в комплекте не было, пришлось написать самому.

Теги