PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.2.0
GiveWP – Donation Plugin and Fundraising Platform v4.2.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 1 year ago Blocks 1 year ago Controllers 1 year ago DataTransferObjects 1 year ago Factories 1 year ago ListTable 1 year ago Migrations 1 year ago Models 1 year ago Repositories 1 year ago ValueObjects 1 year ago ViewModels 1 year ago resources 1 year ago CampaignDonationQuery.php 1 year ago CampaignSubscriptionQuery.php 1 year ago CampaignsAdminPage.php 1 year ago CampaignsDataQuery.php 1 year ago ServiceProvider.php 1 year ago
ServiceProvider.php
249 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\LoadCampaignOptions;
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->loadCampaignOptions();
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.0.0
233 */
234 private function loadCampaignOptions()
235 {
236 Hooks::addAction('init', LoadCampaignOptions::class);
237 }
238
239 /**
240 * @since 4.0.0
241 *
242 * @return void
243 */
244 private function addNewBadgeToMenu(): void
245 {
246 (new AddNewBadgeToAdminMenuItem())();
247 }
248 }
249