Merge "Clarify in emailuserfooter that by responding one reveals their email address"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 3 Dec 2016 22:56:05 +0000 (22:56 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 3 Dec 2016 22:56:05 +0000 (22:56 +0000)
RELEASE-NOTES-1.29
docs/hooks.txt
includes/EditPage.php
includes/diff/DifferenceEngine.php
includes/page/Article.php
includes/page/WikiPage.php
tests/phpunit/includes/page/ArticleTest.php
tests/phpunit/includes/page/WikiPageTest.php

index 98d2a17..f135029 100644 (file)
@@ -60,6 +60,12 @@ changes to languages because of Phabricator reports.
   Status return type is deprecated.
 * User::edits() (deprecated in 1.21) was removed.
 * Xml::escapeJsString() (deprecated in 1.21) was removed.
+* Article::getText() and Article::prepareTextForEdit() (deprecated in 1.21)
+  were removed.
+* Article::getAutosummary() and WikiPage::getAutosummary (deprecated in 1.21)
+  were removed.
+* Hooks ArticleViewCustom, EditPageGetDiffText and ShowRawCssJs (deprecated in 1.21)
+  were removed.
 
 == Compatibility ==
 
index da12d8c..0254e06 100644 (file)
@@ -774,14 +774,6 @@ $article: the article
 &$sectionanchor: The section anchor link (e.g. "#overview" )
 &$extraq: Extra query parameters which can be added via hooked functions
 
-'ArticleViewCustom': DEPRECATED! Use ArticleContentViewCustom instead.
-Allows to output the text of the article in a different format than wikitext.
-Note that it is preferable to implement proper handing for a custom data type
-using the ContentHandler facility.
-$text: text of the page
-$title: title of the page
-$output: reference to $wgOut
-
 'ArticleViewFooter': After showing the footer section of an ordinary page view
 $article: Article object
 $patrolFooterShown: boolean whether patrol footer is shown
@@ -1417,13 +1409,6 @@ different data types using the ContentHandler facility.
 $editPage: EditPage object
 &$newtext: wikitext that will be used as "your version"
 
-'EditPageGetDiffText': DEPRECATED! Use EditPageGetDiffContent instead.
-Allow modifying the wikitext that will be used in "Show changes". Note that it
-is preferable to implement diff handling for different data types using the
-ContentHandler facility.
-$editPage: EditPage object
-&$newtext: wikitext that will be used as "your version"
-
 'EditPageGetPreviewContent': Allow modifying the wikitext that will be
 previewed. Note that it is preferable to implement previews for different data
 types using the ContentHandler facility.
@@ -2841,12 +2826,6 @@ Special:ShortPages.
 'ShowMissingArticle': Called when generating the output for a non-existent page.
 $article: The article object corresponding to the page
 
-'ShowRawCssJs': DEPRECATED! Use the ContentGetParserOutput hook instead.
-Customise the output of raw CSS and JavaScript in page views.
-$text: Text being shown
-$title: Title of the custom script/stylesheet page
-$output: Current OutputPage object
-
 'ShowSearchHit': Customize display of search hit.
 $searchPage: The SpecialSearch instance.
 $result: The SearchResult to show
index 745f8de..f37ce34 100644 (file)
@@ -3326,7 +3326,6 @@ HTML
                }
 
                if ( $newContent ) {
-                       ContentHandler::runLegacyHooks( 'EditPageGetDiffText', [ $this, &$newContent ], '1.21' );
                        Hooks::run( 'EditPageGetDiffContent', [ $this, &$newContent ] );
 
                        $popts = ParserOptions::newFromUserAndLang( $wgUser, $wgContLang );
index a5a8676..bd65fb4 100644 (file)
@@ -601,28 +601,7 @@ class DifferenceEngine extends ContextSource {
                        $out->setRevisionTimestamp( $this->mNewRev->getTimestamp() );
                        $out->setArticleFlag( true );
 
-                       // NOTE: only needed for B/C: custom rendering of JS/CSS via hook
-                       if ( $this->mNewPage->isCssJsSubpage() || $this->mNewPage->isCssOrJsPage() ) {
-                               // This needs to be synchronised with Article::showCssOrJsPage(), which sucks
-                               // Give hooks a chance to customise the output
-                               // @todo standardize this crap into one function
-                               if ( ContentHandler::runLegacyHooks( 'ShowRawCssJs', [ $this->mNewContent, $this->mNewPage, $out ], '1.24' ) ) {
-                                       // NOTE: deprecated hook, B/C only
-                                       // use the content object's own rendering
-                                       $cnt = $this->mNewRev->getContent();
-                                       $po = $cnt ? $cnt->getParserOutput( $this->mNewRev->getTitle(), $this->mNewRev->getId() ) : null;
-                                       if ( $po ) {
-                                               $out->addParserOutputContent( $po );
-                                       }
-                               }
-                       } elseif ( !Hooks::run( 'ArticleContentViewCustom', [ $this->mNewContent, $this->mNewPage, $out ] ) ) {
-                               // Handled by extension
-                       } elseif ( !ContentHandler::runLegacyHooks(
-                               'ArticleViewCustom',
-                               [ $this->mNewContent, $this->mNewPage, $out ],
-                               '1.21'
-                       ) ) {
-                               // NOTE: deprecated hook, B/C only
+                       if ( !Hooks::run( 'ArticleContentViewCustom', [ $this->mNewContent, $this->mNewPage, $out ] ) ) {
                                // Handled by extension
                        } else {
                                // Normal page
index 9a2a8e2..cc3ef26 100644 (file)
@@ -621,21 +621,9 @@ class Article implements Page {
                                        # Preload timestamp to avoid a DB hit
                                        $outputPage->setRevisionTimestamp( $this->mPage->getTimestamp() );
 
-                                       # Pages containing custom CSS or JavaScript get special treatment
-                                       if ( $this->getTitle()->isCssOrJsPage() || $this->getTitle()->isCssJsSubpage() ) {
-                                               wfDebug( __METHOD__ . ": showing CSS/JS source\n" );
-                                               $this->showCssOrJsPage();
-                                               $outputDone = true;
-                                       } elseif ( !Hooks::run( 'ArticleContentViewCustom',
+                                       if ( !Hooks::run( 'ArticleContentViewCustom',
                                                        [ $this->fetchContentObject(), $this->getTitle(), $outputPage ] ) ) {
 
-                                               # Allow extensions do their own custom view for certain pages
-                                               $outputDone = true;
-                                       } elseif ( !ContentHandler::runLegacyHooks(
-                                               'ArticleViewCustom',
-                                               [ $this->fetchContentObject(), $this->getTitle(), $outputPage ],
-                                               '1.21'
-                                       ) ) {
                                                # Allow extensions do their own custom view for certain pages
                                                $outputDone = true;
                                        }
@@ -781,47 +769,6 @@ class Article implements Page {
                $this->mPage->doViewUpdates( $user, (int)$new );
        }
 
-       /**
-        * Show a page view for a page formatted as CSS or JavaScript. To be called by
-        * Article::view() only.
-        *
-        * This exists mostly to serve the deprecated ShowRawCssJs hook (used to customize these views).
-        * It has been replaced by the ContentGetParserOutput hook, which lets you do the same but with
-        * more flexibility.
-        *
-        * @param bool $showCacheHint Whether to show a message telling the user
-        *   to clear the browser cache (default: true).
-        */
-       protected function showCssOrJsPage( $showCacheHint = true ) {
-               $outputPage = $this->getContext()->getOutput();
-
-               if ( $showCacheHint ) {
-                       $dir = $this->getContext()->getLanguage()->getDir();
-                       $lang = $this->getContext()->getLanguage()->getHtmlCode();
-
-                       $outputPage->wrapWikiMsg(
-                               "<div id='mw-clearyourcache' lang='$lang' dir='$dir' class='mw-content-$dir'>\n$1\n</div>",
-                               'clearyourcache'
-                       );
-               }
-
-               $this->fetchContentObject();
-
-               if ( $this->mContentObject ) {
-                       // Give hooks a chance to customise the output
-                       if ( ContentHandler::runLegacyHooks(
-                               'ShowRawCssJs',
-                               [ $this->mContentObject, $this->getTitle(), $outputPage ],
-                               '1.24'
-                       ) ) {
-                               // If no legacy hooks ran, display the content of the parser output, including RL modules,
-                               // but excluding metadata like categories and language links
-                               $po = $this->mContentObject->getParserOutput( $this->getTitle() );
-                               $outputPage->addParserOutputContent( $po );
-                       }
-               }
-       }
-
        /**
         * Get the robot policy to be used for the current view
         * @param string $action The action= GET parameter
@@ -2331,16 +2278,6 @@ class Article implements Page {
                return $this->mPage->getRevision();
        }
 
-       /**
-        * Call to WikiPage function for backwards compatibility.
-        * @see WikiPage::getText
-        * @deprecated since 1.21 use WikiPage::getContent() instead
-        */
-       public function getText( $audience = Revision::FOR_PUBLIC, User $user = null ) {
-               wfDeprecated( __METHOD__, '1.21' );
-               return $this->mPage->getText( $audience, $user );
-       }
-
        /**
         * Call to WikiPage function for backwards compatibility.
         * @see WikiPage::getTimestamp
@@ -2503,15 +2440,6 @@ class Article implements Page {
                );
        }
 
-       /**
-        * Call to WikiPage function for backwards compatibility.
-        * @deprecated since 1.21, use prepareContentForEdit
-        * @see WikiPage::prepareTextForEdit
-        */
-       public function prepareTextForEdit( $text, $revid = null, User $user = null ) {
-               return $this->mPage->prepareTextForEdit( $text, $revid, $user );
-       }
-
        /**
         * Call to WikiPage function for backwards compatibility.
         * @see WikiPage::protectDescription
@@ -2744,15 +2672,5 @@ class Article implements Page {
                WikiPage::onArticleEdit( $title );
        }
 
-       /**
-        * @param string $oldtext
-        * @param string $newtext
-        * @param int $flags
-        * @return string
-        * @deprecated since 1.21, use ContentHandler::getAutosummary() instead
-        */
-       public static function getAutosummary( $oldtext, $newtext, $flags ) {
-               return WikiPage::getAutosummary( $oldtext, $newtext, $flags );
-       }
        // ******
 }
index f016494..284a343 100644 (file)
@@ -3519,28 +3519,6 @@ class WikiPage implements Page, IDBAccessObject {
                return $result;
        }
 
-       /**
-        * Return an applicable autosummary if one exists for the given edit.
-        * @param string|null $oldtext The previous text of the page.
-        * @param string|null $newtext The submitted text of the page.
-        * @param int $flags Bitmask: a bitmask of flags submitted for the edit.
-        * @return string An appropriate autosummary, or an empty string.
-        *
-        * @deprecated since 1.21, use ContentHandler::getAutosummary() instead
-        */
-       public static function getAutosummary( $oldtext, $newtext, $flags ) {
-               // NOTE: stub for backwards-compatibility. assumes the given text is
-               // wikitext. will break horribly if it isn't.
-
-               wfDeprecated( __METHOD__, '1.21' );
-
-               $handler = ContentHandler::getForModelID( CONTENT_MODEL_WIKITEXT );
-               $oldContent = is_null( $oldtext ) ? null : $handler->unserializeContent( $oldtext );
-               $newContent = is_null( $newtext ) ? null : $handler->unserializeContent( $newtext );
-
-               return $handler->getAutosummary( $oldContent, $newContent, $flags );
-       }
-
        /**
         * Auto-generates a deletion reason
         *
index a96a296..7d0813d 100644 (file)
@@ -63,13 +63,9 @@ class ArticleTest extends MediaWikiTestCase {
         * @covers Article::onArticleCreate
         * @covers Article::onArticleDelete
         * @covers Article::onArticleEdit
-        * @covers Article::getAutosummary
         */
        public function testStaticFunctions() {
                $this->hideDeprecated( 'Article::selectFields' );
-               $this->hideDeprecated( 'Article::getAutosummary' );
-               $this->hideDeprecated( 'WikiPage::getAutosummary' );
-               $this->hideDeprecated( 'CategoryPage::getAutosummary' ); // Inherited from Article
 
                $this->assertEquals( WikiPage::selectFields(), Article::selectFields(),
                        "Article static functions" );
@@ -79,7 +75,5 @@ class ArticleTest extends MediaWikiTestCase {
                        "Article static functions" );
                $this->assertEquals( true, is_callable( "ImagePage::onArticleEdit" ),
                        "Article static functions" );
-               $this->assertTrue( is_string( CategoryPage::getAutosummary( '', '', 0 ) ),
-                       "Article static functions" );
        }
 }
index 4b7ebd3..49d9fd2 100644 (file)
@@ -1034,63 +1034,6 @@ more stuff
                $this->assertEquals( "one", $page->getContent()->getNativeData() );
        }
 
-       public static function provideGetAutosummary() {
-               return [
-                       [
-                               'Hello there, world!',
-                               '#REDIRECT [[Foo]]',
-                               0,
-                               '/^Redirected page .*Foo/'
-                       ],
-
-                       [
-                               null,
-                               'Hello world!',
-                               EDIT_NEW,
-                               '/^Created page .*Hello/'
-                       ],
-
-                       [
-                               'Hello there, world!',
-                               '',
-                               0,
-                               '/^Blanked/'
-                       ],
-
-                       [
-                               'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
-                               eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
-                               voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
-                               clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.',
-                               'Hello world!',
-                               0,
-                               '/^Replaced .*Hello/'
-                       ],
-
-                       [
-                               'foo',
-                               'bar',
-                               0,
-                               '/^$/'
-                       ],
-               ];
-       }
-
-       /**
-        * @dataProvider provideGetAutoSummary
-        * @covers WikiPage::getAutosummary
-        */
-       public function testGetAutosummary( $old, $new, $flags, $expected ) {
-               $this->hideDeprecated( "WikiPage::getAutosummary" );
-
-               $page = $this->newPage( "WikiPageTest_testGetAutosummary" );
-
-               $summary = $page->getAutosummary( $old, $new, $flags );
-
-               $this->assertTrue( (bool)preg_match( $expected, $summary ),
-                       "Autosummary didn't match expected pattern $expected: $summary" );
-       }
-
        public static function provideGetAutoDeleteReason() {
                return [
                        [