Merge "Add 3D filetype for STL files"
[lhc/web/wiklou.git] / includes / actions / HistoryAction.php
index c1763fa..7460340 100644 (file)
  * @ingroup Actions
  */
 
+use MediaWiki\MediaWikiServices;
+use Wikimedia\Rdbms\ResultWrapper;
+use Wikimedia\Rdbms\FakeResultWrapper;
+
 /**
  * This class handles printing the history page for an article. In order to
  * be efficient, it uses timestamps rather than offsets for paging, to avoid
@@ -58,9 +62,9 @@ class HistoryAction extends FormlessAction {
 
        protected function getDescription() {
                // Creation of a subtitle link pointing to [[Special:Log]]
-               return Linker::linkKnown(
+               return MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
                        SpecialPage::getTitleFor( 'Log' ),
-                       $this->msg( 'viewpagelogs' )->escaped(),
+                       $this->msg( 'viewpagelogs' )->text(),
                        [],
                        [ 'page' => $this->getTitle()->getPrefixedText() ]
                );
@@ -144,6 +148,9 @@ class HistoryAction extends FormlessAction {
                                $out->setStatusCode( 404 );
                        }
                        $out->addWikiMsg( 'nohistory' );
+
+                       $dbr = wfGetDB( DB_REPLICA );
+
                        # show deletion/move log if there is an entry
                        LogEventsList::showLogExtract(
                                $out,
@@ -151,7 +158,7 @@ class HistoryAction extends FormlessAction {
                                $this->getTitle(),
                                '',
                                [ 'lim' => 10,
-                                       'conds' => [ "log_action != 'revision'" ],
+                                       'conds' => [ 'log_action != ' . $dbr->addQuotes( 'revision' ) ],
                                        'showIfEmpty' => false,
                                        'msgKey' => [ 'moveddeleted-notice' ]
                                ]
@@ -166,7 +173,7 @@ class HistoryAction extends FormlessAction {
                $year = $request->getInt( 'year' );
                $month = $request->getInt( 'month' );
                $tagFilter = $request->getVal( 'tagfilter' );
-               $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
+               $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter, false, $this->getContext() );
 
                /**
                 * Option to show only revisions that have been (partially) hidden via RevisionDelete
@@ -426,7 +433,10 @@ class HistoryPager extends ReverseChronologicalPager {
                        $queryInfo['options'],
                        $this->tagFilter
                );
-               Hooks::run( 'PageHistoryPager::getQueryInfo', [ &$this, &$queryInfo ] );
+
+               // Avoid PHP 7.1 warning of passing $this by reference
+               $historyPager = $this;
+               Hooks::run( 'PageHistoryPager::getQueryInfo', [ &$historyPager, &$queryInfo ] );
 
                return $queryInfo;
        }
@@ -734,9 +744,9 @@ class HistoryPager extends ReverseChronologicalPager {
                                $undoTooltip = $latest
                                        ? [ 'title' => $this->msg( 'tooltip-undo' )->text() ]
                                        : [];
-                               $undolink = Linker::linkKnown(
+                               $undolink = MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
                                        $this->getTitle(),
-                                       $this->msg( 'editundo' )->escaped(),
+                                       $this->msg( 'editundo' )->text(),
                                        $undoTooltip,
                                        [
                                                'action' => 'edit',
@@ -770,9 +780,11 @@ class HistoryPager extends ReverseChronologicalPager {
                        $s .= ' <span class="mw-changeslist-separator">. .</span> ' . $s2;
                }
 
-               Hooks::run( 'PageHistoryLineEnding', [ $this, &$row, &$s, &$classes ] );
+               $attribs = [ 'data-mw-revid' => $rev->getId() ];
+
+               Hooks::run( 'PageHistoryLineEnding', [ $this, &$row, &$s, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
-               $attribs = [];
                if ( $classes ) {
                        $attribs['class'] = implode( ' ', $classes );
                }
@@ -788,16 +800,15 @@ class HistoryPager extends ReverseChronologicalPager {
         */
        function revLink( $rev ) {
                $date = $this->getLanguage()->userTimeAndDate( $rev->getTimestamp(), $this->getUser() );
-               $date = htmlspecialchars( $date );
                if ( $rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
-                       $link = Linker::linkKnown(
+                       $link = MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
                                $this->getTitle(),
                                $date,
                                [ 'class' => 'mw-changeslist-date' ],
                                [ 'oldid' => $rev->getId() ]
                        );
                } else {
-                       $link = $date;
+                       $link = htmlspecialchars( $date );
                }
                if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
                        $link = "<span class=\"history-deleted\">$link</span>";
@@ -818,7 +829,7 @@ class HistoryPager extends ReverseChronologicalPager {
                if ( $latest || !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
                        return $cur;
                } else {
-                       return Linker::linkKnown(
+                       return MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink(
                                $this->getTitle(),
                                $cur,
                                [],
@@ -847,9 +858,10 @@ class HistoryPager extends ReverseChronologicalPager {
                        return $last;
                }
 
+               $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
                if ( $next === 'unknown' ) {
                        # Next row probably exists but is unknown, use an oldid=prev link
-                       return Linker::linkKnown(
+                       return $linkRenderer->makeKnownLink(
                                $this->getTitle(),
                                $last,
                                [],
@@ -868,7 +880,7 @@ class HistoryPager extends ReverseChronologicalPager {
                        return $last;
                }
 
-               return Linker::linkKnown(
+               return $linkRenderer->makeKnownLink(
                        $this->getTitle(),
                        $last,
                        [],