Typo.
[lhc/web/wiklou.git] / includes / SpecialLog.php
index 9a4e543..aa3f66b 100644 (file)
@@ -123,10 +123,12 @@ class LogReader {
         */
        function limitTitle( $page , $pattern ) {
                global $wgMiserMode;
+               
                $title = Title::newFromText( $page );
-               if( empty( $page ) || is_null( $title )  ) {
+               
+               if( strlen( $page ) == 0 || !$title instanceof Title )
                        return false;
-               }
+
                $this->title =& $title;
                $this->pattern = $pattern;
                $ns = $title->getNamespace();
@@ -181,7 +183,7 @@ class LogReader {
         * @return ResultWrapper result object to return the relevant rows
         */
        function getRows() {
-               $res = $this->db->query( $this->getQuery(), 'LogReader::getRows' );
+               $res = $this->db->query( $this->getQuery(), __METHOD__ );
                return $this->db->resultObject( $res );
        }
 
@@ -240,19 +242,25 @@ class LogReader {
  * @addtogroup SpecialPage
  */
 class LogViewer {
+       const NO_ACTION_LINK = 1;
+       
        /**
         * @var LogReader $reader
         */
        var $reader;
        var $numResults = 0;
+       var $flags = 0;
 
        /**
         * @param LogReader &$reader where to get our data from
+        * @param integer $flags Bitwise combination of flags:
+        *     self::NO_ACTION_LINK   Don't show restore/unblock/block links
         */
-       function LogViewer( &$reader ) {
+       function LogViewer( &$reader, $flags = 0 ) {
                global $wgUser;
                $this->skin = $wgUser->getSkin();
                $this->reader =& $reader;
+               $this->flags = $flags;
        }
 
        /**
@@ -322,25 +330,13 @@ class LogViewer {
        }
 
        function doShowList( &$out, $result ) {
-               global $wgLang;
-
-               $lastdate = '';
-               $listopen = false;
                // Rewind result pointer and go through it again, making the HTML
-               $html = '';
+               $html = "\n<ul>\n";
                $result->seek( 0 );
                while( $s = $result->fetchObject() ) {
-                       $date = $wgLang->date( $s->log_timestamp, /* adj */ true );
-                       if ( $date != $lastdate ) {
-                               if ( $listopen ) { $html .= Xml::closeElement( 'ul' ); }
-                               $html .= Xml::element('h4', null, $date) . "\n";
-                               $html .= Xml::openElement( 'ul' );
-                               $listopen = true;
-                               $lastdate = $date;
-                       }
-                       $html .= Xml::tags('li', null, $this->logLine( $s ) ) . "\n";
+                       $html .= $this->logLine( $s );
                }
-               if ( $listopen ) { $html .= Xml::closeElement( 'ul' ); }
+               $html .= "\n</ul>\n";
                $out->addHTML( $html );
                $result->free();
        }
@@ -355,10 +351,10 @@ class LogViewer {
         * @private
         */
        function logLine( $s ) {
-               global $wgLang, $wgUser;;
+               global $wgLang, $wgUser, $wgContLang;
                $skin = $wgUser->getSkin();
                $title = Title::makeTitle( $s->log_namespace, $s->log_title );
-               $time = $wgLang->time( wfTimestamp(TS_MW, $s->log_timestamp), true );
+               $time = $wgLang->timeanddate( wfTimestamp(TS_MW, $s->log_timestamp), true );
 
                // Enter the existence or non-existence of this page into the link cache,
                // for faster makeLinkObj() in LogPage::actionText()
@@ -370,49 +366,61 @@ class LogViewer {
                }
 
                $userLink = $this->skin->userLink( $s->log_user, $s->user_name ) . $this->skin->userToolLinksRedContribs( $s->log_user, $s->user_name );
-               $comment = $this->skin->commentBlock( $s->log_comment );
+               $comment = $wgContLang->getDirMark() . $this->skin->commentBlock( $s->log_comment );
                $paramArray = LogPage::extractParams( $s->log_params );
                $revert = '';
                // show revertmove link
-               if ( $s->log_type == 'move' && isset( $paramArray[0] ) ) {
-                       $destTitle = Title::newFromText( $paramArray[0] );
-                       if ( $destTitle ) {
-                               $revert = '(' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Movepage' ),
-                                       wfMsg( 'revertmove' ),
-                                       'wpOldTitle=' . urlencode( $destTitle->getPrefixedDBkey() ) .
-                                       '&wpNewTitle=' . urlencode( $title->getPrefixedDBkey() ) .
-                                       '&wpReason=' . urlencode( wfMsgForContent( 'revertmove' ) ) .
-                                       '&wpMovetalk=0' ) . ')';
-                       }
-               // show undelete link
-               } elseif ( $s->log_action == 'delete' && $wgUser->isAllowed( 'delete' ) ) {
-                       $revert = '(' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Undelete' ),
-                               wfMsg( 'undeletebtn' ) ,
-                               'target='. urlencode( $title->getPrefixedDBkey() ) ) . ')';
-               
-               // show unblock link
-               } elseif ( $s->log_action == 'block' && $wgUser->isAllowed( 'block' ) ) {
-                       $revert = '(' .  $skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Ipblocklist' ),
-                               wfMsg( 'unblocklink' ),
-                               'action=unblock&ip=' . urlencode( $s->log_title ) ) . ')';
-               // show change protection link
-               } elseif ( ( $s->log_action == 'protect' || $s->log_action == 'modify' ) && $wgUser->isAllowed( 'protect' ) ) {
-                       $revert = '(' .  $skin->makeKnownLinkObj( $title, wfMsg( 'protect_change' ), 'action=unprotect' ) . ')';
-               // show user tool links for self created users
-               // TODO: The extension should be handling this, get it out of core!
-               } elseif ( $s->log_action == 'create2' ) {
-                       if( isset( $paramArray[0] ) ) {
-                               $revert = $this->skin->userToolLinks( $paramArray[0], $s->log_title, true );
-                       } else {
-                               # Fall back to a blue contributions link
-                               $revert = $this->skin->userToolLinks( 1, $s->log_title );
+               if ( !( $this->flags & self::NO_ACTION_LINK ) ) {
+                       if ( $s->log_type == 'move' && isset( $paramArray[0] ) && $wgUser->isAllowed( 'move' ) ) {
+                               $destTitle = Title::newFromText( $paramArray[0] );
+                               if ( $destTitle ) {
+                                       $revert = '(' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Movepage' ),
+                                               wfMsg( 'revertmove' ),
+                                               'wpOldTitle=' . urlencode( $destTitle->getPrefixedDBkey() ) .
+                                               '&wpNewTitle=' . urlencode( $title->getPrefixedDBkey() ) .
+                                               '&wpReason=' . urlencode( wfMsgForContent( 'revertmove' ) ) .
+                                               '&wpMovetalk=0' ) . ')';
+                               }
+                       // show undelete link
+                       } elseif ( $s->log_action == 'delete' && $wgUser->isAllowed( 'delete' ) ) {
+                               $revert = '(' . $this->skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Undelete' ),
+                                       wfMsg( 'undeletebtn' ) ,
+                                       'target='. urlencode( $title->getPrefixedDBkey() ) ) . ')';
+                       // show unblock link
+                       } elseif ( $s->log_action == 'block' && $wgUser->isAllowed( 'block' ) ) {
+                               $revert = '(' .  $skin->makeKnownLinkObj( SpecialPage::getTitleFor( 'Ipblocklist' ),
+                                       wfMsg( 'unblocklink' ),
+                                       'action=unblock&ip=' . urlencode( $s->log_title ) ) . ')';
+                       // show change protection link
+                       } elseif ( ( $s->log_action == 'protect' || $s->log_action == 'modify' ) && $wgUser->isAllowed( 'protect' ) ) {
+                               $revert = '(' .  $skin->makeKnownLinkObj( $title, wfMsg( 'protect_change' ), 'action=unprotect' ) . ')';
+                       // show user tool links for self created users
+                       // @todo The extension should be handling this, get it out of core! E.g. Use the hook below.
+                       } elseif ( $s->log_action == 'create2' ) {
+                               if( isset( $paramArray[0] ) ) {
+                                       $revert = $this->skin->userToolLinks( $paramArray[0], $s->log_title, true );
+                               } else {
+                                       # Fall back to a blue contributions link
+                                       $revert = $this->skin->userToolLinks( 1, $s->log_title );
+                               }
+                               # Suppress $comment from old entries, not needed and can contain incorrect links
+                               $comment = '';
+                       // Show unmerge link
+                       } elseif ( $s->log_action == 'merge' ) {
+                               $merge = SpecialPage::getTitleFor( 'Mergehistory' );
+                               $revert = '(' .  $this->skin->makeKnownLinkObj( $merge, wfMsg('revertmerge'),
+                                       wfArrayToCGI( 
+                                               array('target' => $paramArray[0], 'dest' => $title->getPrefixedText(), 'mergepoint' => $paramArray[1] ) 
+                                       ) 
+                               ) . ')';
+                       } elseif ( wfRunHooks( 'LogLine', array( $s->log_type, $s->log_action, $title, $paramArray, &$comment, &$revert ) ) ) {
+                               // wfDebug( "Invoked LogLine hook for " $s->log_type . ", " . $s->log_action . "\n" );
+                               // Do nothing. The implementation is handled by the hook modifiying the passed-by-ref parameters.
                        }
-                       # Suppress $comment from old entries, not needed and can contain incorrect links
-                       $comment = '';
                }
 
-               $action = LogPage::actionText( $s->log_type, $s->log_action, $title, $this->skin, $paramArray, true, true );
-               $out = "$time $userLink $action $comment $revert";
+               $action = LogPage::actionText( $s->log_type, $s->log_action, $title, $this->skin, $paramArray, true );
+               $out = "<li>$time $userLink $action $comment $revert</li>\n";
                return $out;
        }
 
@@ -528,6 +536,3 @@ class LogViewer {
                $out->addHTML( '<p>' . $html . '</p>' );
        }
 }
-
-
-?>