API: Add ApiDisabled and ApiQueryDisabled classes so individual modules can be disabl...
[lhc/web/wiklou.git] / includes / ChangesList.php
index 9889c6f..41d2039 100644 (file)
@@ -62,7 +62,7 @@ class ChangesList {
                if( !isset( $this->message ) ) {
                        foreach( explode(' ', 'cur diff hist minoreditletter newpageletter last '.
                                'blocklink history boteditletter semicolon-separator' ) as $msg ) {
-                               $this->message[$msg] = wfMsgExt( $msg, array( 'escape') );
+                               $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) );
                        }
                }
        }
@@ -130,7 +130,6 @@ class ChangesList {
 
                # Make date header if necessary
                $date = $wgLang->date( $rc_timestamp, true, true );
-               $s = '';
                if( $date != $this->lastdate ) {
                        if( '' != $this->lastdate ) {
                                $s .= "</ul>\n";
@@ -201,11 +200,11 @@ class ChangesList {
        protected function insertTimestamp(&$s, $rc) {
                global $wgLang;
                # Timestamp
-               $s .= $this->message['semicolon-separator'] . ' ' . $wgLang->time( $rc->mAttribs['rc_timestamp'], true, true ) . ' . . ';
+               $s .= $this->message['semicolon-separator'] . $wgLang->time( $rc->mAttribs['rc_timestamp'], true, true ) . ' . . ';
        }
 
        /** Insert links to user page, user talk page and eventually a blocking link */
-       protected function insertUserRelatedLinks(&$s, &$rc) {
+       public function insertUserRelatedLinks(&$s, &$rc) {
                if ( $this->isDeleted($rc,Revision::DELETED_USER) ) {
                   $s .= ' <span class="history-deleted">' . wfMsgHtml('rev-deleted-user') . '</span>';
                } else {
@@ -288,7 +287,7 @@ class ChangesList {
                if( ( $rc->mAttribs['rc_deleted'] & $field ) == $field ) {
                        global $wgUser;
                        $permission = ( $rc->mAttribs['rc_deleted'] & Revision::DELETED_RESTRICTED ) == Revision::DELETED_RESTRICTED
-                               ? 'hiderevision'
+                               ? 'suppressrevision'
                                : 'deleterevision';
                        wfDebug( "Checking for $permission due to $field match on $rc->mAttribs['rc_deleted']\n" );
                        return $wgUser->isAllowed( $permission );
@@ -319,9 +318,10 @@ class OldChangesList extends ChangesList {
                # Should patrol-related stuff be shown?
                $unpatrolled = $wgUser->useRCPatrol() && $rc_patrolled == 0;
 
-               $this->insertDateHeader($s,$rc_timestamp);
+               $dateheader = ""; // $s now contains only <li>...</li>, for hooks' convenience.
+               $this->insertDateHeader($dateheader,$rc_timestamp);
 
-               $s .= '<li>';
+               $s = '';
 
                // Moved pages
                if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
@@ -372,12 +372,14 @@ class OldChangesList extends ChangesList {
                        $s .= ' ' . wfMsg('number_of_watching_users_RCview',  $wgContLang->formatNum($rc->numberofWatchingusers));
                }
 
-               $s .= "</li>\n";
+               wfRunHooks( 'OldChangesListRecentChangesLine', array(&$this, &$s, $rc) );
+               
+               $s = "<li>$s</li>\n";
 
                wfProfileOut( $fname.'-rest' );
 
                wfProfileOut( $fname );
-               return $s;
+               return $dateheader . $s;
        }
 }
 
@@ -587,12 +589,12 @@ class EnhancedChangesList extends ChangesList {
                        $text = $userlink;
                        $text .= $wgContLang->getDirMark();
                        if( $count > 1 ) {
-                               $text .= ' ('.$count.'&times;)';
+                               $text .= ' (' . $wgLang->formatNum( $count ) . '×)';
                        }
                        array_push( $users, $text );
                }
 
-               $users = ' <span class="changedby">[' . implode( $this->message['semicolon-separator'] . ' ', $users ) . ']</span>';
+               $users = ' <span class="changedby">[' . implode( $this->message['semicolon-separator'], $users ) . ']</span>';
 
                # Arrow
                $rci = 'RCI'.$this->rcCacheIndex;
@@ -663,7 +665,9 @@ class EnhancedChangesList extends ChangesList {
                }
 
                # History
-               if( $namehidden || !$block[0]->getTitle()->exists() ) {
+               if( $alllogs ) {
+                       // don't show history link for logs
+               } else if( $namehidden || !$block[0]->getTitle()->exists() ) {
                        $r .= '(' . $this->message['history'] . ')';
                } else {
                        $r .= '(' . $this->skin->makeKnownLinkObj( $block[0]->getTitle(),
@@ -692,13 +696,16 @@ class EnhancedChangesList extends ChangesList {
                        if( $rc_this_oldid != 0 ) {
                                $o = 'oldid='.$rc_this_oldid;
                        }
-                       # Revision link
+                       # Log timestamp
                        if( $rc_type == RC_LOG ) {
                                $link = '<tt>'.$rcObj->timestamp.'</tt> ';
+                       # Revision link
                        } else if( !ChangesList::userCan($rcObj,Revision::DELETED_TEXT) ) {
                                $link = '<span class="history-deleted"><tt>'.$rcObj->timestamp.'</tt></span> ';
                        } else {
-                               $link = '<tt>'.$this->skin->makeKnownLinkObj( $rcObj->getTitle(), $rcObj->timestamp, $curIdEq.'&'.$o ).'</tt>';
+                               $rcIdEq = ($rcObj->unpatrolled && $rc_type == RC_NEW) ? '&rcid='.$rcObj->mAttribs['rc_id'] : '';
+                               
+                               $link = '<tt>'.$this->skin->makeKnownLinkObj( $rcObj->getTitle(), $rcObj->timestamp, $curIdEq.'&'.$o.$rcIdEq ).'</tt>';
                                if( $this->isDeleted($rcObj,Revision::DELETED_TEXT) )
                                        $link = '<span class="history-deleted">'.$link.'</span> ';
                        }
@@ -707,7 +714,7 @@ class EnhancedChangesList extends ChangesList {
                        if ( !$rc_type == RC_LOG || $rc_type == RC_NEW ) {
                                $r .= ' (';
                                $r .= $rcObj->curlink;
-                               $r .= $this->message['semicolon-separator'] . ' ';
+                               $r .= $this->message['semicolon-separator'];
                                $r .= $rcObj->lastlink;
                                $r .= ')';
                        }
@@ -832,7 +839,7 @@ class EnhancedChangesList extends ChangesList {
 
                # Diff and hist links
                if ( $rc_type != RC_LOG ) {
-                  $r .= ' ('. $rcObj->difflink . $this->message['semicolon-separator'] . ' ';
+                  $r .= ' ('. $rcObj->difflink . $this->message['semicolon-separator'];
                   $r .= $this->skin->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' ) . ')';
                }
                $r .= ' . . ';
@@ -850,7 +857,8 @@ class EnhancedChangesList extends ChangesList {
                        if( $this->isDeleted($rcObj,LogPage::DELETED_ACTION) ) {
                                $r .= ' <span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';
                        } else {
-                               $r .= ' ' . LogPage::actionText( $rc_log_type, $rc_log_action, $rcObj->getTitle(), $this->skin, LogPage::extractParams($rc_params), true, true );
+                               $r .= ' ' . LogPage::actionText( $rc_log_type, $rc_log_action, $rcObj->getTitle(), 
+                                       $this->skin, LogPage::extractParams($rc_params), true, true );
                        }
                }