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