Extension:BetaFeatures/ru

Расширение BetaFeatures позволяет другим расширениям MediaWiki регистрировать бета-функции в списке пользовательских настроек на вики. Расширение использует существующую архитектуру пользовательских настроек и несколько служебных страниц для выполнения своей работы.

Использование новых приёмов в вашем расширении
Использование этого расширения для поддержки вашей бета-функции просто. Зарегистрируйте привязку типа "GetBetaFeaturePreferences" в основном файле вашего расширения — синтаксис практически идентичен таковому у привязки GetPreferences, но с небольшими изменениями для поддержки необходимого нам в этом случае типа настройки.

Затем вы можете использовать функцию, предоставленную BetaFeatures для удобства, чтобы проверить, включена ли эта бета-возможность.

Вы также можете использовать обычные проверки на настройки, но не проверяйте на истинные и ложные значения, а используйте значения из класса HTMLFeatureField.

Поскольку класс BetaFeatures должен присутствовать везде, вы можете использовать эту функцию для удобства в любой привязке, служебной странице или чём-либо ещё. Но будьте готовы к возможным проблем с производительностью и кэшированием, которые вы можете создать такими изменениями.

Расширенное использование
Хотите увидеть кое-что по-настоящему крутое?

Группы автоматического включения
В этом примере мы зарегистрируем функцию с "автоматическим включением": если участник её включит, и выйдут новые возможности, принадлежащие какой-либо конкретной группе, участник автоматически будет включён в пользователи этих возможностей.

Dependency management
Next up, we can actually define dependency management per-feature. To do this we first register the name of a hook that we want to use for this with the hook "GetBetaFeatureDependencyHooks", then we register a hook of that type that checks some dependency, and returns true if it's met or false if not.

You can abuse use this feature to do per-wiki disabling of features, if they're marked as dependent. But that sounds really hacky. You probably shouldn't. I can hear you thinking about it right now, just stop it.

Database stuff
There's a database table defined, and used, by BetaFeatures. But you might get confused by it if you try to use it locally.

We use the job queue to run updates for this table, when the cache expires (30 minutes TTL). If your wiki is configured to run jobs on each request, this will make about one request every 30 minutes reeeeeeally slow, but the rest will be relatively fast. If you configure your wiki to run jobs via cron, things will work much better.

См. также

 * Бета-функции
 * План развития
 * План развёртывания