Данная инструкция будет полезна начинающим разработчикам расширений для популярного форума 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
-
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
-
https://internet-lab.ru/phpbb/yametrika
{ "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 } } }