diff --git a/includes/NewSignupPage.class.php b/includes/NewSignupPage.class.php
index d97b28c..2cd947e 100644
--- a/includes/NewSignupPage.class.php
+++ b/includes/NewSignupPage.class.php
@@ -1,4 +1,5 @@
getTitle();
+ /**
+ * Add the JavaScript file to the page output on the signup page.
+ *
+ * @param OutputPage &$out
+ * @param Skin &$skin
+ */
+ public static function onBeforePageDisplay(&$out, &$skin)
+ {
+ $title = $out->getTitle();
- // Only do our magic if we're on the signup page or login page
- // It's called Special:CreateAccount or Special:UserLogin since AuthManager (MW 1.27+)
+ // Only do our magic if we're on the signup page or login page
+ // It's called Special:CreateAccount or Special:UserLogin since AuthManager (MW 1.27+)
- // Warning: Userlogin should be all lowercased!
- if ( $title->isSpecial( 'CreateAccount' ) || $title->isSpecial( 'Userlogin' ) ) {
- $out->addModules( ['ext.newsignuppage'] );
- }
+ // Warning: Userlogin should be all lowercased!
+ if ($title->isSpecial('CreateAccount') || $title->isSpecial('Userlogin')) {
+ $out->addModules(['ext.newsignuppage']);
+ }
+ }
- }
+ /**
+ * Creates the necessary database table when the user runs
+ * maintenance/update.php, the core MediaWiki updater script, provided that
+ * the configuration specifies us to create it.
+ *
+ * @param DatabaseUpdater $updater
+ * @return bool True when we should not do anything
+ */
+ public static function onLoadExtensionSchemaUpdates($updater)
+ {
+ global $wgRegisterTrack;
- /**
- * Creates the necessary database table when the user runs
- * maintenance/update.php, the core MediaWiki updater script, provided that
- * the configuration specifies us to create it.
- *
- * @param DatabaseUpdater $updater
- * @return bool True when we should not do anything
- */
- public static function onLoadExtensionSchemaUpdates( $updater ) {
- global $wgRegisterTrack;
+ $db = $updater->getDB();
- $db = $updater->getDB();
+ if (!$db->tableExists('user_register_track') && !$wgRegisterTrack) {
+ // Table doesn't exist and shouldn't either -> bail out
+ return true;
+ }
- if ( !$db->tableExists( 'user_register_track' ) && !$wgRegisterTrack ) {
- // Table doesn't exist and shouldn't either -> bail out
- return true;
- }
-
- $dir = __DIR__ . '/../sql';
- $dbType = $db->getType();
- $file = $dir . '/user_register_track.sql';
- if ( $dbType === 'postgres' ) {
- $file = $dir . '/user_register_track.postgres.sql';
- }
-
- $updater->addExtensionTable( 'user_register_track', $file );
- }
+ $dir = __DIR__ . '/../sql';
+ $dbType = $db->getType();
+ $file = $dir . '/user_register_track.sql';
+ if ($dbType === 'postgres') {
+ $file = $dir . '/user_register_track.postgres.sql';
+ }
+ $updater->addExtensionTable('user_register_track', $file);
+ }
}
diff --git a/includes/auth/NewSignupPageAuthenticationRequest.php b/includes/auth/NewSignupPageAuthenticationRequest.php
index 55b27ef..2852c14 100644
--- a/includes/auth/NewSignupPageAuthenticationRequest.php
+++ b/includes/auth/NewSignupPageAuthenticationRequest.php
@@ -7,71 +7,75 @@ use MediaWiki\Auth\AuthenticationRequest;
* @since MediaWiki 1.27
* @phan-file-suppress PhanTypeMismatchReturn It appears that phan seems to hate the retval of getFieldInfo()...
*/
-class NewSignupPageAuthenticationRequest extends AuthenticationRequest {
- public $required = self::REQUIRED; // only ToS check is mandatory
+class NewSignupPageAuthenticationRequest extends AuthenticationRequest
+{
+ public $required = self::REQUIRED; // only ToS check is mandatory
- /**
- * @var int Email invitation source identifier to be stored in the
- * user_email_track table
- * @see /extensions/MiniInvite/includes/UserEmailTrack.class.php for details
- */
- public $from;
+ /**
+ * @var int Email invitation source identifier to be stored in the
+ * user_email_track table
+ * @see /extensions/MiniInvite/includes/UserEmailTrack.class.php for details
+ */
+ public $from;
- /**
- * @var string|int Username of the person who referred the user creating an
- * account to the wiki; used to give out points to the referring user and
- * also automatically friend them and the new user if that configuration
- * setting is enabled
- */
- public $referral;
+ /**
+ * @var string|int Username of the person who referred the user creating an
+ * account to the wiki; used to give out points to the referring user and
+ * also automatically friend them and the new user if that configuration
+ * setting is enabled
+ */
+ public $referral;
- /**
- * @var bool Was the "I agree to the terms of service"
- * checkbox checked? It must be in order for the account creation process
- * to continue.
- */
- public $wpTermsOfService;
+ /**
+ * @var bool Was the "I agree to the terms of service"
+ * checkbox checked? It must be in order for the account creation process
+ * to continue.
+ */
+ public $wpTermsOfService;
- /** @var WebRequest */
- public $request;
+ /** @var WebRequest */
+ public $request;
- /**
- * @param WebRequest $request
- */
- public function __construct( $request ) {
- $this->request = $request;
- }
+ /**
+ * @param WebRequest $request
+ */
+ public function __construct($request)
+ {
+ $this->request = $request;
+ }
- /** @inheritDoc */
- public function getFieldInfo() {
- global $wgNewSignupPageToSURL, $wgNewSignupPagePPURL;
- return [
- 'from' => [
- 'type' => 'hidden',
- 'optional' => true,
- 'value' => $this->request->getInt( 'from' )
- ],
- 'referral' => [
- 'type' => 'hidden',
- 'optional' => true,
- 'value' => $this->request->getVal( 'referral' )
- ],
- 'wpTermsOfService' => [
- 'type' => 'checkbox',
- 'label' => wfMessage(
- 'newsignuppage-loginform-tos',
- $wgNewSignupPageToSURL,
- $wgNewSignupPagePPURL
- )
- ]
- ];
- }
+ /** @inheritDoc */
+ public function getFieldInfo()
+ {
+ global $wgNewSignupPageToSURL, $wgNewSignupPagePPURL;
+ return [
+ 'from' => [
+ 'type' => 'hidden',
+ 'optional' => true,
+ 'value' => $this->request->getInt('from')
+ ],
+ 'referral' => [
+ 'type' => 'hidden',
+ 'optional' => true,
+ 'value' => $this->request->getVal('referral')
+ ],
+ 'wpTermsOfService' => [
+ 'type' => 'checkbox',
+ 'label' => wfMessage(
+ 'newsignuppage-loginform-tos',
+ $wgNewSignupPageToSURL,
+ $wgNewSignupPagePPURL
+ )
+ ]
+ ];
+ }
- /** @inheritDoc */
- public function loadFromSubmission( array $data ) {
- // We always want to use this request, so ignore parent's return value.
- parent::loadFromSubmission( $data );
+ /** @inheritDoc */
+ public function loadFromSubmission(array $data)
+ {
+ // We always want to use this request, so ignore parent's return value.
+ parent::loadFromSubmission($data);
- return true;
- }
+ return true;
+ }
}
diff --git a/includes/auth/NewSignupPageSecondaryAuthenticationProvider.php b/includes/auth/NewSignupPageSecondaryAuthenticationProvider.php
index 4327d7f..e244e61 100644
--- a/includes/auth/NewSignupPageSecondaryAuthenticationProvider.php
+++ b/includes/auth/NewSignupPageSecondaryAuthenticationProvider.php
@@ -10,143 +10,149 @@ use MediaWiki\MediaWikiServices;
* @license GPL-2.0-or-later
* @note Uses GPL-licensed code from LoginReg extension (in beginSecondaryAccountCreation())
*/
-class NewSignupPageSecondaryAuthenticationProvider extends AbstractSecondaryAuthenticationProvider {
+class NewSignupPageSecondaryAuthenticationProvider extends AbstractSecondaryAuthenticationProvider
+{
- /**
- * @param array $params
- */
- public function __construct( $params = [] ) {
- }
+ /**
+ * @param array $params
+ */
+ public function __construct($params = [])
+ {
+ }
- /**
- * Abort the creation of the new account if the user hasn't checked the
- * "I agree to the terms of service" checkbox and they aren't allowed to
- * bypass that check.
- *
- * @param User $user
- * @param User $creator
- * @param array $reqs
- * @return StatusValue
- */
- public function testForAccountCreation( $user, $creator, array $reqs ) {
- $req = AuthenticationRequest::getRequestByClass( $reqs, NewSignupPageAuthenticationRequest::class );
- if (
- $req && $req->wpTermsOfService ||
- $creator->isAllowed( 'bypasstoscheck' )
- ) {
- return StatusValue::newGood();
- } else {
- return StatusValue::newFatal( 'newsignuppage-must-accept-tos' );
- }
- }
+ /**
+ * Abort the creation of the new account if the user hasn't checked the
+ * "I agree to the terms of service" checkbox and they aren't allowed to
+ * bypass that check.
+ *
+ * @param User $user
+ * @param User $creator
+ * @param array $reqs
+ * @return StatusValue
+ */
+ public function testForAccountCreation($user, $creator, array $reqs)
+ {
+ $req = AuthenticationRequest::getRequestByClass($reqs, NewSignupPageAuthenticationRequest::class);
+ if (
+ $req && $req->wpTermsOfService ||
+ $creator->isAllowed('bypasstoscheck')
+ ) {
+ return StatusValue::newGood();
+ } else {
+ return StatusValue::newFatal('newsignuppage-must-accept-tos');
+ }
+ }
- public function getAuthenticationRequests( $action, array $options ) {
- if ( $action === AuthManager::ACTION_CREATE || $action === AuthManager::ACTION_LOGIN ) {
- return [ new NewSignupPageAuthenticationRequest(
- $this->manager->getRequest()
- ) ];
- }
+ public function getAuthenticationRequests($action, array $options)
+ {
+ if ($action === AuthManager::ACTION_CREATE || $action === AuthManager::ACTION_LOGIN) {
+ return [new NewSignupPageAuthenticationRequest(
+ $this->manager->getRequest()
+ )];
+ }
- return [];
- }
+ return [];
+ }
- public function beginSecondaryAuthentication( $user, array $reqs ) {
- return AuthenticationResponse::newAbstain();
- }
+ public function beginSecondaryAuthentication($user, array $reqs)
+ {
+ return AuthenticationResponse::newAbstain();
+ }
- public function beginSecondaryAccountCreation( $user, $creator, array $reqs ) {
- global $wgAutoAddFriendOnInvite, $wgRegisterTrack;
+ public function beginSecondaryAccountCreation($user, $creator, array $reqs)
+ {
+ global $wgAutoAddFriendOnInvite, $wgRegisterTrack;
- $req = AuthenticationRequest::getRequestByClass(
- $reqs, NewSignupPageAuthenticationRequest::class
- );
+ $req = AuthenticationRequest::getRequestByClass(
+ $reqs,
+ NewSignupPageAuthenticationRequest::class
+ );
- $referral_user = User::newFromName( $req->referral );
- $user_id_referral = 0;
+ $referral_user = User::newFromName($req->referral);
+ $user_id_referral = 0;
- if ( $wgAutoAddFriendOnInvite && $referral_user instanceof User ) {
- $user_id_referral = $referral_user->getId();
- if ( $user_id_referral ) {
- // need to create fake request first
- $rel = new UserRelationship( $referral_user );
- $request_id = $rel->addRelationshipRequest( $user, 1, '', false );
+ if ($wgAutoAddFriendOnInvite && $referral_user instanceof User) {
+ $user_id_referral = $referral_user->getId();
+ if ($user_id_referral) {
+ // need to create fake request first
+ $rel = new UserRelationship($referral_user);
+ $request_id = $rel->addRelationshipRequest($user, 1, '', false);
- // clear the status
- $rel->updateRelationshipRequestStatus( $request_id, 1 );
+ // clear the status
+ $rel->updateRelationshipRequestStatus($request_id, 1);
- // automatically add relationships
- $rel = new UserRelationship( $user );
- $rel->addRelationship( $request_id, true );
+ // automatically add relationships
+ $rel = new UserRelationship($user);
+ $rel->addRelationship($request_id, true);
- // Update social statistics for both users (so that we don't
- // show "0 of 0" in the new user's profile when they in fact
- // do have one friend already!)
- // @todo FIXME: broken until UserStatsTrack is refactored to support RequestContext
- // instead of global objects (the global object in incStatField() is _not_
- // our $user even though by all logic it should be and it was in older versions
- // of MW)
- $stats = new UserStatsTrack( $user->getId(), $user->getName() );
- $stats->updateRelationshipCount( 1 );
- $stats->incStatField( 'friend' );
+ // Update social statistics for both users (so that we don't
+ // show "0 of 0" in the new user's profile when they in fact
+ // do have one friend already!)
+ // @todo FIXME: broken until UserStatsTrack is refactored to support RequestContext
+ // instead of global objects (the global object in incStatField() is _not_
+ // our $user even though by all logic it should be and it was in older versions
+ // of MW)
+ $stats = new UserStatsTrack($user->getId(), $user->getName());
+ $stats->updateRelationshipCount(1);
+ $stats->incStatField('friend');
- $statsReferringUser = new UserStatsTrack( $user_id_referral, $referral_user->getName() );
- $statsReferringUser->updateRelationshipCount( 1 );
- $statsReferringUser->incStatField( 'friend' );
- }
- }
+ $statsReferringUser = new UserStatsTrack($user_id_referral, $referral_user->getName());
+ $statsReferringUser->updateRelationshipCount(1);
+ $statsReferringUser->incStatField('friend');
+ }
+ }
- if ( $wgRegisterTrack ) {
- $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
- $cache->delete( $cache->makeKey( 'users', 'new', '1' ) );
+ if ($wgRegisterTrack) {
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ $cache->delete($cache->makeKey('users', 'new', '1'));
- // How the user registered (via email from friend, just on the site etc.)?
- $from = $req->from;
- if ( !$from ) {
- $from = 0;
- }
+ // How the user registered (via email from friend, just on the site etc.)?
+ $from = $req->from;
+ if (!$from) {
+ $from = 0;
+ }
- // Track if the user clicked on email from friend
- if ( $referral_user instanceof User ) {
- // Update the social statistics of the referring user (to give
- // them points, if specified so on the configuration file)
- $stats = new UserStatsTrack( $referral_user->getId(), $referral_user->getName() );
- $stats->incStatField( 'referral_complete' );
+ // Track if the user clicked on email from friend
+ if ($referral_user instanceof User) {
+ // Update the social statistics of the referring user (to give
+ // them points, if specified so on the configuration file)
+ $stats = new UserStatsTrack($referral_user->getId(), $referral_user->getName());
+ $stats->incStatField('referral_complete');
- // Add a new site activity event that will show up on the output
- // of at least
- if ( class_exists( 'UserSystemMessage' ) ) {
- $m = new UserSystemMessage();
- // Nees to be forContent because addMessage adds this into a
- // database table - we don't want to display Japanese text
- // to English users
- $message = wfMessage(
- 'newsignuppage-recruited',
- $user->getUserPage()->getFullURL(),
- $user->getName()
- )->parse();
- $m->addMessage(
- $referral_user,
- UserSystemMessage::TYPE_RECRUIT,
- $message
- );
- }
- }
+ // Add a new site activity event that will show up on the output
+ // of at least
+ if (class_exists('UserSystemMessage')) {
+ $m = new UserSystemMessage();
+ // Nees to be forContent because addMessage adds this into a
+ // database table - we don't want to display Japanese text
+ // to English users
+ $message = wfMessage(
+ 'newsignuppage-recruited',
+ $user->getUserPage()->getFullURL(),
+ $user->getName()
+ )->parse();
+ $m->addMessage(
+ $referral_user,
+ UserSystemMessage::TYPE_RECRUIT,
+ $message
+ );
+ }
+ }
- // Track registration
- $dbw = wfGetDB( DB_MASTER );
- $dbw->insert(
- 'user_register_track',
- [
- 'ur_actor' => $user->getActorId(),
- 'ur_actor_referral' => ( $referral_user instanceof User ? $referral_user->getActorId() : 0 ),
- 'ur_from' => $from,
- 'ur_date' => $dbw->timestamp( date( 'Y-m-d H:i:s' ) )
- ],
- __METHOD__
- );
- }
-
- return AuthenticationResponse::newPass();
- }
+ // Track registration
+ $dbw = wfGetDB(DB_MASTER);
+ $dbw->insert(
+ 'user_register_track',
+ [
+ 'ur_actor' => $user->getActorId(),
+ 'ur_actor_referral' => ($referral_user instanceof User ? $referral_user->getActorId() : 0),
+ 'ur_from' => $from,
+ 'ur_date' => $dbw->timestamp(date('Y-m-d H:i:s'))
+ ],
+ __METHOD__
+ );
+ }
+ return AuthenticationResponse::newPass();
+ }
}