MediaWiki r40769 - Code Review

Jump to: navigation, search
Repository:MediaWiki
Revision:r40768‎ | r40769 (on ViewVC)‎ | r40770 >
Date:00:29, 13 September 2008
Author:aaron
Status:old
Tags:
Comment:
Add newuser log to core
Modified paths:

Diff [purge]

Index: trunk/phase3/includes/User.php
===================================================================
--- trunk/phase3/includes/User.php	(revision 40768)
+++ trunk/phase3/includes/User.php	(revision 40769)
@@ -3194,4 +3194,41 @@
 			return self::oldCrypt( $password, $userId ) === $hash;
 		}
 	}
+	
+	/**
+	 * Add a newuser log entry for this user
+	 * @param bool $byEmail, account made by email?
+	 */
+	public function addNewUserLogEntry( $byEmail = false ) {
+		global $wgUser, $wgContLang, $wgNewUserLog;
+		if( empty($wgNewUserLog) ) {
+			return true; // disabled
+		}
+		$talk = $wgContLang->getFormattedNsText( NS_TALK );
+		if( $this->getName() == $wgUser->getName() ) {
+			$action = 'create';
+			$message = '';
+		} else {
+			$action = 'create2';
+			$message = $byEmail ? wfMsgForContent( 'newuserlog-byemail' ) : '';
+		}
+		$log = new LogPage( 'newusers' );
+		$log->addEntry( $action, $this->getUserPage(), $message, array( $this->getId() ) );
+		return true;
+	}
+
+	/**
+	 * Add an autocreate newuser log entry for this user
+	 * Used by things like CentralAuth and perhaps other authplugins.
+	 */
+	public static function addNewUserLogEntryAutoCreate() {
+		global $wgNewUserLog;
+		if( empty($wgNewUserLog) ) {
+			return true; // disabled
+		}
+		$log = new LogPage( 'newusers', false );
+		$log->addEntry( 'autocreate', $this->getUserPage(), '', array( $this->getId() ) );
+		return true;
+	}
+
 }
Index: trunk/phase3/includes/Setup.php
===================================================================
--- trunk/phase3/includes/Setup.php	(revision 40768)
+++ trunk/phase3/includes/Setup.php	(revision 40769)
@@ -315,6 +315,16 @@
 wfRunHooks( 'LogPageLogHeader', array( &$wgLogHeaders ) );
 wfRunHooks( 'LogPageActionText', array( &$wgLogActions ) );
 
+if( !empty($wgNewUserLog) ) {
+	# Add a new log type
+	$wgLogTypes[]                        = 'newusers';
+	$wgLogNames['newusers']              = 'newuserlogpage';
+	$wgLogHeaders['newusers']            = 'newuserlogpagetext';
+	$wgLogActions['newusers/newusers']   = 'newuserlogentry'; // For compatibility with older log entries
+	$wgLogActions['newusers/create']     = 'newuserlog-create-entry';
+	$wgLogActions['newusers/create2']    = 'newuserlog-create2-entry';
+	$wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry';
+}
 
 wfDebug( "Fully initialised\n" );
 $wgFullyInitialised = true;
Index: trunk/phase3/includes/LogEventsList.php
===================================================================
--- trunk/phase3/includes/LogEventsList.php	(revision 40768)
+++ trunk/phase3/includes/LogEventsList.php	(revision 40769)
@@ -279,10 +279,22 @@
 				$revert = '(' . $this->skin->makeKnownLinkObj( $revdel, $this->message['revdel-restore'], 
 					'target=' . $title->getPrefixedUrl() . $logParams ) . ')';
 			}
