mwstake / mediawiki-component-dynamicconfig
动态配置管理器
1.0.8
2023-08-11 08:53 UTC
Requires
- composer/installers: ~1.0|~2
- mwstake/mediawiki-componentloader: ~1
Requires (Dev)
- jakub-onderka/php-console-highlighter: 0.4.0
- jakub-onderka/php-parallel-lint: 1.0.0
- mediawiki/mediawiki-codesniffer: 29.0.0
- mediawiki/minus-x: 1.0.0
- phpunit/phpunit: ^8.5
README
此组件旨在将配置变量存储在数据库中,并从那里加载(和应用)它们。它主要用于替换BlueSpiceFoundation中的config
目录和在实际静态PHP文件中存储的配置。它可以用于存储任意数量的配置,基本上是所有进入LocalSettings.php
的内容,除了核心配置,如数据库连接等。
注册配置
- 实现一个实现了
MWStake\MediaWiki\Component\DynamicConfig\IDynamicConfig
接口的类。 - 使用
MWStakeDynamicConfigRegisterConfigs
钩子注册您的配置。
如果您的配置设置/读取MW全局变量($GLOBALS
),则还应实现MWStake\MediaWiki\Component\DynamicConfig\GlobalsAwareDynamicConfig
接口。
使用配置
要存储配置到数据库,使用
$manager = \MediaWiki\MediaWikiServices::getInstance()->getService( 'MWStakeDynamicConfigManager' ); $manager->storeConfig( $config, $dataToBePassedToTheConfig );
这将调用IDynamicConfig
对象的serialize
方法,并使用$dataToBePassedToTheConfig
作为参数。此方法必须返回一个字符串以存储到数据库中。
如果您的配置的shouldAutoApply
方法返回true
,则配置将在SetupAfterCache
钩子上自动应用。否则,您可以通过调用手动应用它:
$manager = \MediaWiki\MediaWikiServices::getInstance()->getService( 'MWStakeDynamicConfigManager' ); $manager->applyConfig( $config );
在应用时,将调用IDynamicConfig
对象的apply
方法,并将数据库中的数据作为参数。配置本身负责解析数据并应用它。
备份
每次配置值更改时,都会创建一个备份。系统将创建最多5个备份,之后将旋转,删除最旧的备份。
恢复备份
从代码
$manager = \MediaWiki\MediaWikiServices::getInstance()->getService( 'MWStakeDynamicConfigManager' ); $manager->restoreBackup( $config, $dataTime ); // DateTime object matching the timestamp of available backup
从命令行界面
# List available config types php vendor/mwstake/mediawiki-component-dynamicconfig/maintenance/restoreFromBackup.php --list-types # List avilable backups for a type php vendor/mwstake/mediawiki-component-dynamicconfig/maintenance/restoreFromBackup.php --list-backups --config={key} # Restore a backup (timestamp in YmdHis format) php vendor/mwstake/mediawiki-component-dynamicconfig/maintenance/restoreFromBackup.php --backup-timestamp=20230523104627 --config={key}
注意:这将假设组件安装在与根vendor
目录相同的目录中。如果不是,请指定到Maintenance.php
的路径,作为脚本的第一个参数。
# List available config types
php vendor/mwstake/mediawiki-component-dynamicconfig/maintenance/restoreFromBackup.php some/path/Maintenance.php --list-types