MediaWiki REL1_32
ConfigRepository.php
Go to the documentation of this file.
1<?php
24
26use Wikimedia\Assert\Assert;
27
36
38 private $configItems = [
39 'private' => [],
40 'public' => [],
41 ];
42
47 $this->configFactory = $configFactory;
48 }
49
57 public function has( $name, $alsoPrivate = false ) {
58 return isset( $this->configItems['public'][$name] ) ||
59 ( $alsoPrivate && isset( $this->configItems['private'][$name] ) );
60 }
61
70 public function get( $name ) {
71 if ( !$this->has( $name, true ) ) {
72 throw new \ConfigException( 'The configuration option ' . $name . ' does not exist.' );
73 }
74 if ( isset( $this->configItems['public'][$name] ) ) {
75 return $this->configItems['public'][$name];
76 }
77 return $this->configItems['private'][$name];
78 }
79
90 public function getAll() {
91 return array_merge( $this->configItems['private'], $this->configItems['public'] );
92 }
93
99 public function getPublic() {
100 return $this->configItems['public'];
101 }
102
111 public function getValueOf( $name ) {
112 $config = $this->get( $name );
113 if ( !isset( $config['configregistry'] ) ) {
114 return $config['value'];
115 }
116
117 return $this->configFactory->makeConfig( $config['configregistry'] )->get( $name );
118 }
119
128 public function getDescriptionOf( $name ) {
129 $config = $this->get( $name );
130 if ( isset( $config['descriptionmsg'] ) ) {
131 return wfMessage( $config['descriptionmsg'] )->escaped();
132 }
133 if ( isset( $config['description'] ) ) {
134 return htmlspecialchars( $config['description'] );
135 }
136 return '';
137 }
138
154 public function add( $name, array $config ) {
155 if ( $this->has( $name ) ) {
156 throw new \ConfigException( 'A configuration with the name ' . $name .
157 'does already exist. It is provided by: ' .
158 $this->get( $name )['providedby'] );
159 }
160 if ( isset( $config['public'] ) && $config['public'] ) {
161 $this->configItems['public'][$name] = $config;
162 } else {
163 $this->configItems['private'][$name] = $config;
164 }
165 }
166
174 public function isEmpty( $includePrivate = false ) {
175 if ( $includePrivate ) {
176 return empty( $this->configItems['private'] ) &&
177 empty( $this->configItems[ 'public'] );
178 }
179 return empty( $this->configItems['public'] );
180 }
181
191 public function salvage( SalvageableService $other ) {
192 Assert::parameterType( self::class, $other, '$other' );
193
194 foreach ( $other->configItems['public'] as $name => $otherConfig ) {
195 if ( isset( $this->configItems['public'][$name] ) ) {
196 continue;
197 }
198
199 $this->add( $name, $otherConfig );
200 }
201 foreach ( $other->configItems['private'] as $name => $otherConfig ) {
202 if ( isset( $this->configItems['private'][$name] ) ) {
203 continue;
204 }
205
206 $this->add( $name, $otherConfig );
207 }
208
209 // disable $other
210 $other->configItems = [];
211 }
212}
Factory class to create Config objects.
Object which holds currently registered configuration options.
add( $name, array $config)
Adds the definition of a configuration to this repository.
__construct(\ConfigFactory $configFactory)
getPublic()
Returns an array of all public configuration options saved in this ConfigRepository.
isEmpty( $includePrivate=false)
Returns true, if there're no elements in this instance, otherwise false.
getValueOf( $name)
Returns the current value of the configuration option.
has( $name, $alsoPrivate=false)
Returns true, if this repository contains a configuration with a specific name.
salvage(SalvageableService $other)
Re-uses existing Cache objects from $other.
getDescriptionOf( $name)
Returns the description of the given config option, This can be either a localized description,...
getAll()
Returns an array of all configuration items saved in this ConfigRepository.
An extension or a local will often add custom code to the function with or without a global variable For someone wanting email notification when an article is shown may add
Definition hooks.txt:56
either a unescaped string or a HtmlArmor object after in associative array form externallinks including delete and has completed for all link tables whether this was an auto creation use $formDescriptor instead default is conds Array Extra conditions for the No matching items in log is displayed if loglist is empty msgKey Array If you want a nice box with a set this to the key of the message First element is the message additional optional elements are parameters for the key that are processed with wfMessage() -> params() ->parseAsBlock() - offset Set to overwrite offset parameter in $wgRequest set to '' to unset offset - wrap String Wrap the message in html(usually something like "&lt;div ...>$1&lt;/div>"). - flags Integer display flags(NO_ACTION_LINK, NO_EXTRA_USER_LINKS) 'LogException':Called before an exception(or PHP error) is logged. This is meant for integration with external error aggregation services
Allows to change the fields on the form that will be generated $name
Definition hooks.txt:302
SalvageableService defines an interface for services that are able to salvage state from a previous i...
The wiki should then use memcached to cache various data To use multiple just add more items to the array To increase the weight of a make its entry a array("192.168.0.1:11211", 2))