CheckBlocksSecondaryAuthenticationProvider: Avoid user language during auto-creation
[lhc/web/wiklou.git] / includes / EditPage.php
index bd58c81..3fc12ce 100644 (file)
@@ -519,6 +519,7 @@ class EditPage {
         * @deprecated since 1.30
         */
        public function isOouiEnabled() {
+               wfDeprecated( __METHOD__, '1.30' );
                return true;
        }
 
@@ -821,8 +822,15 @@ class EditPage {
         * @return bool
         */
        protected function previewOnOpen() {
-               global $wgPreviewOnOpenNamespaces;
+               $config = $this->context->getConfig();
+               $previewOnOpenNamespaces = $config->get( 'PreviewOnOpenNamespaces' );
                $request = $this->context->getRequest();
+               if ( $config->get( 'RawHtml' ) ) {
+                       // If raw HTML is enabled, disable preview on open
+                       // since it has to be posted with a token for
+                       // security reasons
+                       return false;
+               }
                if ( $request->getVal( 'preview' ) == 'yes' ) {
                        // Explicit override from request
                        return true;
@@ -838,8 +846,8 @@ class EditPage {
                        // Standard preference behavior
                        return true;
                } elseif ( !$this->mTitle->exists()
-                       && isset( $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] )
-                       && $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()]
+                       && isset( $previewOnOpenNamespaces[$this->mTitle->getNamespace()] )
+                       && $previewOnOpenNamespaces[$this->mTitle->getNamespace()]
                ) {
                        // Categories are special
                        return true;
@@ -1684,7 +1692,7 @@ class EditPage {
 
                // Run new style post-section-merge edit filter
                if ( !Hooks::run( 'EditFilterMergedContent',
-                               [ $this->mArticle->getContext(), $content, $status, $this->summary,
+                               [ $this->context, $content, $status, $this->summary,
                                $user, $this->minoredit ] )
                ) {
                        # Error messages etc. could be handled within the hook...
@@ -1769,9 +1777,6 @@ class EditPage {
         * time.
         */
        public function internalAttemptSave( &$result, $bot = false ) {
-               global $wgMaxArticleSize;
-               global $wgContentHandlerUseDB;
-
                $status = Status::newGood();
                $user = $this->context->getUser();
 
@@ -1883,7 +1888,9 @@ class EditPage {
                }
 
                $this->contentLength = strlen( $this->textbox1 );
-               if ( $this->contentLength > $wgMaxArticleSize * 1024 ) {
+               $config = $this->context->getConfig();
+               $maxArticleSize = $config->get( 'MaxArticleSize' );
+               if ( $this->contentLength > $maxArticleSize * 1024 ) {
                        // Error will be displayed by showEditForm()
                        $this->tooBig = true;
                        $status->setResult( false, self::AS_CONTENT_TOO_BIG );
@@ -1903,7 +1910,7 @@ class EditPage {
 
                $changingContentModel = false;
                if ( $this->contentModel !== $this->mTitle->getContentModel() ) {
-                       if ( !$wgContentHandlerUseDB ) {
+                       if ( !$config->get( 'ContentHandlerUseDB' ) ) {
                                $status->fatal( 'editpage-cannot-use-custom-model' );
                                $status->value = self::AS_CANNOT_USE_CUSTOM_MODEL;
                                return $status;
@@ -2182,7 +2189,7 @@ class EditPage {
 
                // Check for length errors again now that the section is merged in
                $this->contentLength = strlen( $this->toEditText( $content ) );
-               if ( $this->contentLength > $wgMaxArticleSize * 1024 ) {
+               if ( $this->contentLength > $maxArticleSize * 1024 ) {
                        $this->tooBig = true;
                        $status->setResult( false, self::AS_MAX_ARTICLE_SIZE_EXCEEDED );
                        return $status;
@@ -2383,8 +2390,6 @@ class EditPage {
        }
 
        public function setHeaders() {
-               global $wgAjaxEditStash;
-
                $out = $this->context->getOutput();
 
                $out->addModules( 'mediawiki.action.edit' );
@@ -2436,7 +2441,7 @@ class EditPage {
                # Keep Resources.php/mediawiki.action.edit.preview in sync with the possible keys
                $out->addJsConfigVars( [
                        'wgEditMessage' => $msg,
-                       'wgAjaxEditStash' => $wgAjaxEditStash,
+                       'wgAjaxEditStash' => $this->context->getConfig()->get( 'AjaxEditStash' ),
                ] );
        }
 
@@ -2938,8 +2943,6 @@ class EditPage {
        }
 
        protected function showHeader() {
-               global $wgAllowUserCss, $wgAllowUserJs;
-
                $out = $this->context->getOutput();
                $user = $this->context->getUser();
                if ( $this->isConflict ) {
@@ -3064,14 +3067,15 @@ class EditPage {
                                                $isCssSubpage ? 'usercssispublic' : 'userjsispublic'
                                        );
                                        if ( $this->formtype !== 'preview' ) {
-                                               if ( $isCssSubpage && $wgAllowUserCss ) {
+                                               $config = $this->context->getConfig();
+                                               if ( $isCssSubpage && $config->get( 'AllowUserCss' ) ) {
                                                        $out->wrapWikiMsg(
                                                                "<div id='mw-usercssyoucanpreview'>\n$1\n</div>",
                                                                [ 'usercssyoucanpreview' ]
                                                        );
                                                }
 
-                                               if ( $this->mTitle->isJsSubpage() && $wgAllowUserJs ) {
+                                               if ( $this->mTitle->isJsSubpage() && $config->get( 'AllowUserJs' ) ) {
                                                        $out->wrapWikiMsg(
                                                                "<div id='mw-userjsyoucanpreview'>\n$1\n</div>",
                                                                [ 'userjsyoucanpreview' ]
@@ -3481,7 +3485,7 @@ class EditPage {
                                $newContent = $oldContent->getContentHandler()->makeEmptyContent();
                        }
 
-                       $de = $oldContent->getContentHandler()->createDifferenceEngine( $this->mArticle->getContext() );
+                       $de = $oldContent->getContentHandler()->createDifferenceEngine( $this->context );
                        $de->setContent( $oldContent, $newContent );
 
                        $difftext = $de->getDiff( $oldtitle, $newtitle );
@@ -3689,7 +3693,7 @@ class EditPage {
                        $content2 = $this->toEditContent( $this->textbox2 );
 
                        $handler = ContentHandler::getForModelID( $this->contentModel );
-                       $de = $handler->createDifferenceEngine( $this->mArticle->getContext() );
+                       $de = $handler->createDifferenceEngine( $this->context );
                        $de->setContent( $content2, $content1 );
                        $de->showDiff(
                                $this->context->msg( 'yourtext' )->parse(),
@@ -3826,12 +3830,10 @@ class EditPage {
         * @return string
         */
        public function getPreviewText() {
-               global $wgRawHtml;
-               global $wgAllowUserCss, $wgAllowUserJs;
-
                $out = $this->context->getOutput();
+               $config = $this->context->getConfig();
 
-               if ( $wgRawHtml && !$this->mTokenOk ) {
+               if ( $config->get( 'RawHtml' ) && !$this->mTokenOk ) {
                        // Could be an offsite preview attempt. This is very unsafe if
                        // HTML is enabled, as it could be an attack.
                        $parsedNote = '';
@@ -3894,12 +3896,12 @@ class EditPage {
 
                                if ( $content->getModel() == CONTENT_MODEL_CSS ) {
                                        $format = 'css';
-                                       if ( $level === 'user' && !$wgAllowUserCss ) {
+                                       if ( $level === 'user' && !$config->get( 'AllowUserCss' ) ) {
                                                $format = false;
                                        }
                                } elseif ( $content->getModel() == CONTENT_MODEL_JAVASCRIPT ) {
                                        $format = 'js';
-                                       if ( $level === 'user' && !$wgAllowUserJs ) {
+                                       if ( $level === 'user' && !$config->get( 'AllowUserJs' ) ) {
                                                $format = false;
                                        }
                                } else {
@@ -3974,7 +3976,7 @@ class EditPage {
         * @return ParserOptions
         */
        protected function getPreviewParserOptions() {
-               $parserOptions = $this->page->makeParserOptions( $this->mArticle->getContext() );
+               $parserOptions = $this->page->makeParserOptions( $this->context );
                $parserOptions->setIsPreview( true );
                $parserOptions->setIsSectionPreview( !is_null( $this->section ) && $this->section !== '' );
                $parserOptions->enableLimitReport();
@@ -4226,6 +4228,7 @@ class EditPage {
         * @return array
         */
        public function getCheckboxes( &$tabindex, $checked ) {
+               wfDeprecated( __METHOD__, '1.30' );
                $checkboxes = [];
                $checkboxesDef = $this->getCheckboxesDefinition( $checked );
 
@@ -4281,6 +4284,7 @@ class EditPage {
         * @return array Associative array of string keys to OOUI\FieldLayout instances
         */
        public function getCheckboxesOOUI( &$tabindex, $checked ) {
+               wfDeprecated( __METHOD__, '1.30' );
                return $this->getCheckboxesWidget( $tabindex, $checked );
        }
 
@@ -4358,6 +4362,7 @@ class EditPage {
        /**
         * Get the message key of the label for the button to save the page
         *
+        * @since 1.30
         * @return string
         */
        protected function getSubmitButtonLabel() {
@@ -4559,20 +4564,19 @@ class EditPage {
         * @since 1.29
         */
        protected function addLongPageWarningHeader() {
-               global $wgMaxArticleSize;
-
                if ( $this->contentLength === false ) {
                        $this->contentLength = strlen( $this->textbox1 );
                }
 
                $out = $this->context->getOutput();
                $lang = $this->context->getLanguage();
-               if ( $this->tooBig || $this->contentLength > $wgMaxArticleSize * 1024 ) {
+               $maxArticleSize = $this->context->getConfig()->get( 'MaxArticleSize' );
+               if ( $this->tooBig || $this->contentLength > $maxArticleSize * 1024 ) {
                        $out->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
                                [
                                        'longpageerror',
                                        $lang->formatNum( round( $this->contentLength / 1024, 3 ) ),
-                                       $lang->formatNum( $wgMaxArticleSize )
+                                       $lang->formatNum( $maxArticleSize )
                                ]
                        );
                } else {
@@ -4660,7 +4664,6 @@ class EditPage {
                        ];
 
                // The following classes can be used here:
-               // * mw-editfont-default
                // * mw-editfont-monospace
                // * mw-editfont-sans-serif
                // * mw-editfont-serif