Actions
11 months ago
DataTransferObjects
11 months ago
Endpoints
10 months ago
Factories
11 months ago
LegacyListeners
3 years ago
ListTable
1 year ago
Migrations
1 year ago
Models
10 months ago
Repositories
11 months ago
ValueObjects
11 months ago
ViewModels
10 months ago
resources
10 months ago
ServiceProvider.php
11 months ago
SubscriptionQuery.php
11 months ago
SubscriptionsAdminPage.php
11 months ago
ServiceProvider.php
105 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Give\Subscriptions; |
| 4 | |
| 5 | use Give\Framework\Migrations\MigrationsRegister; |
| 6 | use Give\Helpers\Hooks; |
| 7 | use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface; |
| 8 | use Give\Subscriptions\Actions\LoadSubscriptionAdminOptions; |
| 9 | use Give\Subscriptions\Actions\RegisterSubscriptionEntity; |
| 10 | use Give\Subscriptions\LegacyListeners\DispatchGiveSubscriptionPostCreate; |
| 11 | use Give\Subscriptions\LegacyListeners\DispatchGiveSubscriptionPreCreate; |
| 12 | use Give\Subscriptions\ListTable\SubscriptionsListTable; |
| 13 | use Give\Subscriptions\Migrations\AddPaymentModeToSubscriptionTable; |
| 14 | use Give\Subscriptions\Migrations\BackfillMissingCampaignIdForDonations; |
| 15 | use Give\Subscriptions\Migrations\CreateSubscriptionTables; |
| 16 | use Give\Subscriptions\Repositories\SubscriptionNotesRepository; |
| 17 | use Give\Subscriptions\Repositories\SubscriptionRepository; |
| 18 | |
| 19 | class ServiceProvider implements ServiceProviderInterface |
| 20 | { |
| 21 | /** |
| 22 | * @inheritDoc |
| 23 | * |
| 24 | * @since 4.8.0 Register Subscription Repository to container |
| 25 | */ |
| 26 | public function register() |
| 27 | { |
| 28 | give()->singleton('subscriptions', SubscriptionRepository::class); |
| 29 | give()->singleton('subscriptionNotes', SubscriptionNotesRepository::class); |
| 30 | give()->singleton(SubscriptionsListTable::class, function() { |
| 31 | $listTable = new SubscriptionsListTable(); |
| 32 | Hooks::doAction('givewp_subscriptions_list_table', $listTable); |
| 33 | |
| 34 | return $listTable; |
| 35 | }); |
| 36 | } |
| 37 | |
| 38 | /** |
| 39 | * @inheritDoc |
| 40 | */ |
| 41 | public function boot() |
| 42 | { |
| 43 | $this->bootLegacyListeners(); |
| 44 | $this->registerMigrations(); |
| 45 | $this->registerSubscriptionEntity(); |
| 46 | $this->registerSubscriptionAdminOptions(); |
| 47 | |
| 48 | $userId = get_current_user_id(); |
| 49 | $showLegacy = get_user_meta($userId, '_give_subscriptions_archive_show_legacy', true); |
| 50 | // only register new admin page if user hasn't chosen to use the old one |
| 51 | if (empty($showLegacy) && SubscriptionsAdminPage::isShowing()) { |
| 52 | Hooks::addAction('give_forms_page_give-subscriptions', SubscriptionsAdminPage::class, 'render', 1); |
| 53 | } elseif (SubscriptionsAdminPage::isShowing()) { |
| 54 | Hooks::addAction('admin_head', SubscriptionsAdminPage::class, 'renderReactSwitch'); |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | /** |
| 59 | * Legacy Listeners |
| 60 | * |
| 61 | * @since 2.19.6 |
| 62 | */ |
| 63 | private function bootLegacyListeners() |
| 64 | { |
| 65 | Hooks::addAction('givewp_subscription_creating', DispatchGiveSubscriptionPreCreate::class); |
| 66 | Hooks::addAction('givewp_subscription_created', DispatchGiveSubscriptionPostCreate::class); |
| 67 | } |
| 68 | |
| 69 | /** |
| 70 | * Registers database migrations with the MigrationsRunner |
| 71 | * |
| 72 | * @since 2.24.0 |
| 73 | */ |
| 74 | private function registerMigrations() |
| 75 | { |
| 76 | /** @var MigrationsRegister $register */ |
| 77 | $register = give(MigrationsRegister::class); |
| 78 | $register->addMigrations([ |
| 79 | CreateSubscriptionTables::class, |
| 80 | AddPaymentModeToSubscriptionTable::class, |
| 81 | BackfillMissingCampaignIdForDonations::class, |
| 82 | ]); |
| 83 | } |
| 84 | |
| 85 | /** |
| 86 | * @since 4.8.0 |
| 87 | */ |
| 88 | private function registerSubscriptionEntity() |
| 89 | { |
| 90 | Hooks::addAction('init', RegisterSubscriptionEntity::class); |
| 91 | } |
| 92 | |
| 93 | /** |
| 94 | * @since 4.8.0 |
| 95 | */ |
| 96 | private function registerSubscriptionAdminOptions() |
| 97 | { |
| 98 | add_action('admin_enqueue_scripts', function() { |
| 99 | if (SubscriptionsAdminPage::isShowing()) { |
| 100 | give(LoadSubscriptionAdminOptions::class)(); |
| 101 | } |
| 102 | }); |
| 103 | } |
| 104 | } |
| 105 |