+		// Self-created users
+		} else if( self::typeAction($row,'newusers','create2') ) {
+			if( isset( $paramArray[0] ) ) {
+				$revert = $this->skin->userToolLinks( $paramArray[0], $title->getDBkey(), true );
+			} else {
+				# Fall back to a blue contributions link
+				$revert = $this->skin->userToolLinks( 1, $title->getDBkey() );
+			}
+			if( $time < '20080129000000' ) {
+				# Suppress $comment from old entries (before 2008-01-29), not needed and can contain incorrect links
+				$comment = '';
+			}
+		// Do nothing. The implementation is handled by the hook modifiying the passed-by-ref parameters.
 		} else {
 			wfRunHooks( 'LogLine', array( $row->log_type, $row->log_action, $title, $paramArray,
 				&$comment, &$revert, $row->log_timestamp ) );
-			// Do nothing. The implementation is handled by the hook modifiying the passed-by-ref parameters.
 		}
 		// Event description
 		if( self::isDeleted($row,LogPage::DELETED_ACTION) ) {
Index: trunk/phase3/includes/DefaultSettings.php
===================================================================
--- trunk/phase3/includes/DefaultSettings.php	(revision 40768)
+++ trunk/phase3/includes/DefaultSettings.php	(revision 40769)
@@ -2748,6 +2748,11 @@
 $wgLogActionsHandlers = array();
 
 /**
+ * Maintain a log of newusers at Log/newusers?
+ */
+$wgNewUserLog = true;
+
+/**
  * List of special pages, followed by what subtitle they should go under
  * at Special:SpecialPages
  */
Index: trunk/phase3/includes/specials/SpecialUserlogin.php
===================================================================
--- trunk/phase3/includes/specials/SpecialUserlogin.php	(revision 40768)
+++ trunk/phase3/includes/specials/SpecialUserlogin.php	(revision 40769)
@@ -129,6 +129,7 @@
 		$result = $this->mailPasswordInternal( $u, false, 'createaccount-title', 'createaccount-text' );
 
 		wfRunHooks( 'AddNewAccount', array( $u, true ) );
+		$u->addNewUserLogEntry();
 
 		$wgOut->setPageTitle( wfMsg( 'accmailtitle' ) );
 		$wgOut->setRobotPolicy( 'noindex,nofollow' );
@@ -182,6 +183,7 @@
 			$wgUser = $u;
 			$wgUser->setCookies();
 			wfRunHooks( 'AddNewAccount', array( $wgUser ) );
+			$wgUser->addNewUserLogEntry();
 			if( $this->hasSessionCookie() ) {
 				return $this->successfulCreation();
 			} else {
@@ -197,6 +199,7 @@
 			$wgOut->addHtml( wfMsgWikiHtml( 'accountcreatedtext', $u->getName() ) );
 			$wgOut->returnToMain( false, $self );
 			wfRunHooks( 'AddNewAccount', array( $u ) );
+			$u->addNewUserLogEntry();
 			return true;
 		}
 	}
Index: trunk/phase3/languages/messages/MessagesEn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEn.php	(revision 40768)
+++ trunk/phase3/languages/messages/MessagesEn.php	(revision 40769)
@@ -2107,6 +2107,16 @@
 'listusers-submit'   => 'Show',
 'listusers-noresult' => 'No user found.',
 
+# New user log
+'newuserlogpage'              => 'User creation log',
+'newuserlogpagetext'          => 'This is a log of user creations.',
+'newuserlog-desc'             => 'Adds a [[Special:Log/newusers|log of account creations]]',
+'newuserlogentry'             => '', # For compatibility, do not translate this
+'newuserlog-byemail'          => 'password sent by e-mail',
+'newuserlog-create-entry'     => 'New user',
+'newuserlog-create2-entry'    => 'created account for $1',
+'newuserlog-autocreate-entry' => 'Account created automatically',
+
 # Special:ListGroupRights
 'listgrouprights'                 => 'User group rights',
 'listgrouprights-summary'         => 'The following is a list of user groups defined on this wiki, with their associated access rights.
Index: trunk/extensions/Newuserlog/Newuserlog.php
===================================================================
--- trunk/extensions/Newuserlog/Newuserlog.php	(revision 40768)
+++ trunk/extensions/Newuserlog/Newuserlog.php	(revision 40769)
@@ -1,5 +1,5 @@
 <?php
