PluginProbe
Booktics – Appointment Booking Calendar for Service Businesses / 1.0.23
Booktics – Appointment Booking Calendar for Service Businesses v1.0.23
1.0.29 1.0.28 1.0.27 1.0.26 1.0.25 1.0.24 1.0.23 1.0.22 1.0.21 1.0.20 1.0.19 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.2 1.0.3 All 31 releases
booktics / base / providers / global-service-provider.php

global-service-provider.php in Booktics – Appointment Booking Calendar for Service Businesses 1.0.23, at base/providers/global-service-provider.php

188 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Global service provider that will responsible for all service provider
4 *
5 * @package Booktics/Providers
6 */
7
8 namespace Booktics\Providers;
9
10 use Booktics\Admin\Admin_Service_Provider;
11 use Booktics\Appointment\Appointment_Service_Provider;
12 use Booktics\Assets\Assets_Service_Provider;
13 use Booktics\Cart\Cart_Service_Provider;
14 use Booktics\Category\Category_Service_Provider;
15 use Booktics\Container\Container;
16 use Booktics\Contracts\Provider_Contract;
17 use Booktics\Customer\Customer_Service_Provider;
18 use Booktics\Dashboard\Dashboard_Service_Provider;
19 use Booktics\Extensions\Extension_Service_Provider;
20 use Booktics\Module\Stripe_Addon\Stripe_Service_Provider;
21 use Booktics\Onboard\Onboard_Service_Provider;
22 use Booktics\Order\Order_Service_Provider;
23 use Booktics\Payment\Payment_Service_Provider;
24 use Booktics\Service\Service_Service_Provider;
25 use Booktics\Settings\Settings_Service_Provider;
26 use Booktics\Shortcode\Shortcode_Service_Provider;
27 use Booktics\Taxonomy\Taxonomy_Service_Provider;
28 use Booktics\Team_Member\Team_Member_Service_Provider;
29 use Booktics\Extensions\Module_Service_Provider;
30 use Booktics\Module\FluentCrm\FluentCRM_Service_Provider;
31 use Booktics\Module\Pabbly\Pabbly_Service_Provider;
32 use Booktics\Module\Zapier\Zapier_Service_Provider;
33 use Booktics\Module\Zoho\Zoho_Service_Provider;
34 use Booktics\Module\Mailpoet\Mailpoet_Service_Provider;
35 use Booktics\Module\Google_Calendar\Google_Service_Provider;
36 use Booktics\Add_To_Calendar\Add_To_Calendar_Service_Provider;
37
38 /**
39 * Global_Service Provider class
40 */
41 class Global_Service_Provider implements Provider_Contract {
42 /**
43 * Store container
44 *
45 * @var Container
46 */
47 protected Container $container;
48
49 /**
50 * Store service providers
51 *
52 * @var array<string, string>
53 */
54 protected array $providers = array(
55 'assets' => Assets_Service_Provider::class,
56 'admin' => Admin_Service_Provider::class,
57 'appointment' => Appointment_Service_Provider::class,
58 'settings' => Settings_Service_Provider::class,
59 'team-member' => Team_Member_Service_Provider::class,
60 'onboard' => Onboard_Service_Provider::class,
61 'customer' => Customer_Service_Provider::class,
62 'dashboard' => Dashboard_Service_Provider::class,
63 'payment' => Payment_Service_Provider::class,
64 'service' => Service_Service_Provider::class,
65 'shortcode' => Shortcode_Service_Provider::class,
66 'category' => Category_Service_Provider::class,
67 'taxonomy' => Taxonomy_Service_Provider::class,
68 'cart' => Cart_Service_Provider::class,
69 'order' => Order_Service_Provider::class,
70 'addcalendar' => Add_To_Calendar_Service_Provider::class,
71 'extension' => Extension_Service_Provider::class,
72 'module' => Module_Service_Provider::class,
73 'fluentcrm' => FluentCRM_Service_Provider::class,
74 'zapier' => Zapier_Service_Provider::class,
75 'zoho' => Zoho_Service_Provider::class,
76 'mailpoet' => Mailpoet_Service_Provider::class,
77 'pabbly' => Pabbly_Service_Provider::class,
78 'stripe' => Stripe_Service_Provider::class,
79 'google-calendar' => Google_Service_Provider::class,
80 );
81
82 /**
83 * GlobalServiceProvider
84 */
85 public function __construct() {
86 $this->container = booktics_container();
87 $this->register();
88 $this->boot();
89 }
90
91 /**
92 * Register all module providers
93 *
94 * @return void
95 */
96 public function register() {
97 $providers = apply_filters( 'booktics_service_providers', $this->providers );
98
99 if ( $providers ) {
100 foreach ( $providers as $key => $provider ) {
101 $this->container->addServiceProvider( $key, $provider );
102 }
103 }
104 }
105
106 /**
107 * Boot all services from providers
108 *
109 * @return void
110 */
111 public function boot(): void {
112 $this->boot_core_services();
113 $this->boot_module_services();
114 }
115
116 private function boot_core_services() {
117 $services = array(
118 'assets',
119 'admin',
120 'appointment',
121 'team-member',
122 'settings',
123 'onboard',
124 'customer',
125 'dashboard',
126 'payment',
127 'service',
128 'shortcode',
129 'category',
130 'taxonomy',
131 'order',
132 'cart',
133 'extension',
134 'module',
135 'addcalendar',
136 );
137
138 $services = apply_filters( 'booktics_services', $services );
139
140 foreach ( $services as $service ) {
141 if ( $this->module_is_off( $service ) ) {
142 continue;
143 }
144
145 $this->container->get( $service );
146 }
147 }
148
149 private function boot_module_services() {
150 $module_services = array(
151 'google-calendar',
152 'fluentcrm',
153 'zapier',
154 'zoho',
155 'mailpoet',
156 'pabbly',
157 'stripe',
158 );
159
160 foreach ( $module_services as $module ) {
161 if ( $this->module_is_off( $module ) ) {
162 continue;
163 }
164
165 $this->container->get( $module );
166 }
167 }
168
169 /**
170 * Check if module is off
171 *
172 * Every modules service provider will check if the module is off by module key
173 * Module key and module slug is always same
174 *
175 * @param string $module
176 * @return bool
177 */
178 public function module_is_off( string $module ): bool {
179 $modules = booktics_modules_list();
180
181 if ( ! isset( $modules[ $module ] ) ) {
182 return false;
183 }
184
185 return ! booktics_extension()->is_enabled( $module );
186 }
187 }
188