Use OutputPage::addWikiTextAsInterface() instead of untidy addWikiText()
[lhc/web/wiklou.git] / includes / page / Article.php
index 6a42d58..8bc8d1e 100644 (file)
@@ -20,8 +20,9 @@
  * @file
  */
 use MediaWiki\MediaWikiServices;
-use MediaWiki\Storage\MutableRevisionRecord;
-use MediaWiki\Storage\RevisionRecord;
+use MediaWiki\Revision\MutableRevisionRecord;
+use MediaWiki\Revision\RevisionRecord;
+use MediaWiki\Revision\SlotRecord;
 
 /**
  * Class for viewing MediaWiki article and history.
@@ -524,7 +525,7 @@ class Article implements Page {
        private function applyContentOverride( Content $override ) {
                // Construct a fake revision
                $rev = new MutableRevisionRecord( $this->getTitle() );
-               $rev->setContent( 'main', $override );
+               $rev->setContent( SlotRecord::MAIN, $override );
 
                $this->mRevision = new Revision( $rev );
 
@@ -766,7 +767,9 @@ class Article implements Page {
                                                        $parserOptions,
                                                        $this->getRevIdFetched(),
                                                        $useParserCache,
-                                                       $rev
+                                                       $rev,
+                                                       // permission checking was done earlier via showDeletedRevisionHeader()
+                                                       RevisionRecord::RAW
                                                );
                                                $ok = $poolArticleView->execute();
                                                $error = $poolArticleView->getError();
@@ -789,7 +792,7 @@ class Article implements Page {
                                                        $outputPage->setRobotPolicy( 'noindex,nofollow' );
 
                                                        $errortext = $error->getWikiText( false, 'view-pool-error' );
-                                                       $outputPage->addWikiText( Html::errorBox( $errortext ) );
+                                                       $outputPage->addWikiTextAsInterface( Html::errorBox( $errortext ) );
                                                }
                                                # Connection or timeout error
                                                return;
@@ -870,7 +873,7 @@ class Article implements Page {
                // TODO: find a *good* place for the code that determines the redirect target for
                // a given revision!
                // NOTE: Use main slot content. Compare code in DerivedPageDataUpdater::revisionIsRedirect.
-               $content = $revision->getContent( 'main' );
+               $content = $revision->getContent( SlotRecord::MAIN );
                return $content ? $content->getRedirectTarget() : null;
        }
 
@@ -1458,7 +1461,7 @@ class Article implements Page {
 
                        $dir = $this->getContext()->getLanguage()->getDir();
                        $lang = $this->getContext()->getLanguage()->getHtmlCode();
-                       $outputPage->addWikiText( Xml::openElement( 'div', [
+                       $outputPage->addWikiTextAsInterface( Xml::openElement( 'div', [
                                'class' => "noarticletext mw-content-$dir",
                                'dir' => $dir,
                                'lang' => $lang,
@@ -2050,25 +2053,31 @@ class Article implements Page {
         * Perform a deletion and output success or failure messages
         * @param string $reason
         * @param bool $suppress
+        * @param bool $immediate false allows deleting over time via the job queue
+        * @throws FatalError
+        * @throws MWException
         */
-       public function doDelete( $reason, $suppress = false ) {
+       public function doDelete( $reason, $suppress = false, $immediate = false ) {
                $error = '';
                $context = $this->getContext();
                $outputPage = $context->getOutput();
                $user = $context->getUser();
-               $status = $this->mPage->doDeleteArticleReal( $reason, $suppress, 0, true, $error, $user );
+               $status = $this->mPage->doDeleteArticleReal( $reason, $suppress, 0, true, $error, $user,
+                       [], 'delete', $immediate );
 
-               if ( $status->isGood() ) {
+               if ( $status->isOK() ) {
                        $deleted = $this->getTitle()->getPrefixedText();
 
                        $outputPage->setPageTitle( wfMessage( 'actioncomplete' ) );
                        $outputPage->setRobotPolicy( 'noindex,nofollow' );
 
-                       $loglink = '[[Special:Log/delete|' . wfMessage( 'deletionlog' )->text() . ']]';
-
-                       $outputPage->addWikiMsg( 'deletedtext', wfEscapeWikiText( $deleted ), $loglink );
-
-                       Hooks::run( 'ArticleDeleteAfterSuccess', [ $this->getTitle(), $outputPage ] );
+                       if ( $status->isGood() ) {
+                               $loglink = '[[Special:Log/delete|' . wfMessage( 'deletionlog' )->text() . ']]';
+                               $outputPage->addWikiMsg( 'deletedtext', wfEscapeWikiText( $deleted ), $loglink );
+                               Hooks::run( 'ArticleDeleteAfterSuccess', [ $this->getTitle(), $outputPage ] );
+                       } else {
+                               $outputPage->addWikiMsg( 'delete-scheduled', wfEscapeWikiText( $deleted ) );
+                       }
 
                        $outputPage->returnToMain( false );
                } else {
@@ -2078,7 +2087,7 @@ class Article implements Page {
                        );
 
                        if ( $error == '' ) {
-                               $outputPage->addWikiText(
+                               $outputPage->addWikiTextAsInterface(
                                        "<div class=\"error mw-error-cannotdelete\">\n" . $status->getWikiText() . "\n</div>"
                                );
                                $deleteLogPage = new LogPage( 'delete' );
@@ -2294,10 +2303,10 @@ class Article implements Page {
         */
        public function doDeleteArticleReal(
                $reason, $suppress = false, $u1 = null, $u2 = null, &$error = '', User $user = null,
-               $tags = []
+               $tags = [], $immediate = false
        ) {
                return $this->mPage->doDeleteArticleReal(
-                       $reason, $suppress, $u1, $u2, $error, $user, $tags
+                       $reason, $suppress, $u1, $u2, $error, $user, $tags, 'delete', $immediate
                );
        }
 
@@ -2823,12 +2832,16 @@ class Article implements Page {
         * @param int|null $u1 Unused
         * @param bool|null $u2 Unused
         * @param string &$error
+        * @param bool $immediate false allows deleting over time via the job queue
         * @return bool
+        * @throws FatalError
+        * @throws MWException
         */
        public function doDeleteArticle(
-               $reason, $suppress = false, $u1 = null, $u2 = null, &$error = ''
+               $reason, $suppress = false, $u1 = null, $u2 = null, &$error = '', $immediate = false
        ) {
-               return $this->mPage->doDeleteArticle( $reason, $suppress, $u1, $u2, $error );
+               return $this->mPage->doDeleteArticle( $reason, $suppress, $u1, $u2, $error,
+                       null, $immediate );
        }
 
        /**