PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.6.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 11 months ago CustomFields 1 year ago DataTransferObjects 1 year ago Endpoints 11 months ago Factories 1 year ago LegacyListeners 1 year ago ListTable 1 year ago Listeners 1 year ago Migrations 1 year ago Models 11 months ago Properties 1 year ago Repositories 11 months ago ValueObjects 11 months ago ViewModels 11 months ago resources 11 months ago DonationsAdminPage.php 11 months ago ServiceProvider.php 11 months ago
ServiceProvider.php
173 lines
1 <?php
2
3 namespace Give\Donations;
4
5 use Give\Donations\Actions\LoadDonationAdminOptions;
6 use Give\Donations\Actions\RegisterDonationEntity;
7 use Give\Donations\CustomFields\Controllers\DonationDetailsController;
8 use Give\Donations\LegacyListeners\ClearDonationPostCache;
9 use Give\Donations\LegacyListeners\DispatchDonationNoteEmailNotification;
10 use Give\Donations\LegacyListeners\DispatchGiveInsertPayment;
11 use Give\Donations\LegacyListeners\DispatchGivePreInsertPayment;
12 use Give\Donations\LegacyListeners\DispatchGiveRecurringAddSubscriptionPaymentAndRecordPayment;
13 use Give\Donations\LegacyListeners\DispatchGiveUpdatePaymentStatus;
14 use Give\Donations\LegacyListeners\InsertSequentialId;
15 use Give\Donations\LegacyListeners\RemoveSequentialId;
16 use Give\Donations\LegacyListeners\UpdateDonorPaymentIds;
17 use Give\Donations\LegacyListeners\UpdateDonationMetaWithLegacyFormCurrencySettings;
18 use Give\Donations\Listeners\DonationCreated\UpdateDonationMetaWithCurrencySettings;
19 use Give\Donations\Listeners\DonationCreated\UpdateDonorMetaWithLastDonatedCurrency;
20 use Give\Donations\ListTable\DonationsListTable;
21 use Give\Donations\Migrations\AddMissingDonorIdToDonationComments;
22 use Give\Donations\Migrations\MoveDonationCommentToDonationMetaTable;
23 use Give\Donations\Migrations\RecalculateExchangeRate;
24 use Give\Donations\Migrations\SetAutomaticFormattingOption;
25 use Give\Donations\Migrations\UnserializeTitlePrefix;
26 use Give\Donations\Models\Donation;
27 use Give\Donations\Repositories\DonationNotesRepository;
28 use Give\Donations\Repositories\DonationRepository;
29 use Give\Framework\Migrations\MigrationsRegister;
30 use Give\Helpers\Hooks;
31 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
32
33 class ServiceProvider implements ServiceProviderInterface
34 {
35 /**
36 * @inheritDoc
37 */
38 public function register()
39 {
40 give()->singleton('donations', DonationRepository::class);
41 give()->singleton('donationNotes', DonationNotesRepository::class);
42 give()->singleton(DonationsListTable::class, function () {
43 $listTable = new DonationsListTable();
44 Hooks::doAction('givewp_donations_list_table', $listTable);
45
46 return $listTable;
47 });
48 }
49
50 /**
51 * @inheritDoc
52 */
53 public function boot()
54 {
55 $this->bootListeners();
56 $this->bootLegacyListeners();
57 $this->registerDonationsAdminPage();
58 $this->addCustomFieldsToDonationDetails();
59 $this->registerDonationEntity();
60 $this->loadDonationAdminOptions();
61
62 give(MigrationsRegister::class)->addMigrations([
63 AddMissingDonorIdToDonationComments::class,
64 SetAutomaticFormattingOption::class,
65 MoveDonationCommentToDonationMetaTable::class,
66 UnserializeTitlePrefix::class,
67 RecalculateExchangeRate::class,
68 ]);
69 }
70
71 /**
72 * Legacy Listeners
73 * @since 2.25.0 Call ClearDonationPostCache on the "givewp_donation_updated" hook
74 * @since 2.24.0 Remove UpdateSequentialId from "givewp_donation_updated" action hook.
75 * @since 2.19.6
76 */
77 private function bootLegacyListeners()
78 {
79 Hooks::addAction('givewp_donation_creating', DispatchGivePreInsertPayment::class);
80
81 add_action('givewp_donation_created', static function (Donation $donation) {
82 (new UpdateDonationMetaWithLegacyFormCurrencySettings())($donation);
83 (new InsertSequentialId())($donation);
84 (new DispatchGiveInsertPayment())($donation);
85 (new UpdateDonorPaymentIds())($donation);
86
87 if ($donation->subscriptionId && $donation->type->isRenewal()) {
88 (new DispatchGiveRecurringAddSubscriptionPaymentAndRecordPayment())($donation);
89 }
90
91 /**
92 * @notice
93 * Anytime we call give_update_payment_status the donor purchase_value and purchase_count get affected.
94 * We are doing this in the gateway api and in many other places.
95 * The listener below matches the functionality but the count seems to be overwritten elsewhere.
96 * Leaving this commented out until resolved or needed.
97 */
98 //Call::invoke(UpdateDonorPurchaseValueAndCount::class, $donation);
99 });
100
101 add_action('givewp_donation_updated', function (Donation $donation) {
102 (new ClearDonationPostCache())($donation);
103 (new DispatchGiveUpdatePaymentStatus())($donation);
104 });
105
106 Hooks::addAction('givewp_donation_deleted', RemoveSequentialId::class);
107
108 add_action('givewp_donation_note_created', static function ($donationNote) {
109 if ($donationNote->type->isDonor()) {
110 (new DispatchDonationNoteEmailNotification())($donationNote);
111 }
112 });
113 }
114
115 /**
116 * Donations Admin page
117 *
118 * @since 2.20.0
119 */
120 private function registerDonationsAdminPage()
121 {
122 $userId = get_current_user_id();
123 $showLegacy = get_user_meta($userId, '_give_donations_archive_show_legacy', true);
124 // only register new admin page if user hasn't chosen to use the old one
125 if (empty($showLegacy)) {
126 Hooks::addAction('admin_menu', DonationsAdminPage::class, 'registerMenuItem', 20);
127 }
128 }
129
130 /**
131 * @since 3.0.0
132 */
133 private function addCustomFieldsToDonationDetails()
134 {
135 add_action('give_view_donation_details_billing_after', static function ($donationId) {
136 echo (new DonationDetailsController())->show($donationId);
137 });
138 }
139
140 /**
141 * @since 4.2.0
142 */
143 private function bootListeners()
144 {
145 add_action('givewp_donation_created', static function (Donation $donation) {
146 (new UpdateDonationMetaWithCurrencySettings())($donation);
147
148 (new UpdateDonorMetaWithLastDonatedCurrency())($donation);
149 });
150 }
151
152 /**
153 * @since 4.6.0
154 */
155 private function registerDonationEntity()
156 {
157 Hooks::addAction('init', RegisterDonationEntity::class);
158 }
159
160 /**
161 * @since 4.6.1 Move to admin_enqueue_scripts hook
162 * @since 4.6.0
163 */
164 private function loadDonationAdminOptions()
165 {
166 add_action('admin_enqueue_scripts', function () {
167 if (DonationsAdminPage::isShowingDetailsPage()) {
168 give(LoadDonationAdminOptions::class)();
169 }
170 });
171 }
172 }
173