Merge pull request #7 from jacob-g/master

Added a few fixes, including detection of Scratch Team members
This commit is contained in:
Sarah Otts 2016-01-12 09:42:42 -06:00
commit b585046ae5
6 changed files with 134 additions and 84 deletions

View file

@ -1,7 +1,8 @@
<?php <?php
/*
(c) Aaron Schulz 2007, GPL
/*
(c) Aaron Schulz 2007, GPL
This program is free software; you can redistribute it and/or modify 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 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
@ -16,6 +17,7 @@
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
http://www.gnu.org/copyleft/gpl.html http://www.gnu.org/copyleft/gpl.html
*/ */
if ( !defined( 'MEDIAWIKI' ) ) { if ( !defined( 'MEDIAWIKI' ) ) {
@ -36,9 +38,11 @@ require( dirname( __FILE__ ) . '/ConfirmAccount.config.php' );
# Define were PHP files and i18n files are located # Define were PHP files and i18n files are located
require( dirname( __FILE__ ) . '/ConfirmAccount.setup.php' ); require( dirname( __FILE__ ) . '/ConfirmAccount.setup.php' );
ConfirmAccountSetup::defineSourcePaths( $wgAutoloadClasses, $wgExtensionMessagesFiles ); ConfirmAccountSetup::defineSourcePaths( $wgAutoloadClasses, $wgExtensionMessagesFiles );
# Define JS/CSS modules and file locations # Define JS/CSS modules and file locations
require( dirname( __FILE__ ) . '/frontend/ConfirmAccountUI.setup.php' );
ConfirmAccountUISetup::defineResourceModules( $wgResourceModules ); ConfirmAccountUISetup::defineResourceModules( $wgResourceModules );
# Let some users confirm account requests and view credentials for created accounts # Let some users confirm account requests and view credentials for created accounts
@ -66,16 +70,22 @@ $wgHooks['LoadExtensionSchemaUpdates'][] = 'ConfirmAccountUpdaterHooks::addSchem
$wgExtensionFunctions[] = 'efLoadConfirmAccount'; $wgExtensionFunctions[] = 'efLoadConfirmAccount';
/** /**
* This function is for setup that has to happen in Setup.php * This function is for setup that has to happen in Setup.php
* when the functions in $wgExtensionFunctions get executed. * when the functions in $wgExtensionFunctions get executed.
* @return void * @return void
*/ */
function efLoadConfirmAccount() { function efLoadConfirmAccount() {
global $wgEnableEmail; global $wgEnableEmail;
# This extension needs email enabled! # This extension needs email enabled!
# Otherwise users can't get their passwords... # Otherwise users can't get their passwords...
if ( !$wgEnableEmail ) {
/*if ( !$wgEnableEmail ) {
echo "ConfirmAccount extension requires \$wgEnableEmail set to true.\n"; echo "ConfirmAccount extension requires \$wgEnableEmail set to true.\n";
exit( 1 ) ; exit( 1 ) ;
}*/
} }
}

View file

@ -294,10 +294,10 @@ class AccountConfirmSubmission {
} }
# Actually send out the email (@TODO: rollback on failure including $wgAuth) # Actually send out the email (@TODO: rollback on failure including $wgAuth)
$result = $user->sendMail( /*$result = $user->sendMail(
$context->msg( 'confirmaccount-email-subj' )->inContentLanguage()->text(), $context->msg( 'confirmaccount-email-subj' )->inContentLanguage()->text(),
$ebody $ebody
); );*/
# Update user count # Update user count
$ssUpdate = new SiteStatsUpdate( 0, 0, 0, 0, 1 ); $ssUpdate = new SiteStatsUpdate( 0, 0, 0, 0, 1 );

View file

@ -112,7 +112,7 @@ class AccountRequestSubmission {
return; return;
} }
$success = false; $success = false;
preg_match_all('%<div id="comments-\d+" class="comment +" data-comment-id="\d+">.*?<div class="actions-wrap">.*?<div class="name">\s+<a href="/users/(([a-zA-Z0-9]|-|_)+)">(([a-zA-Z0-9]|-|_)+)</a>\s+</div>\s+<div class="content">(.*?)</div>%ms', $data, $matches); preg_match_all('%<div id="comments-\d+" class="comment +" data-comment-id="\d+">.*?<div class="actions-wrap">.*?<div class="name">\s+<a href="/users/(([a-zA-Z0-9]|-|_)+)">(([a-zA-Z0-9]|-|_|\*)+)</a>\s+</div>\s+<div class="content">(.*?)</div>%ms', $data, $matches);
unset($matches[2]); unset($matches[2]);
unset($matches[3]); unset($matches[3]);
unset($matches[4]); unset($matches[4]);

View file

@ -135,6 +135,8 @@ There may be contact lists on site that you can use if you want to know more abo
$2 $2
There may be contact lists on site that you can use if you want to know more about user account policy.', There may be contact lists on site that you can use if you want to know more about user account policy.',
'confirmaccount-altwarning' => 'The following accounts have made edits from the same IP address as this user:',
'confirmaccount-warning' => 'Warning',
); );

