Persistence Services for WMDE Fundraising
Fundraising Store contains persistence services for the WMDE fundraising codebase.
You can use Composer to download and install this package as well as its dependencies.
To add this package as a local, per-project dependency to your project, run:
composer require wmde/fundraising-store
This package provides
vendor/bin/cli-config.php file required by the Doctrine Console.
A default database configuration, compatible with the container used for integration tests (see
can be found in
Applications wanting to use this package in conjunction with the Doctrine Console should provide their own
Architecture and Future
This library and the tables it creates is used by the fundraising Bounded Contexts and by the Fundaising Operation Center application. The idea is to migrate this library away by moving all code specific to a Bounded Context into that Bounded Context and all code specific to an application to that application. This way the Bounded Contexts can have truely private peristance and follow the Clean Architecture + Bounded Contexts architecture rules.
For a short history of we ended up with this library, see Bounded Contexts in the Wikimedia Fundraising Software
Provision the system
docker run -it --rm --user $(id -u):$(id -g) -v "$PWD":/code -v ~/.composer:/composer -w /code composer composer install
docker-compose run --rm app vendor/bin/phpunit
Running test and code-style checks with composer
All committed code is checked by our CI against the unit tests and the coding styleguide.
The configuration for these tools can be found in the root directory.
After installation through composer you can either call the tools directly from their location in
or use the provided
composer ci # Run all checks composer cs # Run style checks composer test # Run unit tests
Be aware that the concepts of composer as a script runner and containerization might not work together out-of-the-box.
Version 9.0.0 (2018-08-16)
BackendImpressiondoctrine entity and move them to
Version 8.0.0 (2018-06-06)
AddressChangeentity for address export functionality
Version 7.0.1 (2017-12-05)
- Changed default timestamp value from "0" to "current time", prevening errors on newer versions of MySQL
Version 7.0.0 (2017-11-01)
Version 6.1.0 (2017-08-16)
- Introduced constant
Donation::STATUS_EXPORTEDfor historical reasons.
Version 6.0.1 (2017-08-02)
- Updated Doctrine DBAL and ORM min version.
Version 6.0.0 (2017-07-18)
Version 5.0.0 (2017-03-30)
- Added full text indices for donations and memberships. This breaks backward compatibility for MySQL versions < 5.6.
- Prefixed all indices of donations with
MembershipApplicationas deprecated. It's no longer written by the fundraising frontend, but still referenced in some places by the backend, so for now we just mark it as deprecated instead of removing it.
Version 4.2.0 (2017-01-04)
Version 4.1.0 (2016-12-06)
- Add parameter for setting proxy dir to Factory. For backwards compatibility it's optional and defaults to
Version 4.0.0 (2016-11-25)
- The subscription confirmation code is now a plain string instead of a binary (blob). This makes it easier to read and test.
Version 3.0.0 (2016-11-16)
- The Subscription status flags have been removed and usage of setStatus and getStatus is now discouraged
- Changed the minimum PHP version to 7.0
subscriptiontable. This field indicates what led to the subscription, for instance the "remind me later" feature.
Subscription::isUnconfirmednow correctly returns true when a subscription has been marked for moderation
Version 2.1.0 (2016-10-10)
- Schema change: Added
payment_typefield column to the
- Ability ro re-ruse the file
FundraisingStorein an application is removed.
Version 2.0.1 (2016-09-28)
By the rules of semantic versioning, this version should have been 2.1 but was tagged wrongly.
MembershipApplicationData::getPreservedStatus. This is used to store the previous status when the status changes from a positive to a negative value.
Version 2.0.0 (2016-08-03)
- Renamed several entities. Database table names where not changed to remain backwards compatible.
Requestwas split into
Subscription(the type field was removed)
- The public PHP interfaces of
MembershipApplicationwere changed to English.
- Creation timestamps are now added automatically to donations, membership requests and subscriptions. Donation creation
dt_newis now mandatory (not nullable).
- Changed the minimum PHP version to 5.6
DonationDataclass to provide nicer access to the data field
- Added new methods to
MembershipApplicationDataclass to provide nicer access to the data field
- Added new methods to
Version 1.0 (2016-01-11)
- Added CLI configuration for Doctrine ORM shell commands
- Added request type and status constants
- Automatically set the full name in Request when first or last name is set.
- Changed the minimum PHP version to 5.5
Version 0.1 (2015-07-10)
Initial release with
Store\Installer and these entities:
- Migrate the payment metadata from
Donation::datato specific subclasses of the