diff --git a/dist-persist/wbstack/src/Settings/LocalSettings.php b/dist-persist/wbstack/src/Settings/LocalSettings.php index 2a199e60d..7d7200c59 100644 --- a/dist-persist/wbstack/src/Settings/LocalSettings.php +++ b/dist-persist/wbstack/src/Settings/LocalSettings.php @@ -330,8 +330,7 @@ wfLoadExtension( 'EntitySchema' ); wfLoadExtension( 'UniversalLanguageSelector' ); wfLoadExtension( 'cldr' ); -# TODO load again once there is a fix for localization cache reload without DBhttps://phabricator.wikimedia.org/T237148 -#wfLoadExtension( 'Gadgets' ); +wfLoadExtension( 'Gadgets' ); wfLoadExtension( 'OAuth' ); wfLoadExtension( 'JsonConfig' ); wfLoadExtension( 'Math' ); @@ -735,4 +734,110 @@ function getElasticClusterConfig( string $prefix ) { } } +if ($wwIsLocalisationRebuild) { + $extensions = []; + + $loadSkin = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/skins/" . $name . "/skin.json"); + }; + $loadExtension = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/extensions/" . $name . "/extension.json"); + }; + $loadPath = function ($path) use (&$extensions) { + array_push($extensions, $path); + }; + + $loadSkin( 'Vector' ); + $loadSkin( 'Timeless' ); + $loadSkin( 'Modern' ); + $loadSkin( 'MinervaNeue' ); + $loadExtension( 'SyntaxHighlight_GeSHi' ); + $loadExtension( 'RevisionSlider' ); + $loadExtension( 'TorBlock' ); + $loadExtension( 'Nuke' ); + $loadExtension( 'EntitySchema' ); + $loadExtension( 'UniversalLanguageSelector' ); + $loadExtension( 'cldr' ); + $loadExtension( 'Gadgets' ); + $loadExtension( 'OAuth' ); + $loadExtension( 'JsonConfig' ); + $loadExtension( 'Math' ); + $loadExtension( 'Kartographer' ); + $loadExtension( 'PageImages' ); + $loadExtension( 'TextExtracts' ); + $loadExtension( 'Scribunto' ); + $loadExtension( 'Cite' ); + $loadExtension( 'TemplateSandbox' ); + $loadExtension( 'WikiEditor' ); + $loadExtension( 'CodeEditor' ); + $loadExtension( 'CodeMirror' ); + $loadExtension( 'SecureLinkFixer' ); + $loadExtension( 'Echo' ); + $loadExtension( 'Thanks' ); + $loadExtension( 'Graph' ); + $loadExtension( 'Poem' ); + $loadExtension( 'TemplateData' ); + $loadExtension( 'AdvancedSearch' ); + $loadExtension( 'ParserFunctions' ); + $loadExtension( 'EmbedVideo' ); + $loadExtension( 'DeleteBatch' ); + $loadExtension( 'MultimediaViewer' ); + $loadExtension( 'WikiHiero' ); + $loadExtension( 'ConfirmAccount' ); + $loadExtension( 'InviteSignup' ); + $loadExtension( 'WikibaseInWikitext' ); + $loadExtension( 'WikibaseEdtf' ); + $loadExtension( 'ThatSrc' ); + $loadExtension( 'TwoColConflict' ); + $loadExtension( 'StopForumSpam' ); + $loadExtension( 'SpamBlacklist' ); + $loadExtension( 'ConfirmEdit' ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/QuestyCaptcha/extension.json" ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json" ); + $loadExtension( 'Mailgun' ); + $loadExtension( 'MobileFrontend' ); + $loadExtension( 'Score' ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-repo.json" ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-client.json" ); + $loadExtension( 'WikibaseLexeme' ); + $loadExtension( 'Auth_remoteuser' ); + $loadExtension( 'WikibaseManifest' ); + $loadExtension( 'Elastica' ); + $loadExtension( 'CirrusSearch' ); + $loadExtension( 'WikibaseCirrusSearch' ); + $loadExtension( 'WikibaseLexemeCirrusSearch' ); + + $extensionMessagesFiles = []; + $messagesDirs = []; + + foreach ($extensions as $extension) { + $settings = json_decode(file_get_contents($extension), true); + $path = implode('/', array_slice(explode('/', $extension), 0, -1)); + + $addPath = function ($file) use ($path) { + return $path . '/' . $file; + }; + + if (array_key_exists('ExtensionMessagesFiles', $settings)) { + foreach ($settings['ExtensionMessagesFiles'] as $key => $file) { + $extensionMessagesFiles[$key] = $addPath($file); + } + } + + if (array_key_exists('MessagesDirs', $settings)) { + foreach ($settings['MessagesDirs'] as $extension => $dirs) { + if (is_array($dirs)) { + $messagesDirs[$extension] = $dirs; + } else { + $messagesDirs[$extension] = array($dirs); + } + $messagesDirs[$extension] = array_map($addPath, $messagesDirs[$extension]); + } + } + } + + $wgLocalisationCacheConf['ExtensionMessagesFiles'] = $extensionMessagesFiles; + $wgLocalisationCacheConf['MessagesDirs'] = $messagesDirs; +} + require_once __DIR__ . '/Hooks.php'; diff --git a/dist/wbstack/src/Settings/LocalSettings.php b/dist/wbstack/src/Settings/LocalSettings.php index 2a199e60d..7d7200c59 100644 --- a/dist/wbstack/src/Settings/LocalSettings.php +++ b/dist/wbstack/src/Settings/LocalSettings.php @@ -330,8 +330,7 @@ wfLoadExtension( 'EntitySchema' ); wfLoadExtension( 'UniversalLanguageSelector' ); wfLoadExtension( 'cldr' ); -# TODO load again once there is a fix for localization cache reload without DBhttps://phabricator.wikimedia.org/T237148 -#wfLoadExtension( 'Gadgets' ); +wfLoadExtension( 'Gadgets' ); wfLoadExtension( 'OAuth' ); wfLoadExtension( 'JsonConfig' ); wfLoadExtension( 'Math' ); @@ -735,4 +734,110 @@ function getElasticClusterConfig( string $prefix ) { } } +if ($wwIsLocalisationRebuild) { + $extensions = []; + + $loadSkin = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/skins/" . $name . "/skin.json"); + }; + $loadExtension = function ($name) use (&$extensions, $wgBaseDirectory) { + array_push($extensions, "$wgBaseDirectory/extensions/" . $name . "/extension.json"); + }; + $loadPath = function ($path) use (&$extensions) { + array_push($extensions, $path); + }; + + $loadSkin( 'Vector' ); + $loadSkin( 'Timeless' ); + $loadSkin( 'Modern' ); + $loadSkin( 'MinervaNeue' ); + $loadExtension( 'SyntaxHighlight_GeSHi' ); + $loadExtension( 'RevisionSlider' ); + $loadExtension( 'TorBlock' ); + $loadExtension( 'Nuke' ); + $loadExtension( 'EntitySchema' ); + $loadExtension( 'UniversalLanguageSelector' ); + $loadExtension( 'cldr' ); + $loadExtension( 'Gadgets' ); + $loadExtension( 'OAuth' ); + $loadExtension( 'JsonConfig' ); + $loadExtension( 'Math' ); + $loadExtension( 'Kartographer' ); + $loadExtension( 'PageImages' ); + $loadExtension( 'TextExtracts' ); + $loadExtension( 'Scribunto' ); + $loadExtension( 'Cite' ); + $loadExtension( 'TemplateSandbox' ); + $loadExtension( 'WikiEditor' ); + $loadExtension( 'CodeEditor' ); + $loadExtension( 'CodeMirror' ); + $loadExtension( 'SecureLinkFixer' ); + $loadExtension( 'Echo' ); + $loadExtension( 'Thanks' ); + $loadExtension( 'Graph' ); + $loadExtension( 'Poem' ); + $loadExtension( 'TemplateData' ); + $loadExtension( 'AdvancedSearch' ); + $loadExtension( 'ParserFunctions' ); + $loadExtension( 'EmbedVideo' ); + $loadExtension( 'DeleteBatch' ); + $loadExtension( 'MultimediaViewer' ); + $loadExtension( 'WikiHiero' ); + $loadExtension( 'ConfirmAccount' ); + $loadExtension( 'InviteSignup' ); + $loadExtension( 'WikibaseInWikitext' ); + $loadExtension( 'WikibaseEdtf' ); + $loadExtension( 'ThatSrc' ); + $loadExtension( 'TwoColConflict' ); + $loadExtension( 'StopForumSpam' ); + $loadExtension( 'SpamBlacklist' ); + $loadExtension( 'ConfirmEdit' ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/QuestyCaptcha/extension.json" ); + $loadPath( "$wgBaseDirectory/extensions/ConfirmEdit/ReCaptchaNoCaptcha/extension.json" ); + $loadExtension( 'Mailgun' ); + $loadExtension( 'MobileFrontend' ); + $loadExtension( 'Score' ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-repo.json" ); + $loadPath( "$wgBaseDirectory/extensions/Wikibase/extension-client.json" ); + $loadExtension( 'WikibaseLexeme' ); + $loadExtension( 'Auth_remoteuser' ); + $loadExtension( 'WikibaseManifest' ); + $loadExtension( 'Elastica' ); + $loadExtension( 'CirrusSearch' ); + $loadExtension( 'WikibaseCirrusSearch' ); + $loadExtension( 'WikibaseLexemeCirrusSearch' ); + + $extensionMessagesFiles = []; + $messagesDirs = []; + + foreach ($extensions as $extension) { + $settings = json_decode(file_get_contents($extension), true); + $path = implode('/', array_slice(explode('/', $extension), 0, -1)); + + $addPath = function ($file) use ($path) { + return $path . '/' . $file; + }; + + if (array_key_exists('ExtensionMessagesFiles', $settings)) { + foreach ($settings['ExtensionMessagesFiles'] as $key => $file) { + $extensionMessagesFiles[$key] = $addPath($file); + } + } + + if (array_key_exists('MessagesDirs', $settings)) { + foreach ($settings['MessagesDirs'] as $extension => $dirs) { + if (is_array($dirs)) { + $messagesDirs[$extension] = $dirs; + } else { + $messagesDirs[$extension] = array($dirs); + } + $messagesDirs[$extension] = array_map($addPath, $messagesDirs[$extension]); + } + } + } + + $wgLocalisationCacheConf['ExtensionMessagesFiles'] = $extensionMessagesFiles; + $wgLocalisationCacheConf['MessagesDirs'] = $messagesDirs; +} + require_once __DIR__ . '/Hooks.php';