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 / Campaigns / ServiceProvider.php
give / src / Campaigns Last commit date
Actions 7 months ago Blocks 7 months ago DataTransferObjects 1 year ago Factories 1 year ago ListTable 8 months ago Migrations 8 months ago Models 7 months ago Repositories 7 months ago Shortcodes 10 months ago ValueObjects 1 year ago resources 7 months ago CampaignDonationQuery.php 11 months ago CampaignSubscriptionQuery.php 1 year ago CampaignsAdminPage.php 9 months ago CampaignsDataQuery.php 11 months ago ServiceProvider.php 7 months ago
ServiceProvider.php
268 lines
1 <?php
2
3 namespace Give\Campaigns;
4
5 use Give\Campaigns\Actions\AddCampaignFormFromRequest;
6 use Give\Campaigns\Actions\AddNewBadgeToAdminMenuItem;
7 use Give\Campaigns\Actions\ArchiveCampaignFormsAsDraftStatus;
8 use Give\Campaigns\Actions\ArchiveCampaignPagesAsDraftStatus;
9 use Give\Campaigns\Actions\AssociateCampaignPageWithCampaign;
10 use Give\Campaigns\Actions\CacheCampaignData;
11 use Give\Campaigns\Actions\CreateCampaignPage;
12 use Give\Campaigns\Actions\CreateDefaultCampaignForm;
13 use Give\Campaigns\Actions\FormInheritsCampaignGoal;
14 use Give\Campaigns\Actions\LoadCampaignAdminOptions;
15 use Give\Campaigns\Actions\PreventDeleteDefaultForm;
16 use Give\Campaigns\Actions\RedirectLegacyCreateFormToCreateCampaign;
17 use Give\Campaigns\Actions\ReplaceGiveFormsCptLabels;
18 use Give\Campaigns\Actions\UnarchiveCampaignFormAsPublishStatus;
19 use Give\Campaigns\ListTable\Routes\DeleteCampaignListTable;
20 use Give\Campaigns\ListTable\Routes\GetCampaignsListTable;
21 use Give\Campaigns\Migrations\CacheCampaignsData;
22 use Give\Campaigns\Migrations\Donations\AddCampaignId as DonationsAddCampaignId;
23 use Give\Campaigns\Migrations\MigrateFormsToCampaignForms;
24 use Give\Campaigns\Migrations\P2P\SetCampaignType;
25 use Give\Campaigns\Migrations\RevenueTable\AddCampaignID as RevenueTableAddCampaignID;
26 use Give\Campaigns\Migrations\RevenueTable\AddIndexes;
27 use Give\Campaigns\Migrations\RevenueTable\AssociateDonationsToCampaign;
28 use Give\Campaigns\Migrations\Tables\CreateCampaignFormsTable;
29 use Give\Campaigns\Migrations\Tables\CreateCampaignsTable;
30 use Give\Campaigns\Models\Campaign;
31 use Give\Campaigns\Repositories\CampaignRepository;
32 use Give\Campaigns\ValueObjects\CampaignPageMetaKeys;
33 use Give\DonationForms\V2\DonationFormsAdminPage;
34 use Give\Framework\Migrations\MigrationsRegister;
35 use Give\Helpers\Hooks;
36 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
37 use Give_Payment;
38
39 /**
40 * @since 4.0.0
41 */
42 class ServiceProvider implements ServiceProviderInterface
43 {
44 /**
45 * @since 4.0.0
46 * @inheritDoc
47 */
48 public function register(): void
49 {
50 give()->singleton('campaigns', CampaignRepository::class);
51 $this->registerTableNames();
52 }
53
54 /**
55 * @since 4.8.0 add registerCampaignCache
56 * @since 4.0.0
57 * @inheritDoc
58 */
59 public function boot(): void
60 {
61 $this->registerMenus();
62 $this->replaceGiveFormsCptLabels();
63 $this->registerActions();
64 $this->setupCampaignPages();
65 $this->registerMigrations();
66 $this->registerListTableRoutes();
67 $this->registerCampaignBlocks();
68 $this->setupCampaignForms();
69 $this->loadCampaignAdminOptions();
70 $this->addNewBadgeToMenu();
71 $this->registerCampaignCache();
72 }
73
74 /**
75 * @since 4.2.0 Move V3 routes to top level API folder and rename method
76 * @since 4.0.0
77 */
78 private function registerListTableRoutes()
79 {
80 Hooks::addAction('rest_api_init', GetCampaignsListTable::class, 'registerRoute');
81 Hooks::addAction('rest_api_init', DeleteCampaignListTable::class, 'registerRoute');
82 }
83
84 /**
85 * @since 4.8.0 add CacheCampaignData
86 * @since 4.0.0
87 */
88 private function registerMigrations(): void
89 {
90 give(MigrationsRegister::class)->addMigrations(
91 [
92 CreateCampaignsTable::class,
93 SetCampaignType::class,
94 CreateCampaignFormsTable::class,
95 MigrateFormsToCampaignForms::class,
96 RevenueTableAddCampaignID::class,
97 AssociateDonationsToCampaign::class,
98 AddIndexes::class,
99 DonationsAddCampaignId::class,
100 CacheCampaignsData::class
101 ]
102 );
103 }
104
105 /**
106 * @since 4.0.0
107 */
108 private function registerTableNames(): void
109 {
110 global $wpdb;
111
112 $wpdb->give_campaigns = $wpdb->prefix . 'give_campaigns';
113 $wpdb->give_campaign_forms = $wpdb->prefix . 'give_campaign_forms';
114 }
115
116 /**
117 * @since 4.0.0
118 */
119 private function registerActions(): void
120 {
121 Hooks::addAction('givewp_campaign_updated', ArchiveCampaignFormsAsDraftStatus::class);
122 Hooks::addAction('givewp_campaign_updated', UnarchiveCampaignFormAsPublishStatus::class);
123 Hooks::addAction('givewp_campaign_updated', ArchiveCampaignPagesAsDraftStatus::class);
124 Hooks::addAction('givewp_donation_form_creating', FormInheritsCampaignGoal::class);
125 Hooks::addAction('givewp_campaign_page_created', AssociateCampaignPageWithCampaign::class);
126 Hooks::addAction('give_form_duplicated', Actions\AssignDuplicatedFormToCampaign::class, '__invoke', 10, 2);
127
128 Hooks::addAction('before_delete_post', PreventDeleteDefaultForm::class);
129 Hooks::addAction('transition_post_status', PreventDeleteDefaultForm::class, 'preventTrashStatusChange', 10, 3);
130
131 $noticeActions = [
132 'givewp_campaign_interaction_notice',
133 'givewp_campaign_existing_user_intro_notice',
134 'givewp_campaign_form_goal_notice',
135 ];
136
137 foreach ($noticeActions as $metaKey) {
138 register_meta('user', $metaKey, [
139 'type' => 'boolean',
140 'show_in_rest' => true,
141 'single' => true,
142 ]);
143 }
144 // notices
145 $notices = [
146 'givewp_campaign_interaction_notice',
147 'givewp_campaign_listtable_notice',
148 'givewp_campaign_form_notice',
149 'givewp_campaign_settings_notice'
150 ];
151
152 foreach ($notices as $name) {
153 add_action('wp_ajax_' . $name, static function () use ($name) {
154 add_user_meta(
155 get_current_user_id(),
156 $name,
157 time(),
158 true
159 );
160 });
161 }
162 }
163
164 /**
165 * @since 4.0.0
166 */
167 private function registerMenus()
168 {
169 Hooks::addAction('admin_menu', CampaignsAdminPage::class, 'addCampaignsSubmenuPage', 999);
170 }
171
172 /**
173 * @since 4.0.0
174 */
175 private function replaceGiveFormsCptLabels()
176 {
177 Hooks::addFilter('give_forms_labels', ReplaceGiveFormsCptLabels::class);
178 }
179
180 private function setupCampaignPages()
181 {
182 Hooks::addAction('enqueue_block_editor_assets', Actions\EnqueueCampaignPageEditorAssets::class);
183 }
184
185 /**
186 * @since 4.0.0
187 */
188 private function setupCampaignForms()
189 {
190 if (CampaignsAdminPage::isShowingDetailsPage()) {
191 Hooks::addAction('admin_enqueue_scripts', DonationFormsAdminPage::class, 'loadScripts');
192 }
193
194 Hooks::addAction('admin_init', RedirectLegacyCreateFormToCreateCampaign::class);
195
196 Hooks::addAction('save_post_give_forms', AddCampaignFormFromRequest::class, 'optionBasedFormEditor', 10, 3);
197 Hooks::addAction('givewp_donation_form_created', AddCampaignFormFromRequest::class, 'visualFormBuilder');
198 Hooks::addAction('givewp_campaign_created', CreateDefaultCampaignForm::class);
199 Hooks::addAction('givewp_campaign_created', CreateCampaignPage::class);
200 }
201
202 /**
203 * @since 4.0.0
204 */
205 private function registerCampaignBlocks()
206 {
207 register_meta('post',
208 CampaignPageMetaKeys::CAMPAIGN_ID,
209 [
210 'type' => 'integer',
211 'description' => 'Campaign ID for GiveWP',
212 'single' => true,
213 'show_in_rest' => true,
214 ]
215 );
216
217 Hooks::addAction('rest_api_init', Actions\RegisterCampaignIdRestField::class);
218 Hooks::addAction('init', Actions\RegisterCampaignBlocks::class);
219 Hooks::addAction('enqueue_block_editor_assets', Actions\RegisterCampaignBlocks::class, 'loadBlockEditorAssets');
220 Hooks::addAction('init', Actions\RegisterCampaignShortcodes::class);
221 }
222
223 /**
224 * @since 4.6.1 Move to admin_enqueue_scripts hook
225 * @since 4.0.0
226 */
227 private function loadCampaignAdminOptions()
228 {
229 add_action('admin_enqueue_scripts', function () {
230 if (CampaignsAdminPage::isShowingDetailsPage()) {
231 give(LoadCampaignAdminOptions::class)();
232 }
233 });
234 }
235
236 /**
237 * @since 4.0.0
238 *
239 * @return void
240 */
241 private function addNewBadgeToMenu(): void
242 {
243 (new AddNewBadgeToAdminMenuItem())();
244 }
245
246 /**
247 * @since 4.13.1 added givewp_campaigns_merged hook
248 * @since 4.8.0
249 */
250 private function registerCampaignCache(): void
251 {
252 add_action('givewp_cache_campaign_data', function (int $campaignId) {
253 give(CacheCampaignData::class)->handleCache($campaignId);
254 });
255
256 Hooks::addAction('give_insert_payment', CacheCampaignData::class, '__invoke', 11, 1);
257 Hooks::addAction('give_update_payment_status', CacheCampaignData::class, '__invoke', 11, 1);
258
259 add_action('give_recurring_add_subscription_payment', function (Give_Payment $legacyPayment) {
260 give(CacheCampaignData::class)((int)$legacyPayment->ID);
261 }, 11, 1);
262
263 add_action('givewp_campaigns_merged', function (Campaign $campaign) {
264 give(CacheCampaignData::class)->dispatch($campaign->id);
265 });
266 }
267 }
268