(bug 37330) Fix wrong block being displayed due to autoblock in place.
[lhc/web/wiklou.git] / includes / RevisionList.php
index 2781764..44c7912 100644 (file)
@@ -1,16 +1,33 @@
 <?php
+/**
+ * Holders of revision list for a single page
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
 /**
  * List for revision table items for a single page
  */
-abstract class RevisionListBase {
+abstract class RevisionListBase extends ContextSource {
        /**
         * @var Title
         */
        var $title;
-       /**
-        * @var IContextSource
-        */
-       var $context;
 
        var $ids, $res, $current;
 
@@ -20,7 +37,7 @@ abstract class RevisionListBase {
         * @param $title Title
         */
        function __construct( IContextSource $context, Title $title ) {
-               $this->context = $context;
+               $this->setContext( $context );
                $this->title = $title;
        }
 
@@ -35,6 +52,7 @@ abstract class RevisionListBase {
        /**
         * Get the internal type name of this list. Equal to the table name.
         * Override this function.
+        * @return null
         */
        public function getType() {
                return null;
@@ -84,6 +102,7 @@ abstract class RevisionListBase {
 
        /**
         * Get the number of items in the list.
+        * @return int
         */
        public function length() {
                if( !$this->res ) {
@@ -104,24 +123,6 @@ abstract class RevisionListBase {
         * @param $row stdclass
         */
        abstract public function newItem( $row );
-
-       /**
-        * Get the language of the user doing the action
-        *
-        * @return Language object
-        */
-       public function getLang() {
-               return $this->context->getLang();
-       }
-
-       /**
-        * Get the user doing the action
-        *
-        * @return User object
-        */
-       public function getUser() {
-               return $this->context->getUser();
-       }
 }
 
 /**
@@ -146,6 +147,7 @@ abstract class RevisionItemBase {
        /**
         * Get the DB field name associated with the ID list.
         * Override this function.
+        * @return null
         */
        public function getIdField() {
                return null;
@@ -154,6 +156,7 @@ abstract class RevisionItemBase {
        /**
         * Get the DB field name storing timestamps.
         * Override this function.
+        * @return bool
         */
        public function getTimestampField() {
                return false;
@@ -162,6 +165,7 @@ abstract class RevisionItemBase {
        /**
         * Get the DB field name storing user ids.
         * Override this function.
+        * @return bool
         */
        public function getAuthorIdField() {
                return false;
@@ -170,6 +174,7 @@ abstract class RevisionItemBase {
        /**
         * Get the DB field name storing user names.
         * Override this function.
+        * @return bool
         */
        public function getAuthorNameField() {
                return false;
@@ -177,6 +182,7 @@ abstract class RevisionItemBase {
 
        /**
         * Get the ID, as it would appear in the ids URL parameter
+        * @return
         */
        public function getId() {
                $field = $this->getIdField();
@@ -185,22 +191,25 @@ abstract class RevisionItemBase {
 
        /**
         * Get the date, formatted in user's languae
+        * @return String
         */
        public function formatDate() {
-               return $this->list->context->getLang()->userDate( $this->getTimestamp(),
-                       $this->list->context->getUser() );
+               return $this->list->getLanguage()->userDate( $this->getTimestamp(),
+                       $this->list->getUser() );
        }
 
        /**
         * Get the time, formatted in user's languae
+        * @return String
         */
        public function formatTime() {
-               return $this->list->context->getLang()->userTime( $this->getTimestamp(),
-                       $this->list->context->getUser() );
+               return $this->list->getLanguage()->userTime( $this->getTimestamp(),
+                       $this->list->getUser() );
        }
 
        /**
         * Get the timestamp in MW 14-char form
+        * @return Mixed
         */
        public function getTimestamp() {
                $field = $this->getTimestampField();
@@ -209,6 +218,7 @@ abstract class RevisionItemBase {
 
        /**
         * Get the author user ID
+        * @return int
         */
        public function getAuthorId() {
                $field = $this->getAuthorIdField();
@@ -217,6 +227,7 @@ abstract class RevisionItemBase {
 
        /**
         * Get the author user name
+        * @return string
         */
        public function getAuthorName() {
                $field = $this->getAuthorNameField();
@@ -260,8 +271,9 @@ class RevisionList extends RevisionListBase {
                        $conds,
                        __METHOD__,
                        array( 'ORDER BY' => 'rev_id DESC' ),
-                       array( 'page' => array( 'INNER JOIN', 'rev_page = page_id' ),
-                               'user' => array( 'LEFT JOIN', 'user_id = rev_user' ) )
+                       array(
+                               'page' => Revision::pageJoinCond(),
+                               'user' => Revision::userJoinCond() )
                );
        }
 
@@ -279,7 +291,7 @@ class RevisionItem extends RevisionItemBase {
        public function __construct( $list, $row ) {
                parent::__construct( $list, $row );
                $this->revision = new Revision( $row );
-               $this->context = $list->context;
+               $this->context = $list->getContext();
        }
 
        public function getIdField() {
@@ -313,9 +325,10 @@ class RevisionItem extends RevisionItemBase {
        /**
         * Get the HTML link to the revision text.
         * Overridden by RevDel_ArchiveItem.
+        * @return string
         */
        protected function getRevisionLink() {
-               $date = $this->list->getLang()->timeanddate( $this->revision->getTimestamp(), true );
+               $date = $this->list->getLanguage()->timeanddate( $this->revision->getTimestamp(), true );
                if ( $this->isDeleted() && !$this->canViewContent() ) {
                        return $date;
                }
@@ -333,6 +346,7 @@ class RevisionItem extends RevisionItemBase {
        /**
         * Get the HTML link to the diff.
         * Overridden by RevDel_ArchiveItem
+        * @return string
         */
        protected function getDiffLink() {
                if ( $this->isDeleted() && !$this->canViewContent() ) {
@@ -357,13 +371,13 @@ class RevisionItem extends RevisionItemBase {
        }
 
        public function getHTML() {
-               $difflink = $this->getDiffLink();
+               $difflink = wfMessage( 'parentheses' )->rawParams( $this->getDiffLink() );
                $revlink = $this->getRevisionLink();
                $userlink = Linker::revUserLink( $this->revision );
                $comment = Linker::revComment( $this->revision );
                if ( $this->isDeleted() ) {
                        $revlink = "<span class=\"history-deleted\">$revlink</span>";
                }
-               return "<li>($difflink) $revlink $userlink $comment</li>";
+               return "<li>$difflink $revlink $userlink $comment</li>";
        }
 }