*/
private $mTimestamp;
- /**
- * The edit section flag is in ParserOptions for historical reasons, but
- * doesn't actually affect the parser output since Feb 2015.
- * @var bool
- */
- private $mEditSection = true;
-
/**
* Stored user object
* @var User
* @return bool
*/
public function getEditSection() {
- return $this->mEditSection;
+ wfDeprecated( __METHOD__, '1.31' );
+ return true;
}
/**
* @return bool Old value
*/
public function setEditSection( $x ) {
- return wfSetVar( $this->mEditSection, $x );
+ wfDeprecated( __METHOD__, '1.31' );
+ return true;
}
/**
* in 1.16.
* Used to get the old parser cache entries when available.
* @deprecated since 1.30. You probably want self::allCacheVaryingOptions() instead.
- * @return array
+ * @return string[]
*/
public static function legacyOptions() {
wfDeprecated( __METHOD__, '1.30' );
} elseif ( $value instanceof Language ) {
return $value->getCode();
} elseif ( is_array( $value ) ) {
- return '[' . join( ',', array_map( [ $this, 'optionToString' ], $value ) ) . ']';
+ return '[' . implode( ',', array_map( [ $this, 'optionToString' ], $value ) ) . ']';
} else {
return (string)$value;
}
* the same cached data safely.
*
* @since 1.17
- * @param array $forOptions
+ * @param string[] $forOptions
* @param Title $title Used to get the content language of the page (since r97636)
* @return string Page rendering hash
*/
public function optionsHash( $forOptions, $title = null ) {
global $wgRenderHashAppend;
+ $inCacheKey = self::allCacheVaryingOptions();
+
+ // Resolve any lazy options
+ foreach ( array_intersect( $forOptions, $inCacheKey, array_keys( self::$lazyOptions ) ) as $k ) {
+ if ( $this->options[$k] === null ) {
+ $this->options[$k] = call_user_func( self::$lazyOptions[$k], $this, $k );
+ }
+ }
+
$options = $this->options;
$defaults = self::getCanonicalOverrides() + self::getDefaults();
- $inCacheKey = self::$inCacheKey;
-
- // Historical hack: 'editsection' hasn't been a true parser option since
- // Feb 2015 (instead the parser outputs a constant placeholder and post-parse
- // processing handles the option). But Wikibase forces it in $forOptions
- // and expects the cache key to still vary on it for T85252.
- // @deprecated since 1.30, Wikibase should use addExtraKey() or something instead.
- if ( in_array( 'editsection', $forOptions, true ) ) {
- $options['editsection'] = $this->mEditSection;
- $defaults['editsection'] = true;
- $inCacheKey['editsection'] = true;
- ksort( $inCacheKey );
- }
// We only include used options with non-canonical values in the key
// so adding a new option doesn't invalidate the entire parser cache.
// requires manual invalidation of existing cache entries, as mentioned
// in the docs on the relevant methods and hooks.
$values = [];
- foreach ( $inCacheKey as $option => $include ) {
- if ( $include && in_array( $option, $forOptions, true ) ) {
- $v = $this->optionToString( $options[$option] );
- $d = $this->optionToString( $defaults[$option] );
- if ( $v !== $d ) {
- $values[] = "$option=$v";
- }
+ foreach ( array_intersect( $inCacheKey, $forOptions ) as $option ) {
+ $v = $this->optionToString( $options[$option] );
+ $d = $this->optionToString( $defaults[$option] );
+ if ( $v !== $d ) {
+ $values[] = "$option=$v";
}
}
- $confstr = $values ? join( '!', $values ) : 'canonical';
+ $confstr = $values ? implode( '!', $values ) : 'canonical';
// add in language specific options, if any
// @todo FIXME: This is just a way of retrieving the url/user preferred variant