PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.7.2
GiveWP – Donation Plugin and Fundraising Platform v4.16.7.2
4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 9 months ago CustomFields 1 year ago DataTransferObjects 9 months ago Endpoints 7 months ago Factories 1 year ago LegacyListeners 11 months ago ListTable 9 months ago Listeners 1 year ago Migrations 4 days ago Models 10 months ago Properties 1 year ago Repositories 10 months ago ValueObjects 10 months ago resources 7 months ago DonationsAdminPage.php 7 months ago ServiceProvider.php 4 days ago
ServiceProvider.php
169 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\SanitizeSerializedObjectPayloads;
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->loadDonationAdminOptions();
60
61 give(MigrationsRegister::class)->addMigrations([
62 AddMissingDonorIdToDonationComments::class,
63 SetAutomaticFormattingOption::class,
64 MoveDonationCommentToDonationMetaTable::class,
65 UnserializeTitlePrefix::class,
66 RecalculateExchangeRate::class,
67 SanitizeSerializedObjectPayloads::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 4.14.0 defer conditionals and DB queries to admin_menu hook.
119 * @since 2.20.0
120 */
121 private function registerDonationsAdminPage()
122 {
123 add_action('admin_menu', function () {
124 $userId = get_current_user_id();
125 $showLegacy = get_user_meta($userId, '_give_donations_archive_show_legacy', true);
126
127 // only register new admin page if user hasn't chosen to use the old one
128 if (empty($showLegacy)) {
129 give(DonationsAdminPage::class)->registerMenuItem();
130 }
131 }, 20);
132 }
133
134 /**
135 * @since 3.0.0
136 */
137 private function addCustomFieldsToDonationDetails()
138 {
139 add_action('give_view_donation_details_billing_after', static function ($donationId) {
140 echo (new DonationDetailsController())->show($donationId);
141 });
142 }
143
144 /**
145 * @since 4.2.0
146 */
147 private function bootListeners()
148 {
149 add_action('givewp_donation_created', static function (Donation $donation) {
150 (new UpdateDonationMetaWithCurrencySettings())($donation);
151
152 (new UpdateDonorMetaWithLastDonatedCurrency())($donation);
153 });
154 }
155
156 /**
157 * @since 4.6.1 Move to admin_enqueue_scripts hook
158 * @since 4.6.0
159 */
160 private function loadDonationAdminOptions()
161 {
162 add_action('admin_enqueue_scripts', function () {
163 if (DonationsAdminPage::isShowingDetailsPage()) {
164 give(LoadDonationAdminOptions::class)();
165 }
166 });
167 }
168 }
169