-if (!defined('MEDIAWIKI')) die();
+if( !defined('MEDIAWIKI') ) die();
 /**
  * Add a new log to Special:Log that displays account creations in reverse
  * chronological order using the AddNewAccount hook
@@ -21,22 +21,26 @@
 	'author'         => 'Ævar Arnfjörð Bjarmason'
 );
 
-$wgExtensionMessagesFiles['Newuserlog'] = dirname(__FILE__) . '/Newuserlog.i18n.php';
+if( isset($wgNewUserLog) ) {
+	echo( "You must remove the newuserlog extension, as it is now in the core software!\n" );
+} else {
+	# Run this hook on new account creation
+	$wgHooks['AddNewAccount'][] = 'wfNewuserlogHook';
+	$wgHooks['AuthPluginAutoCreate'][] = 'wfNewuserlogAutoCreate';
+	# Run this hook on Special:Log
+	$wgHooks['LogLine'][] = 'wfNewuserlogLogLine';
+	# Set message file
+	$wgExtensionMessagesFiles['Newuserlog'] = dirname(__FILE__) . '/Newuserlog.i18n.php';
+	# Add a new log type
+	$wgLogTypes[]                      = 'newusers';
+	$wgLogNames['newusers']            = 'newuserlogpage';
+	$wgLogHeaders['newusers']          = 'newuserlogpagetext';
+	$wgLogActions['newusers/newusers'] = 'newuserlogentry'; // For compatibility with older log entries
+	$wgLogActions['newusers/create']   = 'newuserlog-create-entry';
+	$wgLogActions['newusers/create2']  = 'newuserlog-create2-entry';
+	$wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry';
+}
 
-# Add a new log type
-$wgLogTypes[]                      = 'newusers';
-$wgLogNames['newusers']            = 'newuserlogpage';
-$wgLogHeaders['newusers']          = 'newuserlogpagetext';
-$wgLogActions['newusers/newusers'] = 'newuserlogentry'; // For compatibility with older log entries
-$wgLogActions['newusers/create']   = 'newuserlog-create-entry';
-$wgLogActions['newusers/create2']  = 'newuserlog-create2-entry';
-$wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry';
-# Run this hook on new account creation
-$wgHooks['AddNewAccount'][] = 'wfNewuserlogHook';
-$wgHooks['AuthPluginAutoCreate'][] = 'wfNewuserlogAutoCreate';
-# Run this hook on Special:Log
-$wgHooks['LogLine'][] = 'wfNewuserlogLogLine';
-
 function wfNewuserlogHook( $user = null, $byEmail = false ) {
 	global $wgUser, $wgContLang;
 
@@ -80,7 +84,9 @@
  * @param string $time timestamp of the log entry
  * @return bool true
  */
-function wfNewuserlogLogLine( $log_type = '', $log_action = '', $title = null, $paramArray = array(), &$comment = '', &$revert = '', $time = '' ) {
+function wfNewuserlogLogLine( $log_type = '', $log_action = '', $title = null, $paramArray = array(), 
+	&$comment = '', &$revert = '', $time = '' ) 
+{
 	if ( $log_action == 'create2' ) {
 		global $wgUser;
 		$skin = $wgUser->getSkin();
Index: trunk/extensions/CentralAuth/CentralAuthHooks.php
===================================================================
--- trunk/extensions/CentralAuth/CentralAuthHooks.php	(revision 40768)
+++ trunk/extensions/CentralAuth/CentralAuthHooks.php	(revision 40769)
@@ -393,6 +393,7 @@
 
 		# Notify hooks (e.g. Newuserlog)
 		wfRunHooks( 'AuthPluginAutoCreate', array( $user ) );
+		$user->addNewUserLogEntryAutoCreate();
 		return true;
 	}
 
Index: trunk/extensions/ConfirmAccount/ConfirmAccount_body.php
===================================================================
--- trunk/extensions/ConfirmAccount/ConfirmAccount_body.php	(revision 40768)
+++ trunk/extensions/ConfirmAccount/ConfirmAccount_body.php	(revision 40769)
@@ -558,6 +558,7 @@
 			
 			# Safe to hook/log now...
 			wfRunHooks( 'AddNewAccount', array( $user ) );
+			$user->addNewUserLogEntry();
 			# OK, now remove the request from the queue
 			$dbw->delete( 'account_requests', array('acr_id' => $this->acrID), __METHOD__ );
 			# Clear cache for notice of how many account requests there are

Follow-up revisions

Rev.Commit summaryAuthorDate
r40777* add OBSOLETE to Newuserlog. Was added to core in MediaWiki 1.14alpha r40769...siebrand08:11, 13 September 2008
r40779Cleanup after r40723, r40769, and r40770. C'mon guys. Messages need to be reg...siebrand08:32, 13 September 2008
Personal tools
Namespaces
Variants
Views
Actions
Site
Support
Download
Development
Communication
Toolbox