View file

@ -1123,6 +1123,15 @@ Este código de confirmación caducará el $4.',
La dirección de correo electrónico ha sido confirmada. Puedes confirmar la solicitud aquí "$2".', La dirección de correo electrónico ha sido confirmada. Puedes confirmar la solicitud aquí "$2".',
'acct_request_throttle_hit' => 'Perdón, ya has solicitado {{PLURAL:$1|1 cuenta|$1 cuentas}}. 'acct_request_throttle_hit' => 'Perdón, ya has solicitado {{PLURAL:$1|1 cuenta|$1 cuentas}}.
No puedes hacer ninguna otra solicitud.', No puedes hacer ninguna otra solicitud.',
//Scratch-specific stuff
'requestaccount-user-verification' => 'Verificion de usuario',
'requestaccount-code-troubleshoot' => '\'\'\'Aviso:\'\'\' Si tienes problemas con el sistema de verificacion, por favor lee la [[Scratch_Wiki:Become a contributor/Verification code troubleshooting|pagina de soluciones]].',
'requestaccount-set-pwd' => 'Decide la contrasena',
'requestaccount-project-info' => 'Por favor ve al [$1 proyecto de verificacion] y comenta el codigo siguiente:<br />\'\'\'$2\'\'\'',
'requestaccount-project-link' => 'http://scratch.mit.edu/projects/10135908/',
'requestaccount-nocomment-error' => 'No aparece como hayas comentado el codigo.',
'requestaccount-api-failed' => 'Estamos teniendo problemas con el servidor. Por favor trata de registrarte otra vez en un tiempo diferente.',
); );
/** Estonian (eesti) /** Estonian (eesti)

View file

@ -422,6 +422,20 @@ class ConfirmAccountsPage extends SpecialPage {
$form .= '</fieldset>'; $form .= '</fieldset>';
} }
//search for possible alt accounts
$ip = $accountReq->getIP();
$alts = $this->getUsersFromIP($ip);
if (!empty($alts)) {
foreach ($alts as &$user) {
}
$form .= '<fieldset>';
$form .= '<legend style="color:#F00; font-weight:bold">' . $this->msg('confirmaccount-warning') . '</legend>';
$form .= '<strong>' . $this->msg('confirmaccount-altwarning') . '</strong>';
$form .= '<ul><li>' . implode('</li><li>', $alts) . '</li></ul>';
$form .= '</fieldset>';
}
$form .= '<fieldset>'; $form .= '<fieldset>';
$form .= '<legend>' . $this->msg( 'confirmaccount-legend' )->escaped() . '</legend>'; $form .= '<legend>' . $this->msg( 'confirmaccount-legend' )->escaped() . '</legend>';
$form .= "<strong>" . $this->msg( 'confirmaccount-confirm' )->parse() . "</strong>\n"; $form .= "<strong>" . $this->msg( 'confirmaccount-confirm' )->parse() . "</strong>\n";
@ -746,6 +760,21 @@ class ConfirmAccountsPage extends SpecialPage {
return $r; return $r;
} }
function getUsersFromIP($ip) {
global $wgShowExceptionDetails ;
$wgShowExceptionDetails = true;
$dbr = wfGetDB( DB_SLAVE );
$result = $dbr->select('recentchanges', array('DISTINCT(rc_user_text)'), 'rc_ip=\'' . $ip . '\'');
$return = array();
foreach ($result as $row) {
$return[] = (string)$row->rc_user_text;
}
array_unique($return);
return $return;
}
} }
/** /**