From MediaWiki.org
Jump to navigation Jump to search
MediaWiki extensions manual
OOjs UI icon advanced.svg
Release status: stable
Implementation Special page
Description Statistics for the Wikimedia fundraiser
Author(s) David Strauss, Katie Horn (Khorn (WMF)talk)
Compatibility policy master
Database changes Yes
Tables contribution_tracking
License No license specified
  • $wgContributionTrackingDBserver
  • $wgContributionTrackingDBuser
  • $wgContributionTrackingFundraiserMaintenanceUnsched
  • $wgContributionTrackingDBpassword
  • $wgContributionTrackingFundraiserMaintenance
  • $wgContributionTrackingDBname
Translate the ContributionTracking extension if it is available at translatewiki.net
Check usage and version matrix.
Issues Open tasks · Report a bug

ContributionTracking provides some statistics on the Wikimedia Foundation fundraiser.

It includes two unlisted special pages, which are not used by humans but only by other internal functions (with Extension:DonationInterface): Special:ContributionTracking and Special:ContributionTrackingTester (sysop only).

It supports two payment gateways, PayPal and Moneybookers (largely deprecated).


Download the extension, put

require_once( "$IP/extensions/ContributionTracking/ContributionTracking.php" );

into your LocalSettings.php file, then run

alter table <prefix>contribution_tracking modify anonymous tinyint(1) unsigned default null, modify optout tinyint(1) unsigned default null;

on your database. Be sure to replace <prefix> with your wiki's database table prefix.


The purpose of the ContributionTracking API is to remove the interstitial page between the user-facing donate button, and the remote gateway. Instead of posting the whole transaction to a page, the form data is sent to the API via ajax. The API records the tracking data, and returns a json object that can be used to build a hidden form, and immediately repost that hidden form to the remote gateway.

For a working end-to-end demonstration of this technique, see Special:ContributionTrackingTester. The available form fields are pulled dynamically from the API's AllowedParams, so it will always show all available field options. (Note: Any additional fields posted to the API will be summarily ignored)

As on the ContributionTrackingTester page, all that is necessary to use the API to remove the interstitial page between a gateway form and the remote gateway, are the two following changes: To add the jquery.contributionTracking module which handles the ajax and hidden repost form, add the following line to the php form's execute method:

$wgOut->addModules( 'jquery.contributionTracking' );

Then, add the class "ajax_me" to the relevant form's submit button. Once that is done, the button's parent form will be under the control of the included jquery.contributionTracking module.