mwstake/mediawiki-component-dynamicconfig

1.0.8 2023-08-11 08:53 UTC

This package is auto-updated.

Last update: 2024-09-22 12:00:01 UTC


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