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 / Campaigns / ServiceProvider.php
give / src / Campaigns Last commit date
Actions 11 months ago Blocks 11 months ago Controllers 1 year ago DataTransferObjects 1 year ago Factories 1 year ago ListTable 1 year ago Migrations 11 months ago Models 1 year ago Repositories 1 year ago Shortcodes 11 months ago ValueObjects 1 year ago ViewModels 1 year ago resources 11 months ago CampaignDonationQuery.php 11 months ago CampaignSubscriptionQuery.php 1 year ago CampaignsAdminPage.php 1 year ago CampaignsDataQuery.php 11 months ago ServiceProvider.php 11 months ago
ServiceProvider.php
254 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\CreateCampaignPage;
11 use Give\Campaigns\Actions\CreateDefaultCampaignForm;
12 use Give\Campaigns\Actions\FormInheritsCampaignGoal;
13 use Give\Campaigns\Actions\LoadCampaignAdminOptions;
14 use Give\Campaigns\Actions\PreventDeleteDefaultForm;
15 use Give\Campaigns\Actions\RedirectLegacyCreateFormToCreateCampaign;
16 use Give\Campaigns\Actions\RenderDonateButton;
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\Donations\AddCampaignId as DonationsAddCampaignId;
22 use Give\Campaigns\Migrations\MigrateFormsToCampaignForms;
23 use Give\Campaigns\Migrations\P2P\SetCampaignType;
24 use Give\Campaigns\Migrations\RevenueTable\AddCampaignID as RevenueTableAddCampaignID;
25 use Give\Campaigns\Migrations\RevenueTable\AddIndexes;
26 use Give\Campaigns\Migrations\RevenueTable\AssociateDonationsToCampaign;
27 use Give\Campaigns\Migrations\Tables\CreateCampaignFormsTable;
28 use Give\Campaigns\Migrations\Tables\CreateCampaignsTable;
29 use Give\Campaigns\Repositories\CampaignRepository;
30 use Give\Campaigns\ValueObjects\CampaignPageMetaKeys;
31 use Give\DonationForms\Blocks\DonationFormBlock\Controllers\BlockRenderController;
32 use Give\DonationForms\V2\DonationFormsAdminPage;
33 use Give\Framework\Migrations\MigrationsRegister;
34 use Give\Helpers\Hooks;
35 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
36
37 /**
38 * @since 4.0.0
39 */
40 class ServiceProvider implements ServiceProviderInterface
41 {
42 /**
43 * @since 4.0.0
44 * @inheritDoc
45 */
46 public function register(): void
47 {
48 give()->singleton('campaigns', CampaignRepository::class);
49 give()->bind(RenderDonateButton::class, function () {
50 return new RenderDonateButton(
51 new BlockRenderController()
52 );
53 });
54 $this->registerTableNames();
55 }
56
57 /**
58 * @since 4.0.0
59 * @inheritDoc
60 */
61 public function boot(): void
62 {
63 $this->registerMenus();
64 $this->replaceGiveFormsCptLabels();
65 $this->registerActions();
66 $this->setupCampaignPages();
67 $this->registerMigrations();
68 $this->registerListTableRoutes();
69 $this->registerCampaignEntity();
70 $this->registerCampaignBlocks();
71 $this->setupCampaignForms();
72 $this->loadCampaignAdminOptions();
73 $this->addNewBadgeToMenu();
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.0.0
88 */
89 private function registerMigrations(): void
90 {
91 give(MigrationsRegister::class)->addMigrations(
92 [
93 CreateCampaignsTable::class,
94 SetCampaignType::class,
95 CreateCampaignFormsTable::class,
96 MigrateFormsToCampaignForms::class,
97 RevenueTableAddCampaignID::class,
98 AssociateDonationsToCampaign::class,
99 AddIndexes::class,
100 DonationsAddCampaignId::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 registerCampaignEntity()
189 {
190 Hooks::addAction('init', Actions\RegisterCampaignEntity::class);
191 }
192
193 /**
194 * @since 4.0.0
195 */
196 private function setupCampaignForms()
197 {
198 if (CampaignsAdminPage::isShowingDetailsPage()) {
199 Hooks::addAction('admin_enqueue_scripts', DonationFormsAdminPage::class, 'loadScripts');
200 }
201
202 Hooks::addAction('admin_init', RedirectLegacyCreateFormToCreateCampaign::class);
203
204 Hooks::addAction('save_post_give_forms', AddCampaignFormFromRequest::class, 'optionBasedFormEditor', 10, 3);
205 Hooks::addAction('givewp_donation_form_created', AddCampaignFormFromRequest::class, 'visualFormBuilder');
206 Hooks::addAction('givewp_campaign_created', CreateDefaultCampaignForm::class);
207 Hooks::addAction('givewp_campaign_created', CreateCampaignPage::class);
208 }
209
210 /**
211 * @since 4.0.0
212 */
213 private function registerCampaignBlocks()
214 {
215 register_meta('post',
216 CampaignPageMetaKeys::CAMPAIGN_ID,
217 [
218 'type' => 'integer',
219 'description' => 'Campaign ID for GiveWP',
220 'single' => true,
221 'show_in_rest' => true,
222 ]
223 );
224
225 Hooks::addAction('rest_api_init', Actions\RegisterCampaignIdRestField::class);
226 Hooks::addAction('init', Actions\RegisterCampaignBlocks::class);
227 Hooks::addAction('enqueue_block_editor_assets', Actions\RegisterCampaignBlocks::class, 'loadBlockEditorAssets');
228 Hooks::addAction('init', Actions\RegisterCampaignShortcodes::class);
229 }
230
231 /**
232 * @since 4.6.1 Move to admin_enqueue_scripts hook
233 * @since 4.0.0
234 */
235 private function loadCampaignAdminOptions()
236 {
237 add_action('admin_enqueue_scripts', function () {
238 if (CampaignsAdminPage::isShowingDetailsPage()) {
239 give(LoadCampaignAdminOptions::class)();
240 }
241 });
242 }
243
244 /**
245 * @since 4.0.0
246 *
247 * @return void
248 */
249 private function addNewBadgeToMenu(): void
250 {
251 (new AddNewBadgeToAdminMenuItem())();
252 }
253 }
254