*
* masterTemplateOverrides An override array for all master servers.
*
+ * readOnlyBySection A map of section name to read-only message. Missing or false for read/write.
+ *
* @ingroup Database
*/
class LBFactory_Multi extends LBFactory {
// Optional settings
var $groupLoadsBySection = array(), $groupLoadsByDB = array(), $hostsByName = array();
var $externalLoads = array(), $externalTemplateOverrides, $templateOverridesByServer;
- var $templateOverridesByCluster, $masterTemplateOverrides;
+ var $templateOverridesByCluster, $masterTemplateOverrides, $readOnlyBySection = array();
// Other stuff
var $conf, $mainLBs = array(), $extLBs = array();
var $lastWiki, $lastSection;
$required = array( 'sectionsByDB', 'sectionLoads', 'serverTemplate' );
$optional = array( 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
'externalLoads', 'externalTemplateOverrides', 'templateOverridesByServer',
- 'templateOverridesByCluster', 'masterTemplateOverrides' );
+ 'templateOverridesByCluster', 'masterTemplateOverrides',
+ 'readOnlyBySection' );
foreach ( $required as $key ) {
if ( !isset( $conf[$key] ) ) {
$this->$key = $conf[$key];
}
}
+
+ // Check for read-only mode
+ $section = $this->getSectionForWiki();
+ if ( !empty( $this->readOnlyBySection[$section] ) ) {
+ global $wgReadOnly;
+ $wgReadOnly = $this->readOnlyBySection[$section];
+ }
}
function getSectionForWiki( $wiki = false ) {