X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2FLogEventsList.php;h=dd20d50ac0f71810ec9bdb78c40669ef7a53ccb9;hb=b29514b0b3f71e4794e8d9810b20911f3ff420db;hp=37502f43f50b6ced616c26ed4b4d09a2685142d3;hpb=a780a43df9fa195c80cec9044adf204e485a3d95;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/LogEventsList.php b/includes/LogEventsList.php index 37502f43f5..dd20d50ac0 100644 --- a/includes/LogEventsList.php +++ b/includes/LogEventsList.php @@ -1,21 +1,27 @@ , 2008 Aaron Schulz -# http://www.mediawiki.org/ -# -# 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 +/** + * Contain classes to list log entries + * + * Copyright © 2004 Brion Vibber , 2008 Aaron Schulz + * http://www.mediawiki.org/ + * + * 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 + */ class LogEventsList { const NO_ACTION_LINK = 1; @@ -41,7 +47,7 @@ class LogEventsList { if( !isset( $this->message ) ) { $messages = array( 'revertmerge', 'protect_change', 'unblocklink', 'change-blocklink', 'revertmove', 'undeletelink', 'undeleteviewlink', 'revdel-restore', 'hist', 'diff', - 'pipe-separator' ); + 'pipe-separator', 'revdel-restore-deleted', 'revdel-restore-visible' ); foreach( $messages as $msg ) { $this->message[$msg] = wfMsgExt( $msg, array( 'escapenoentities' ) ); } @@ -65,6 +71,7 @@ class LogEventsList { /** * Show options for the log list + * * @param $types string or Array * @param $user String * @param $page String @@ -107,7 +114,7 @@ class LogEventsList { // Tag filter if ($tagSelector) { - $html .= Xml::tags( 'p', null, implode( ' ', $tagSelector ) ); + $html .= Xml::tags( 'p', null, implode( ' ', $tagSelector ) ); } // Filter links @@ -199,6 +206,14 @@ class LogEventsList { // Note the query type $queryType = count($queryTypes) == 1 ? $queryTypes[0] : ''; + + // Always put "All public logs" on top + if ( isset( $typesByName[''] ) ) { + $all = $typesByName['']; + unset( $typesByName[''] ); + $typesByName = array( '' => $all ) + $typesByName; + } + // Third pass generates sorted XHTML content foreach( $typesByName as $type => $text ) { $selected = ($type == $queryType); @@ -348,7 +363,7 @@ class LogEventsList { // @TODO: split up! private function logActionLinks( $row, $title, $paramArray, &$comment ) { - global $wgUser, $wgLang; + global $wgUser; if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the action || self::isDeleted( $row, LogPage::DELETED_ACTION ) ) // action is hidden { @@ -430,7 +445,7 @@ class LogEventsList { // Show unmerge link } else if( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) { $revert = '(' . $this->skin->link( - SpecialPage::getTitleFor( 'Mergehistory' ), + SpecialPage::getTitleFor( 'MergeHistory' ), $this->message['revertmerge'], array(), array( @@ -442,57 +457,8 @@ class LogEventsList { ) . ')'; // If an edit was hidden from a page give a review link to the history } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) { - if( count($paramArray) >= 2 ) { - // Different revision types use different URL params... - $key = $paramArray[0]; - // $paramArray[1] is a CSV of the IDs - $Ids = explode( ',', $paramArray[1] ); - $query = $paramArray[1]; - $revert = array(); - // Diff link for single rev deletions - if( count($Ids) == 1 ) { - // Live revision diffs... - if( in_array( $key, array( 'oldid', 'revision' ) ) ) { - $revert[] = $this->skin->link( - $title, - $this->message['diff'], - array(), - array( - 'diff' => intval( $Ids[0] ), - 'unhide' => 1 - ), - array( 'known', 'noclasses' ) - ); - // Deleted revision diffs... - } else if( in_array( $key, array( 'artimestamp','archive' ) ) ) { - $revert[] = $this->skin->link( - SpecialPage::getTitleFor( 'Undelete' ), - $this->message['diff'], - array(), - array( - 'target' => $title->getPrefixedDBKey(), - 'diff' => 'prev', - 'timestamp' => $Ids[0] - ), - array( 'known', 'noclasses' ) - ); - } - } - // View/modify link... - $revert[] = $this->skin->link( - SpecialPage::getTitleFor( 'Revisiondelete' ), - $this->message['revdel-restore'], - array(), - array( - 'target' => $title->getPrefixedText(), - 'type' => $key, - 'ids' => $query - ), - array( 'known', 'noclasses' ) - ); - // Pipe links - $revert = wfMsg( 'parentheses', $wgLang->pipeList( $revert ) ); - } + $revert = RevisionDeleter::getLogLinks( $title, $paramArray, + $this->skin, $this->message ); // Hidden log items, give review link } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'event', 'deletedhistory' ) ) { if( count($paramArray) >= 1 ) { @@ -577,7 +543,7 @@ class LogEventsList { * @param $type Mixed: string/array * @param $action Mixed: string/array * @param $right string - * @return bool + * @return Boolean */ public static function typeAction( $row, $type, $action, $right='' ) { $match = is_array($type) ? @@ -596,6 +562,7 @@ class LogEventsList { /** * Determine if the current user is allowed to view a particular * field of this log row, if it's marked as deleted. + * * @param $row Row * @param $field Integer * @return Boolean @@ -603,10 +570,11 @@ class LogEventsList { public static function userCan( $row, $field ) { return self::userCanBitfield( $row->log_deleted, $field ); } - + /** * Determine if the current user is allowed to view a particular * field of this log row, if it's marked as deleted. + * * @param $bitfield Integer (current field) * @param $field Integer * @return Boolean @@ -638,6 +606,7 @@ class LogEventsList { /** * Show log extract. Either with text and a box (set $msgKey) or without (don't set $msgKey) + * * @param $out OutputPage or String-by-reference * @param $types String or Array * @param $page String The page title to show log entries for @@ -747,9 +716,10 @@ class LogEventsList { /** * SQL clause to skip forbidden log types for this user + * * @param $db Database * @param $audience string, public/user - * @return mixed (string or false) + * @return Mixed: string or false */ public static function getExcludeClause( $db, $audience = 'public' ) { global $wgLogRestrictions, $wgUser; @@ -780,15 +750,17 @@ class LogPager extends ReverseChronologicalPager { public $mLogEventsList; /** - * constructor + * Constructor + * * @param $list LogEventsList - * @param $types String or Array log types to show - * @param $user String The user who made the log entries - * @param $title String 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 - * @param $month Integer The month to start from + * @param $types String or Array: log types to show + * @param $user String: the user who made the log entries + * @param $title String: 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 + * @param $month Integer: the month to start from + * @param $tagFilter String: tag */ public function __construct( $list, $types = array(), $user = '', $title = '', $pattern = '', $conds = array(), $year = false, $month = false, $tagFilter = '' ) @@ -836,6 +808,7 @@ class LogPager extends ReverseChronologicalPager { /** * Set the log reader to return only entries of the given type. * Type restrictions enforced here + * * @param $types String or array: Log types ('upload', 'delete', etc); * empty string means no restriction */ @@ -868,6 +841,7 @@ class LogPager extends ReverseChronologicalPager { /** * Set the log reader to return only entries by the given user. + * * @param $name String: (In)valid user name */ private function limitUser( $name ) { @@ -901,6 +875,7 @@ class LogPager extends ReverseChronologicalPager { /** * Set the log reader to return only entries affecting the given page. * (For the block and rights logs, this is a user page.) + * * @param $page String: Title name as text * @param $pattern String */ @@ -944,7 +919,6 @@ class LogPager extends ReverseChronologicalPager { } public function getQueryInfo() { - global $wgOut; $tables = array( 'logging', 'user' ); $this->mConds[] = 'user_id = log_user'; $index = array(); @@ -1055,6 +1029,7 @@ class LogPager extends ReverseChronologicalPager { */ class LogReader { var $pager; + /** * @param $request WebRequest: for internal use use a FauxRequest object to pass arbitrary parameters. */ @@ -1119,6 +1094,7 @@ class LogViewer { * Take over the whole output page in $wgOut with the log display. */ public function show() { + global $wgOut; # Set title and add header $this->list->showHeader( $pager->getType() ); # Show form options @@ -1143,6 +1119,7 @@ class LogViewer { * Output just the list of entries given by the linked LogReader, * with extraneous UI elements. Use for displaying log fragments in * another page (eg at Special:Undelete) + * * @param $out OutputPage: where to send output */ public function showList( &$out ) {