X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FLogPage.php;h=6d28ba319d53be4292dbaa082df33363c6a7ede4;hb=b7db9837bf4fc1ec1ecf6bc5a030b2d59f522878;hp=f1fc55a736f06fb06afa9bf47d7203d62345bdf3;hpb=4b42f18b66e843f362e5e159d95fee9d2c26ef9c;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/LogPage.php b/includes/LogPage.php index f1fc55a736..6d28ba319d 100644 --- a/includes/LogPage.php +++ b/includes/LogPage.php @@ -2,17 +2,17 @@ # # Copyright (C) 2002, 2004 Brion Vibber # 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 +# 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., # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. @@ -32,12 +32,21 @@ * @package MediaWiki */ class LogPage { - /* private */ var $type, $action, $comment; - var $updateRecentChanges = true; + /* @access private */ + var $type, $action, $comment, $params, $target; + /* @acess public */ + var $updateRecentChanges; - function LogPage( $type ) { - # Type is one of 'block', 'protect', 'rights', 'delete', 'upload' + /** + * Constructor + * + * @param string $type One of '', 'block', 'protect', 'rights', 'delete', + * 'upload', 'move' + * @param bool $rc Whether to update recent changes as well as the logging table + */ + function LogPage( $type, $rc = true ) { $this->type = $type; + $this->updateRecentChanges = $rc; } function saveContent() { @@ -58,17 +67,22 @@ class LogPage { 'log_user' => $uid, 'log_namespace' => $this->target->getNamespace(), 'log_title' => $this->target->getDBkey(), - 'log_comment' => $this->comment + 'log_comment' => $this->comment, + 'log_params' => $this->params ), $fname ); - + # And update recentchanges if ( $this->updateRecentChanges ) { + $titleObj = Title::makeTitle( NS_SPECIAL, 'Log/' . $this->type ); $rcComment = $this->actionText; if( '' != $this->comment ) { - $rcComment .= ': ' . $this->comment; + if ($rcComment == '') + $rcComment = $this->comment; + else + $rcComment .= ': ' . $this->comment; } - $titleObj = Title::makeTitle( NS_SPECIAL, 'Log/' . $this->type ); + RecentChange::notifyLog( $now, $titleObj, $wgUser, $rcComment ); } return true; @@ -78,32 +92,18 @@ class LogPage { * @static */ function validTypes() { - static $types = array( '', 'block', 'protect', 'rights', 'delete', 'upload' ); + static $types = array( '', 'block', 'protect', 'rights', 'delete', 'upload', 'move' ); + wfRunHooks( 'LogPageValidTypes', array( &$types ) ); return $types; } - - /** - * @static - */ - function validActions( $type ) { - static $actions = array( - '' => NULL, - 'block' => array( 'block', 'unblock' ), - 'protect' => array( 'protect', 'unprotect' ), - 'rights' => array( 'rights' ), - 'delete' => array( 'delete', 'restore' ), - 'upload' => array( 'upload' ) - ); - return $actions[$type]; - } - + /** * @static */ function isLogType( $type ) { return in_array( $type, LogPage::validTypes() ); } - + /** * @static */ @@ -115,10 +115,13 @@ class LogPage { 'rights' => 'bureaucratlog', 'delete' => 'dellogpage', 'upload' => 'uploadlogpage', + 'move' => 'movelogpage' ); + wfRunHooks( 'LogPageLogName', array( &$typeText ) ); + return str_replace( '_', ' ', wfMsg( $typeText[$type] ) ); } - + /** * @static */ @@ -127,58 +130,121 @@ class LogPage { '' => 'alllogstext', 'block' => 'blocklogtext', 'protect' => 'protectlogtext', - 'rights' => '', + 'rights' => 'rightslogtext', 'delete' => 'dellogpagetext', - 'upload' => 'uploadlogpagetext' + 'upload' => 'uploadlogpagetext', + 'move' => 'movelogpagetext' ); + wfRunHooks( 'LogPageLogHeader', array( &$headerText ) ); + return wfMsg( $headerText[$type] ); } - + /** * @static */ - function actionText( $type, $action, $titleLink = NULL ) { + function actionText( $type, $action, $title = NULL, $skin = NULL, $params = array(), $filterWikilinks=false, $translate=false ) { + global $wgLang; static $actions = array( - 'block/block' => 'blocklogentry', - 'block/unblock' => 'blocklogentry', - 'protect/protect' => 'protectedarticle', + 'block/block' => 'blocklogentry', + 'block/unblock' => 'unblocklogentry', + 'protect/protect' => 'protectedarticle', 'protect/unprotect' => 'unprotectedarticle', - 'rights/rights' => 'bureaucratlogentry', - 'delete/delete' => 'deletedarticle', - 'delete/restore' => 'undeletedarticle', - 'upload/upload' => 'uploadedimage', - 'upload/revert' => 'uploadedimage', + + // TODO: This whole section should be moved to extensions/Makesysop/SpecialMakesysop.php + 'rights/rights' => 'bureaucratlogentry', + 'rights/addgroup' => 'addgrouplogentry', + 'rights/rngroup' => 'renamegrouplogentry', + 'rights/chgroup' => 'changegrouplogentry', + + 'delete/delete' => 'deletedarticle', + 'delete/restore' => 'undeletedarticle', + 'upload/upload' => 'uploadedimage', + 'upload/revert' => 'uploadedimage', + 'move/move' => '1movedto2', + 'move/move_redir' => '1movedto2_redir' ); + wfRunHooks( 'LogPageActionText', array( &$actions ) ); + $key = "$type/$action"; if( isset( $actions[$key] ) ) { - if( is_null( $titleLink ) ) { - return wfMsg( $actions[$key] ); + if( is_null( $title ) ) { + $rv=wfMsg( $actions[$key] ); } else { - return wfMsg( $actions[$key], $titleLink ); + if( $skin ) { + if ( $type == 'move' ) { + $titleLink = $skin->makeLinkObj( $title, $title->getPrefixedText(), 'redirect=no' ); + // Change $param[0] into a link to the title specified in $param[0] + $movedTo = Title::newFromText( $params[0] ); + $params[0] = $skin->makeLinkObj( $movedTo, $params[0] ); + } else { + $titleLink = $skin->makeLinkObj( $title ); + } + } else { + $titleLink = $title->getPrefixedText(); + } + if( count( $params ) == 0 ) { + $rv = wfMsg( $actions[$key], $titleLink ); + } else { + array_unshift( $params, $titleLink ); + if ( $translate && $key == 'block/block' ) { + $params[1] = $wgLang->translateBlockExpiry($params[1]); + } + $rv = wfMsgReal( $actions[$key], $params, true, false ); // FIXME: use wfMsgForContent() ? + } } } else { wfDebug( "LogPage::actionText - unknown action $key\n" ); - return "$action $titleLink"; + $rv = "$action"; + } + if( $filterWikilinks ) { + $rv = str_replace( "[[", "", $rv ); + $rv = str_replace( "]]", "", $rv ); } + return $rv; } /** * Add a log entry - * @param string $action one of 'block', 'protect', 'rights', 'delete', 'upload' - * @param &$target + * @param string $action one of '', 'block', 'protect', 'rights', 'delete', 'upload', 'move', 'move_redir' + * @param object &$target A title object. * @param string $comment Description associated + * @param array $params Parameters passed later to wfMsg.* functions */ - function addEntry( $action, &$target, $comment ) { - global $wgLang, $wgUser; - + function addEntry( $action, &$target, $comment, $params = array() ) { + if ( !is_array( $params ) ) { + $params = array( $params ); + } + $this->action = $action; $this->target =& $target; $this->comment = $comment; - $this->actionText = LogPage::actionText( $this->type, $action, - $target->getPrefixedText() ); - + $this->params = LogPage::makeParamBlob( $params ); + + $this->actionText = LogPage::actionText( $this->type, $action, $target, NULL, $params ); + return $this->saveContent(); } + + /** + * Create a blob from a parameter array + * @static + */ + function makeParamBlob( $params ) { + return implode( "\n", $params ); + } + + /** + * Extract a parameter array from a blob + * @static + */ + function extractParams( $blob ) { + if ( $blob === '' ) { + return array(); + } else { + return explode( "\n", $blob ); + } + } } ?>