/** @var array */
protected $mModules = [];
- /** @var array */
- protected $mModuleScripts = [];
-
/** @var array */
protected $mModuleStyles = [];
}
/**
- * Get the list of script-only modules to load on this page.
- *
- * @param bool $filter
- * @param string|null $position Unused
- * @return array Array of module names
- */
- public function getModuleScripts( $filter = false, $position = null ) {
- return $this->getModules( $filter, null, 'mModuleScripts',
- ResourceLoaderModule::TYPE_SCRIPTS
- );
- }
-
- /**
- * Load the scripts of one or more ResourceLoader modules, on this page.
- *
- * This method exists purely to provide the legacy behaviour of loading
- * a module's scripts in the global scope, and without dependency resolution.
- * See <https://phabricator.wikimedia.org/T188689>.
- *
- * @deprecated since 1.31 Use addModules() instead.
- * @param string|array $modules Module name (string) or array of module names
+ * @deprecated since 1.33 Use getModules() instead.
+ * @return array
*/
- public function addModuleScripts( $modules ) {
- $this->mModuleScripts = array_merge( $this->mModuleScripts, (array)$modules );
+ public function getModuleScripts() {
+ wfDeprecated( __METHOD__, '1.33' );
+ return [];
}
/**
* good tags like \<i\> will be dropped entirely.
*
* @param string|Message $name
+ * @param-taint $name tainted
+ * Phan-taint-check gets very confused by $name being either a string or a Message
*/
public function setPageTitle( $name ) {
if ( $name instanceof Message ) {
# change "<i>foo&bar</i>" to "foo&bar"
$this->setHTMLTitle(
- $this->msg( 'pagetitle' )->rawParams( Sanitizer::stripAllTags( $nameWithTags ) )
+ $this->msg( 'pagetitle' )->plaintextParams( Sanitizer::stripAllTags( $nameWithTags ) )
->inContentLanguage()
);
}
}
}
+ /**
+ * Return effective list of advertised feed types
+ * @see addFeedLink()
+ *
+ * @return array Array of feed type names ( 'rss', 'atom' )
+ */
+ protected function getAdvertisedFeedTypes() {
+ if ( $this->getConfig()->get( 'Feed' ) ) {
+ return $this->getConfig()->get( 'AdvertisedFeedTypes' );
+ } else {
+ return [];
+ }
+ }
+
/**
* Add default feeds to the page header
* This is mainly kept for backward compatibility, see OutputPage::addFeedLink()
public function setFeedAppendQuery( $val ) {
$this->mFeedLinks = [];
- foreach ( $this->getConfig()->get( 'AdvertisedFeedTypes' ) as $type ) {
+ foreach ( $this->getAdvertisedFeedTypes() as $type ) {
$query = "feed=$type";
if ( is_string( $val ) ) {
$query .= '&' . $val;
* @param string $href URL
*/
public function addFeedLink( $format, $href ) {
- if ( in_array( $format, $this->getConfig()->get( 'AdvertisedFeedTypes' ) ) ) {
+ if ( in_array( $format, $this->getAdvertisedFeedTypes() ) ) {
$this->mFeedLinks[$format] = $href;
}
}
}
if ( !$this->mParserOptions ) {
- if ( !$this->getContext()->getUser()->isSafeToLoad() ) {
+ if ( !$this->getUser()->isSafeToLoad() ) {
// $wgUser isn't unstubbable yet, so don't try to get a
// ParserOptions for it. And don't cache this ParserOptions
// either.
$this->mNoGallery = $parserOutput->getNoGallery();
$this->mHeadItems = array_merge( $this->mHeadItems, $parserOutput->getHeadItems() );
$this->addModules( $parserOutput->getModules() );
- $this->addModuleScripts( $parserOutput->getModuleScripts() );
$this->addModuleStyles( $parserOutput->getModuleStyles() );
$this->addJsConfigVars( $parserOutput->getJsConfigVars() );
$this->mPreventClickjacking = $this->mPreventClickjacking
$this->addParserOutputText( $parserOutput, $poOptions );
$this->addModules( $parserOutput->getModules() );
- $this->addModuleScripts( $parserOutput->getModuleScripts() );
$this->addModuleStyles( $parserOutput->getModuleStyles() );
$this->addJsConfigVars( $parserOutput->getJsConfigVars() );
return false;
}
+ /**
+ * Get the Origin-Trial header values. This is used to enable Chrome Origin
+ * Trials: https://github.com/GoogleChrome/OriginTrials
+ *
+ * @return array
+ */
+ private function getOriginTrials() {
+ $config = $this->getConfig();
+
+ return $config->get( 'OriginTrials' );
+ }
+
/**
* Send cache control HTTP headers
*/
$response->header( "X-Frame-Options: $frameOptions" );
}
+ $originTrials = $this->getOriginTrials();
+ foreach ( $originTrials as $originTrial ) {
+ $response->header( "Origin-Trial: $originTrial", false );
+ }
+
ContentSecurityPolicy::sendHeaders( $this );
if ( $this->mArticleBodyOnly ) {
$rlClient->setConfig( $this->getJSVars() );
$rlClient->setModules( $this->getModules( /*filter*/ true ) );
$rlClient->setModuleStyles( $moduleStyles );
- $rlClient->setModuleScripts( $this->getModuleScripts( /*filter*/ true ) );
$rlClient->setExemptStates( $exemptStates );
$this->rlClient = $rlClient;
}
# or "Breaking news" one). For this, we see if $wgOverrideSiteFeed is defined.
# If so, use it instead.
$sitename = $config->get( 'Sitename' );
- if ( $config->get( 'OverrideSiteFeed' ) ) {
- foreach ( $config->get( 'OverrideSiteFeed' ) as $type => $feedUrl ) {
+ $overrideSiteFeed = $config->get( 'OverrideSiteFeed' );
+ if ( $overrideSiteFeed ) {
+ foreach ( $overrideSiteFeed as $type => $feedUrl ) {
// Note, this->feedLink escapes the url.
$feedLinks[] = $this->feedLink(
$type,
}
} elseif ( !$this->getTitle()->isSpecial( 'Recentchanges' ) ) {
$rctitle = SpecialPage::getTitleFor( 'Recentchanges' );
- foreach ( $config->get( 'AdvertisedFeedTypes' ) as $format ) {
+ foreach ( $this->getAdvertisedFeedTypes() as $format ) {
$feedLinks[] = $this->feedLink(
$format,
$rctitle->getLocalURL( [ 'feed' => $format ] ),