More documentation updates
[lhc/web/wiklou.git] / includes / LogEventsList.php
index 4df521b..f78da63 100644 (file)
@@ -466,7 +466,7 @@ class LogEventsList {
                // If an edit was hidden from a page give a review link to the history
                } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) {
                        $revert = RevisionDeleter::getLogLinks( $title, $paramArray,
-                                                               $this->skin, $this->message );
+                                                               $this->message );
                // Hidden log items, give review link
                } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'event', 'deletedhistory' ) ) {
                        if( count($paramArray) >= 1 ) {
@@ -509,7 +509,7 @@ class LogEventsList {
                }
                $del = '';
                // Don't show useless link to people who cannot hide revisions
-               if( $wgUser->isAllowed( 'deletedhistory' ) && !$wgUser->isBlocked() ) {
+               if( $wgUser->isAllowed( 'deletedhistory' ) ) {
                        if( $row->log_deleted || $wgUser->isAllowed( 'deleterevision' ) ) {
                                $canHide = $wgUser->isAllowed( 'deleterevision' );
                                // If event was hidden from sysops
@@ -557,10 +557,11 @@ class LogEventsList {
         *
         * @param $row Row
         * @param $field Integer
+        * @param $user User object to check, or null to use $wgUser
         * @return Boolean
         */
-       public static function userCan( $row, $field ) {
-               return self::userCanBitfield( $row->log_deleted, $field );
+       public static function userCan( $row, $field, User $user = null ) {
+               return self::userCanBitfield( $row->log_deleted, $field, $user );
        }
 
        /**
@@ -569,19 +570,22 @@ class LogEventsList {
         *
         * @param $bitfield Integer (current field)
         * @param $field Integer
+        * @param $user User object to check, or null to use $wgUser
         * @return Boolean
         */
-       public static function userCanBitfield( $bitfield, $field ) {
+       public static function userCanBitfield( $bitfield, $field, User $user = null ) {
                if( $bitfield & $field ) {
-                       global $wgUser;
-
                        if ( $bitfield & LogPage::DELETED_RESTRICTED ) {
                                $permission = 'suppressrevision';
                        } else {
                                $permission = 'deletedhistory';
                        }
                        wfDebug( "Checking for $permission due to $field match on $bitfield\n" );
-                       return $wgUser->isAllowed( $permission );
+                       if ( $user === null ) {
+                               global $wgUser;
+                               $user = $wgUser;
+                       }
+                       return $user->isAllowed( $permission );
                } else {
                        return true;
                }
@@ -600,8 +604,8 @@ class LogEventsList {
         * Show log extract. Either with text and a box (set $msgKey) or without (don't set $msgKey)
         *
         * @param $out OutputPage|String-by-reference
-        * @param $types String or Array
-        * @param $page String The page title to show log entries for
+        * @param $types String|Array Log types to show
+        * @param $page String|Title The page title to show log entries for
         * @param $user String The user who made the log entries
         * @param $param Associative Array with the following additional options:
         * - lim Integer Limit of items to show, default is 50
@@ -679,8 +683,11 @@ class LogEventsList {
                }
                if( $pager->getNumRows() > $pager->mLimit ) { # Show "Full log" link
                        $urlParam = array();
-                       if ( $page != '')
+                       if ( $page instanceof Title ) {
+                               $urlParam['page'] = $page->getPrefixedDBkey();
+                       } elseif ( $page != '' ) {
                                $urlParam['page'] = $page;
+                       }
                        if ( $user != '')
                                $urlParam['user'] = $user;
                        if ( !is_array( $types ) ) # Make it an array, if it isn't
@@ -704,23 +711,22 @@ class LogEventsList {
                }
 
                /* hook can return false, if we don't want the message to be emitted (Wikia BugId:7093) */
-               if ( !wfRunHooks( 'LogEventsListShowLogExtract', array( &$s, $types, $page, $user, $param ) ) ) {
-                       return $pager->getNumRows();
+               if ( wfRunHooks( 'LogEventsListShowLogExtract', array( &$s, $types, $page, $user, $param ) ) ) {
+                       // $out can be either an OutputPage object or a String-by-reference
+                       if ( $out instanceof OutputPage ){
+                               $out->addHTML( $s );
+                       } else {
+                               $out = $s;
+                       }
                }
 
-               // $out can be either an OutputPage object or a String-by-reference
-               if( $out instanceof OutputPage ){
-                       $out->addHTML( $s );
-               } else {
-                       $out = $s;
-               }
                return $pager->getNumRows();
        }
 
        /**
         * SQL clause to skip forbidden log types for this user
         *
-        * @param $db Database
+        * @param $db DatabaseBase
         * @param $audience string, public/user
         * @return Mixed: string or false
         */
@@ -758,7 +764,7 @@ class LogPager extends ReverseChronologicalPager {
         * @param $list LogEventsList
         * @param $types String or Array: log types to show
         * @param $performer String: the user who made the log entries
-        * @param $title String or Title: the page title the log entries are for
+        * @param $title String|Title: the page title the log entries are for
         * @param $pattern String: do a prefix search rather than an exact title match
         * @param $conds Array: extra conditions for the query
         * @param $year Integer: the year to start from
@@ -864,9 +870,9 @@ class LogPager extends ReverseChronologicalPager {
                        $this->mConds['log_user'] = $userid;
                        // Paranoia: avoid brute force searches (bug 17342)
                        $user = $this->getUser();
-                       if( !$user->isAllowed( 'deletedhistory' ) || $user->isBlocked() ) {
+                       if( !$user->isAllowed( 'deletedhistory' ) ) {
                                $this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::DELETED_USER) . ' = 0';
-                       } elseif( !$user->isAllowed( 'suppressrevision' ) || $user->isBlocked() ) {
+                       } elseif( !$user->isAllowed( 'suppressrevision' ) ) {
                                $this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::SUPPRESSED_USER) .
                                        ' != ' . LogPage::SUPPRESSED_USER;
                        }
@@ -918,9 +924,9 @@ class LogPager extends ReverseChronologicalPager {
                }
                // Paranoia: avoid brute force searches (bug 17342)
                $user = $this->getUser();
-               if( !$user->isAllowed( 'deletedhistory' ) || $user->isBlocked() ) {
+               if( !$user->isAllowed( 'deletedhistory' ) ) {
                        $this->mConds[] = $db->bitAnd('log_deleted', LogPage::DELETED_ACTION) . ' = 0';
-               } elseif( !$user->isAllowed( 'suppressrevision' ) || $user->isBlocked() ) {
+               } elseif( !$user->isAllowed( 'suppressrevision' ) ) {
                        $this->mConds[] = $db->bitAnd('log_deleted', LogPage::SUPPRESSED_ACTION) .
                                ' != ' . LogPage::SUPPRESSED_ACTION;
                }