AndyRussG has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/119258

Change subject: Participation on create account via campaign url
......................................................................

Participation on create account via campaign url

Change-Id: I5b943190efc0256708475c16e28078086d43d6dd
---
M Campaigns.hooks.php
1 file changed, 33 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Campaigns 
refs/changes/58/119258/1

diff --git a/Campaigns.hooks.php b/Campaigns.hooks.php
index 90102c3..3289202 100644
--- a/Campaigns.hooks.php
+++ b/Campaigns.hooks.php
@@ -3,6 +3,7 @@
 namespace Campaigns;
 
 use \DatabaseUpdater;
+use \Campaigns\Setup\Setup;
 
 /**
  * Static methods for hooks.
@@ -93,12 +94,15 @@
                $displayMobile = class_exists( 'MobileContext' ) &&
                        MobileContext::singleton()->shouldDisplayMobileView();
 
+               $campaignUrlID =
+                       $wgRequest->getCookie( '-campaign', $wgCookiePrefix, '' 
);
+
                $event = array(
                        'token' => $wgRequest->getCookie( 'mediaWiki.user.id', 
'', '' ),
                        'userId' => $userId,
                        'userName' => $user->getName(),
                        'isSelfMade' => $isSelfMade,
-                       'campaign' =>  $wgRequest->getCookie( '-campaign', 
$wgCookiePrefix, '' ),
+                       'campaign' => $campaignUrlID,
                        'userBuckets' => $wgRequest->getCookie( 'userbuckets', 
'', '' ),
                        'displayMobile' => $displayMobile,
                );
@@ -114,6 +118,34 @@
                }
 
                efLogServerSideEvent( 'ServerSideAccountCreation', 5487345, 
$event );
+
+               // Persist the user's membership in a campaign
+               $campaignStore =
+                       Setup::getInstance()->get( 
'Campaigns\Persistence\ICampaignStore' );
+
+               $campaign =
+                       $campaignStore->getCampaignByUrlID( $campaignUrlID, 
array() );
+
+               // If the campaign doesn't exist, create it
+               if ( is_null( $campaign ) ) {
+
+                       // Scope out an unused name
+                       $name = $campaignUrlID;
+                       $nameSuffix = 0;
+
+                       while ( $campaignStore->existsCampaignWithName( $name ) 
) {
+                               $name = $campaignUrlID . '-' . $nameSuffix;
+                               $nameSuffix++;
+                       }
+
+                       // Create the campaign
+                       $campaign = $campaignStore->createCampaign( 
$campaignUrlID, $name );
+               }
+
+               // Add the membership and save
+               $campaign->setParticipant( $userId, false );
+               $campaignStore->saveCampaign( $campaign );
+
                return true;
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/119258
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5b943190efc0256708475c16e28078086d43d6dd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Campaigns
Gerrit-Branch: wip/editorcampaigns
Gerrit-Owner: AndyRussG <andrew.green...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to