PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.13.1
GiveWP – Donation Plugin and Fundraising Platform v4.13.1
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Donations / ServiceProvider.php
give / src / Donations Last commit date
Actions 7 months ago CustomFields 1 year ago DataTransferObjects 8 months ago Endpoints 8 months ago Factories 1 year ago LegacyListeners 9 months ago ListTable 8 months ago Listeners 1 year ago Migrations 1 year ago Models 8 months ago Properties 1 year ago Repositories 8 months ago ValueObjects 8 months ago resources 7 months ago DonationsAdminPage.php 11 months ago ServiceProvider.php 7 months ago
ServiceProvider.php
163 lines
1 <?php
2
3 namespace Give\Donations;
4
5 use Give\Donations\Actions\LoadDonationAdminOptions;
6 use Give\Donations\CustomFields\Controllers\DonationDetailsController;
7 use Give\Donations\LegacyListeners\ClearDonationPostCache;
8 use Give\Donations\LegacyListeners\DispatchDonationNoteEmailNotification;
9 use Give\Donations\LegacyListeners\DispatchGiveInsertPayment;
10 use Give\Donations\LegacyListeners\DispatchGivePreInsertPayment;
11 use Give\Donations\LegacyListeners\DispatchGiveRecurringAddSubscriptionPaymentAndRecordPayment;
12 use Give\Donations\LegacyListeners\DispatchGiveUpdatePaymentStatus;
13 use Give\Donations\LegacyListeners\InsertSequentialId;
14 use Give\Donations\LegacyListeners\RemoveSequentialId;
15 use Give\Donations\LegacyListeners\UpdateDonorPaymentIds;
16 use Give\Donations\LegacyListeners\UpdateDonationMetaWithLegacyFormCurrencySettings;
17 use Give\Donations\Listeners\DonationCreated\UpdateDonationMetaWithCurrencySettings;
18 use Give\Donations\Listeners\DonationCreated\UpdateDonorMetaWithLastDonatedCurrency;
19 use Give\Donations\ListTable\DonationsListTable;
20 use Give\Donations\Migrations\AddMissingDonorIdToDonationComments;
21 use Give\Donations\Migrations\MoveDonationCommentToDonationMetaTable;
22 use Give\Donations\Migrations\RecalculateExchangeRate;
23 use Give\Donations\Migrations\SetAutomaticFormattingOption;
24 use Give\Donations\Migrations\UnserializeTitlePrefix;
25 use Give\Donations\Models\Donation;
26 use Give\Donations\Repositories\DonationNotesRepository;
27 use Give\Donations\Repositories\DonationRepository;
28 use Give\Framework\Migrations\MigrationsRegister;
29 use Give\Helpers\Hooks;
30 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
31
32 class ServiceProvider implements ServiceProviderInterface
33 {
34 /**
35 * @inheritDoc
36 */
37 public function register()
38 {
39 give()->singleton('donations', DonationRepository::class);
40 give()->singleton('donationNotes', DonationNotesRepository::class);
41 give()->singleton(DonationsListTable::class, function () {
42 $listTable = new DonationsListTable();
43 Hooks::doAction('givewp_donations_list_table', $listTable);
44
45 return $listTable;
46 });
47 }
48
49 /**
50 * @inheritDoc
51 */
52 public function boot()
53 {
54 $this->bootListeners();
55 $this->bootLegacyListeners();
56 $this->registerDonationsAdminPage();
57 $this->addCustomFieldsToDonationDetails();
58 $this->loadDonationAdminOptions();
59
60 give(MigrationsRegister::class)->addMigrations([
61 AddMissingDonorIdToDonationComments::class,
62 SetAutomaticFormattingOption::class,
63 MoveDonationCommentToDonationMetaTable::class,
64 UnserializeTitlePrefix::class,
65 RecalculateExchangeRate::class,
66 ]);
67 }
68
69 /**
70 * Legacy Listeners
71 * @since 2.25.0 Call ClearDonationPostCache on the "givewp_donation_updated" hook
72 * @since 2.24.0 Remove UpdateSequentialId from "givewp_donation_updated" action hook.
73 * @since 2.19.6
74 */
75 private function bootLegacyListeners()
76 {
77 Hooks::addAction('givewp_donation_creating', DispatchGivePreInsertPayment::class);
78
79 add_action('givewp_donation_created', static function (Donation $donation) {
80 (new UpdateDonationMetaWithLegacyFormCurrencySettings())($donation);
81 (new InsertSequentialId())($donation);
82 (new DispatchGiveInsertPayment())($donation);
83 (new UpdateDonorPaymentIds())($donation);
84
85 if ($donation->subscriptionId && $donation->type->isRenewal()) {
86 (new DispatchGiveRecurringAddSubscriptionPaymentAndRecordPayment())($donation);
87 }
88
89 /**
90 * @notice
91 * Anytime we call give_update_payment_status the donor purchase_value and purchase_count get affected.
92 * We are doing this in the gateway api and in many other places.
93 * The listener below matches the functionality but the count seems to be overwritten elsewhere.
94 * Leaving this commented out until resolved or needed.
95 */
96 //Call::invoke(UpdateDonorPurchaseValueAndCount::class, $donation);
97 });
98
99 add_action('givewp_donation_updated', function (Donation $donation) {
100 (new ClearDonationPostCache())($donation);
101 (new DispatchGiveUpdatePaymentStatus())($donation);
102 });
103
104 Hooks::addAction('givewp_donation_deleted', RemoveSequentialId::class);
105
106 add_action('givewp_donation_note_created', static function ($donationNote) {
107 if ($donationNote->type->isDonor()) {
108 (new DispatchDonationNoteEmailNotification())($donationNote);
109 }
110 });
111 }
112
113 /**
114 * Donations Admin page
115 *
116 * @since 2.20.0
117 */
118 private function registerDonationsAdminPage()
119 {
120 $userId = get_current_user_id();
121 $showLegacy = get_user_meta($userId, '_give_donations_archive_show_legacy', true);
122 // only register new admin page if user hasn't chosen to use the old one
123 if (empty($showLegacy)) {
124 Hooks::addAction('admin_menu', DonationsAdminPage::class, 'registerMenuItem', 20);
125 }
126 }
127
128 /**
129 * @since 3.0.0
130 */
131 private function addCustomFieldsToDonationDetails()
132 {
133 add_action('give_view_donation_details_billing_after', static function ($donationId) {
134 echo (new DonationDetailsController())->show($donationId);
135 });
136 }
137
138 /**
139 * @since 4.2.0
140 */
141 private function bootListeners()
142 {
143 add_action('givewp_donation_created', static function (Donation $donation) {
144 (new UpdateDonationMetaWithCurrencySettings())($donation);
145
146 (new UpdateDonorMetaWithLastDonatedCurrency())($donation);
147 });
148 }
149
150 /**
151 * @since 4.6.1 Move to admin_enqueue_scripts hook
152 * @since 4.6.0
153 */
154 private function loadDonationAdminOptions()
155 {
156 add_action('admin_enqueue_scripts', function () {
157 if (DonationsAdminPage::isShowingDetailsPage()) {
158 give(LoadDonationAdminOptions::class)();
159 }
160 });
161 }
162 }
163