wmde / fundraising-store
Persistence services around the fundraising database
Installs: 16 078
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 13
Forks: 0
Open Issues: 6
Requires
- php: >=7.1
- doctrine/dbal: ^2.5
- doctrine/migrations: ~1.8
- doctrine/orm: ^2.5
- gedmo/doctrine-extensions: ^2.4
- ramsey/uuid: ^3.7
- symfony/yaml: ~4.1
Requires (Dev)
- ockcyp/covers-validator: ~0.6.1
- phpunit/phpunit: ~6.2
- squizlabs/php_codesniffer: ~3.0
- 10.5.0
- 10.4.1
- 10.4.0
- 10.3.3
- 10.3.2
- 10.3.1
- 10.3.0
- 10.2.0
- 10.1.1
- 10.1.0
- dev-master / 10.0.x-dev
- 10.0.0
- 9.0.0
- 8.0.1
- 8.0.0
- 8.0.0-beta.3
- 8.0.0-beta.2
- 8.0.0-beta
- 7.0.1
- 7.0.0
- 6.1.0
- 6.0.1
- 6.0.0
- 5.0.0
- 4.2.0
- 4.1.0
- 4.0.0
- 3.0.1
- 3.0.0
- 2.1.0
- 2.0.1
- 2.0.0
- 1.0.0
- 0.2.x-dev
- v0.1
- dev-update-doctrine
- dev-payments
- dev-deprecated-setstatus
This package is auto-updated.
Last update: 2024-10-18 06:31:12 UTC
README
Fundraising Store contains persistence services for the WMDE fundraising codebase.
Installation
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 docker-compose.yml
),
can be found in local-db-config.php
.
Applications wanting to use this package in conjunction with the Doctrine Console should provide their own cli-config.php
.
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
Development
In order to create a level playing field for development this project uses docker & docker-compose, as well as composer for dependency management.
Provision the system
docker-compose build
Install dependencies
docker run -it --rm --user $(id -u):$(id -g) -v "$PWD":/code -v ~/.composer:/composer -w /code composer composer install
Tests
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 vendor/bin
or use the provided composer
tasks:
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.
Release notes
Scheduled for next release (11.x)
- Invert relationship of Donation and Membership to AddressChange. WARNING: This gets rid of the "cascade" feature (automatic creation of AddressChange records when creating Donations/memberships). The FundraisingFrontend would have to implement an event handler that does the creation.
Version 10.5.0 (2020-01-31)
- Add
$additionalMetadataDrivers
parameter toFactory
to support XML-mapped entities (e.g. in the AddressChange bounded context).
Version 10.4.1 (2020-01-30)
- Change
donationReceipt
default totrue
Version 10.4.0 (2019-05-29)
- Add
donationReceipt
toAddressChange
Version 10.3.3 (2019-02-04)
- Fix address change migration
Version 10.3.2 (2019-01-31)
- Allow
getAddress
to return null inAddressChange
Version 10.3.1 (2019-01-30)
- Fix column names in database for
createdAt
andmodifiedAt
toAddressChange
Version 10.3.0 (2019-01-29)
- Add
createdAt
andmodifiedAt
toAddressChange
Version 10.2.0 (2019-01-18)
- Add
exportDate
toAddressChange
Version 10.1.0 (2019-01-16)
- Remove
thirdPartyIdentifier
fromAddressChange
Version 10.0.0 (2019-01-11)
- Add
addressType
andthirdPartyIdentifier
toAddressChange
Version 9.0.0 (2018-08-16)
- Remove
User
,ActionLog
,BackendBanner
,BackendImpression
doctrine entity and move them tofundraising-backend
repository
Version 8.0.0 (2018-06-06)
- Add
AddressChange
entity 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)
- Introduced
MembershipApplication::setDonationReceipt()
et al.
Version 6.1.0 (2017-08-16)
- Introduced constant
Donation::STATUS_EXPORTED
for historical reasons.
Version 6.0.1 (2017-08-02)
- Updated Doctrine DBAL and ORM min version.
Version 6.0.0 (2017-07-18)
- Added
DonationPayments\SofortPayment
entity
Version 5.0.0 (2017-03-30)
Breaking changes
- Added full text indices for donations and memberships. This breaks backward compatibility for MySQL versions < 5.6.
- Prefixed all indices of donations with
d_
. - Mark
donation_id
ofMembershipApplication
as 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)
- Added
MembershipApplication::isDeleted()
Version 4.1.0 (2016-12-06)
- Add parameter for setting proxy dir to Factory. For backwards compatibility it's optional and defaults to
/tmp
.
Version 4.0.0 (2016-11-25)
Breaking changes
- 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)
Breaking changes
- The Subscription status flags have been removed and usage of setStatus and getStatus is now discouraged
- Changed the minimum PHP version to 7.0
New features
- Added
source
field tosubscription
table. This field indicates what led to the subscription, for instance the "remind me later" feature. - Added
Subscription::getSource
andSubscription::setSource
- Added
Subscription::markAsConfirmed
- Added
Subscription::markForModeration
- Added
Subscription::needsModeration
Bug fixes
Subscription::isUnconfirmed
now correctly returns true when a subscription has been marked for moderation
Version 2.1.0 (2016-10-10)
- Schema change: Added
payment_type
field column to therequest
table - Added
MembershipApplication::setPaymentType
andMembershipApplication::getPaymentType
- Ability ro re-ruse the file
cli-config.php
when includingFundraisingStore
in 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.
- Added
MembershipApplicationData::setPreservedStatus
andMembershipApplicationData::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)
Breaking changes
- Renamed several entities. Database table names where not changed to remain backwards compatible.
Spenden
=>Donation
.Users
=>User
BackendImpressions
=>BackendImpression
Request
was split intoMembershipApplication
andSubscription
(the type field was removed)
- The public PHP interfaces of
Donation
andMembershipApplication
were changed to English. - Creation timestamps are now added automatically to donations, membership requests and subscriptions. Donation creation
timestamp
dt_new
is now mandatory (not nullable). - The
guid
field ofMembershipApplication
was removed. - Changed the minimum PHP version to 5.6
New features
- Added
Address
entity - Added
DonationData
class to provide nicer access to the data field - Added new methods to
Donation
setId
getDecodedData
encodeAndSetData
getDataObject
setDataObject
modifyDataObject
- Added
MembershipApplicationData
class to provide nicer access to the data field - Added new methods to
MembershipApplication
setId
getDecodedData
encodeAndSetData
getDataObject
setDataObject
modifyDataObject
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\Factory
, Store\Installer
and these entities:
- ActionLog
- BackendBanner
- BackendImpressions
- Request
- Spenden
- Users
Future Plans
- Migrate the payment metadata from
Donation::data
to specific subclasses of theDonationPayment
abstract class.