PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.8.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.8.1
4.16.8.1 4.16.8 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 All 254 releases
give / src / EventTickets / ServiceProvider.php

ServiceProvider.php in GiveWP – Donation Plugin and Fundraising Platform 4.16.8.1, at src/EventTickets/ServiceProvider.php

133 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\EventTickets;
4
5 use Give\BetaFeatures\Facades\FeatureFlag;
6 use Give\EventTickets\Actions\AddEventTicketsToDonationConfirmationPageDonationTotal;
7 use Give\EventTickets\Actions\AddEventTicketsToDonationConfirmationPageEventTicketDetails;
8 use Give\EventTickets\Actions\RegisterEventsMenuItem;
9 use Give\EventTickets\Actions\ReleaseEventTicketsForDonation;
10 use Give\EventTickets\Actions\RenderDonationFormBlock;
11 use Give\EventTickets\Actions\UpdateDonationConfirmationPageReceiptDonationAmount;
12 use Give\EventTickets\Repositories\EventRepository;
13 use Give\EventTickets\Repositories\EventTicketRepository;
14 use Give\EventTickets\Repositories\EventTicketTypeRepository;
15 use Give\Framework\Migrations\MigrationsRegister;
16 use Give\Helpers\Hooks;
17 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
18
19 /**
20 * @since 3.6.0
21 */
22 class ServiceProvider implements ServiceProviderInterface
23 {
24 /**
25 * @inheritDoc
26 *
27 * @since 3.6.0
28 */
29 public function register(): void
30 {
31 if (!FeatureFlag::eventTickets()) {
32 return;
33 }
34
35 global $wpdb;
36 $wpdb->give_events = "{$wpdb->prefix}give_events";
37 $wpdb->give_event_tickets = "{$wpdb->prefix}give_event_tickets";
38 $wpdb->give_event_ticket_types = "{$wpdb->prefix}give_event_ticket_types";
39
40 give()->singleton('events', EventRepository::class);
41 give()->singleton('eventTickets', EventTicketRepository::class);
42 give()->singleton('eventTicketTypes', EventTicketTypeRepository::class);
43 }
44
45 /**
46 * @inheritDoc
47 *
48 * @since 4.16.8.1 Register the donation-status listener that releases tickets.
49 * @since 3.6.0
50 */
51 public function boot(): void
52 {
53 if (!FeatureFlag::eventTickets()) {
54 return;
55 }
56
57 $this->registerMigrations();
58 $this->registerRoutes();
59 $this->registerMenus();
60 $this->registerFormExtension();
61 $this->registerDonationStatusListener();
62 }
63
64 /**
65 * @since 3.6.0
66 */
67 private function registerMigrations(): void
68 {
69 give(MigrationsRegister::class)->addMigrations([
70 Migrations\CreateEventsTable::class,
71 Migrations\CreateEventTicketTypesTable::class,
72 Migrations\CreateEventTicketsTable::class,
73 Migrations\AddAmountColumnToEventTicketsTable::class,
74 ]);
75 }
76
77 /**
78 * @since 3.6.0
79 */
80 private function registerRoutes(): void
81 {
82 Hooks::addAction('rest_api_init', Routes\CreateEvent::class, 'registerRoute');
83 Hooks::addAction('rest_api_init', Routes\CreateEventTicketType::class, 'registerRoute');
84 Hooks::addAction('rest_api_init', Routes\DeleteEventsListTable::class, 'registerRoute');
85 Hooks::addAction('rest_api_init', Routes\DeleteEventTicketType::class, 'registerRoute');
86 Hooks::addAction('rest_api_init', Routes\GetEvents::class, 'registerRoute');
87 Hooks::addAction('rest_api_init', Routes\GetEventsListTable::class, 'registerRoute');
88 Hooks::addAction('rest_api_init', Routes\GetEventForms::class, 'registerRoute');
89 Hooks::addAction('rest_api_init', Routes\GetEventTickets::class, 'registerRoute');
90 Hooks::addAction('rest_api_init', Routes\GetEventTicketTypes::class, 'registerRoute');
91 Hooks::addAction('rest_api_init', Routes\GetEventTicketTypeTickets::class, 'registerRoute');
92 Hooks::addAction('rest_api_init', Routes\UpdateEvent::class, 'registerRoute');
93 Hooks::addAction('rest_api_init', Routes\UpdateEventTicketType::class, 'registerRoute');
94 }
95
96 /**
97 * @since 3.6.0
98 */
99 private function registerMenus(): void
100 {
101 Hooks::addAction('admin_menu', RegisterEventsMenuItem::class, '__invoke', 15);
102 }
103
104 /**
105 * @since 3.6.0
106 */
107 private function registerFormExtension()
108 {
109 Hooks::addAction('givewp_form_builder_enqueue_scripts', Actions\EnqueueFormBuilderScripts::class);
110 Hooks::addAction('givewp_donation_form_enqueue_scripts', Actions\EnqueueDonationFormScripts::class);
111 Hooks::addFilter(
112 'givewp_donation_form_block_render_givewp/event-tickets',
113 RenderDonationFormBlock::class,
114 '__invoke',
115 10,
116 4
117 );
118
119 //TODO: write unit tests for these actions
120 Hooks::addAction('givewp_generate_confirmation_page_receipt_before_donation_total', AddEventTicketsToDonationConfirmationPageDonationTotal::class);
121 Hooks::addAction('givewp_generate_confirmation_page_receipt_fill_event_ticket_details', AddEventTicketsToDonationConfirmationPageEventTicketDetails::class);
122 Hooks::addFilter('givewp_generate_confirmation_page_receipt_detail_donation_amount', UpdateDonationConfirmationPageReceiptDonationAmount::class, '__invoke', 10, 2);
123 }
124
125 /**
126 * @since 4.16.8.1
127 */
128 private function registerDonationStatusListener(): void
129 {
130 Hooks::addAction('givewp_donation_updated', ReleaseEventTicketsForDonation::class);
131 }
132 }
133