X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2FOutputPage.php;h=fc7fbf7220aaab202a03ee5cc54c6dca246cb8fe;hp=a5f9c18151640b16351f76f0a8e8c0322e9e6095;hb=b33148f7d6b0b59c062c423943e841840e6620ed;hpb=587d08c5a626f8195def9f82ee83e17c85824db8 diff --git a/includes/OutputPage.php b/includes/OutputPage.php index a5f9c18151..fc7fbf7220 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -23,8 +23,9 @@ use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; use MediaWiki\Session\SessionManager; -use WrappedString\WrappedString; -use WrappedString\WrappedStringList; +use Wikimedia\RelPath; +use Wikimedia\WrappedString; +use Wikimedia\WrappedStringList; /** * This class should be covered by a general architecture document which does @@ -323,7 +324,7 @@ class OutputPage extends ContextSource { /** * Redirect to $url rather than displaying the normal page * - * @param string $url URL + * @param string $url * @param string $responsecode HTTP status code */ public function redirect( $url, $responsecode = '302' ) { @@ -366,8 +367,8 @@ class OutputPage extends ContextSource { * Add a new "" tag * To add an http-equiv meta tag, precede the name with "http:" * - * @param string $name Tag name - * @param string $val Tag value + * @param string $name Name of the meta tag + * @param string $val Value of the meta tag */ function addMeta( $name, $val ) { array_push( $this->mMetatags, [ $name, $val ] ); @@ -1783,7 +1784,9 @@ class OutputPage extends ContextSource { $popts->setTidy( $oldTidy ); - $this->addParserOutput( $parserOutput ); + $this->addParserOutput( $parserOutput, [ + 'enableSectionEditLinks' => false, + ] ); } /** @@ -1868,9 +1871,10 @@ class OutputPage extends ContextSource { * * @since 1.24 * @param ParserOutput $parserOutput + * @param array $poOptions Options to ParserOutput::getText() */ - public function addParserOutputContent( $parserOutput ) { - $this->addParserOutputText( $parserOutput ); + public function addParserOutputContent( $parserOutput, $poOptions = [] ) { + $this->addParserOutputText( $parserOutput, $poOptions ); $this->addModules( $parserOutput->getModules() ); $this->addModuleScripts( $parserOutput->getModuleScripts() ); @@ -1884,9 +1888,10 @@ class OutputPage extends ContextSource { * * @since 1.24 * @param ParserOutput $parserOutput + * @param array $poOptions Options to ParserOutput::getText() */ - public function addParserOutputText( $parserOutput ) { - $text = $parserOutput->getText(); + public function addParserOutputText( $parserOutput, $poOptions = [] ) { + $text = $parserOutput->getText( $poOptions ); // Avoid PHP 7.1 warning of passing $this by reference $outputPage = $this; Hooks::runWithoutAbort( 'OutputPageBeforeHTML', [ &$outputPage, &$text ] ); @@ -1897,16 +1902,22 @@ class OutputPage extends ContextSource { * Add everything from a ParserOutput object. * * @param ParserOutput $parserOutput + * @param array $poOptions Options to ParserOutput::getText() */ - function addParserOutput( $parserOutput ) { + function addParserOutput( $parserOutput, $poOptions = [] ) { $this->addParserOutputMetadata( $parserOutput ); // Touch section edit links only if not previously disabled if ( $parserOutput->getEditSectionTokens() ) { $parserOutput->setEditSectionTokens( $this->mEnableSectionEditLinks ); } + if ( !$this->mEnableSectionEditLinks + && !array_key_exists( 'enableSectionEditLinks', $poOptions ) + ) { + $poOptions['enableSectionEditLinks'] = false; + } - $this->addParserOutputText( $parserOutput ); + $this->addParserOutputText( $parserOutput, $poOptions ); } /** @@ -1957,7 +1968,9 @@ class OutputPage extends ContextSource { $popts->setTargetLanguage( $oldLang ); } - return $parserOutput->getText(); + return $parserOutput->getText( [ + 'enableSectionEditLinks' => false, + ] ); } /** @@ -3231,6 +3244,8 @@ class OutputPage extends ContextSource { && ( $relevantTitle->exists() || $relevantTitle->quickUserCan( 'create', $user ) ); foreach ( $title->getRestrictionTypes() as $type ) { + // Following keys are set in $vars: + // wgRestrictionCreate, wgRestrictionEdit, wgRestrictionMove, wgRestrictionUpload $vars['wgRestriction' . ucfirst( $type )] = $title->getRestrictions( $type ); } @@ -3319,10 +3334,14 @@ class OutputPage extends ContextSource { ] ); if ( $config->get( 'ReferrerPolicy' ) !== false ) { - $tags['meta-referrer'] = Html::element( 'meta', [ - 'name' => 'referrer', - 'content' => $config->get( 'ReferrerPolicy' ) - ] ); + // Per https://w3c.github.io/webappsec-referrer-policy/#unknown-policy-values + // fallbacks should come before the primary value so we need to reverse the array. + foreach ( array_reverse( (array)$config->get( 'ReferrerPolicy' ) ) as $i => $policy ) { + $tags["meta-referrer-$i"] = Html::element( 'meta', [ + 'name' => 'referrer', + 'content' => $policy, + ] ); + } } $p = "{$this->mIndexPolicy},{$this->mFollowPolicy}"; @@ -3800,7 +3819,7 @@ class OutputPage extends ContextSource { $remotePathPrefix = $remotePath = $uploadPath; } - $path = RelPath\getRelativePath( $path, $remotePath ); + $path = RelPath::getRelativePath( $path, $remotePath ); return self::transformFilePath( $remotePathPrefix, $localDir, $path ); } @@ -3957,6 +3976,7 @@ class OutputPage extends ContextSource { * Enables/disables section edit links, doesn't override __NOEDITSECTION__ * @param bool $flag * @since 1.23 + * @deprecated since 1.31, use $poOptions to addParserOutput() instead. */ public function enableSectionEditLinks( $flag = true ) { $this->mEnableSectionEditLinks = $flag; @@ -3965,6 +3985,7 @@ class OutputPage extends ContextSource { /** * @return bool * @since 1.23 + * @deprecated since 1.31, use $poOptions to addParserOutput() instead. */ public function sectionEditLinksEnabled() { return $this->mEnableSectionEditLinks;