PluginProbe
Booktics – Appointment Booking Calendar for Service Businesses / 1.0.29
Booktics – Appointment Booking Calendar for Service Businesses v1.0.29
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.29, at base/providers/global-service-provider.php

191 lines 5.9 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\Module\Woocommerce_Addon\Woocommerce_Service_Provider;
37 use Booktics\Add_To_Calendar\Add_To_Calendar_Service_Provider;
38
39 /**
40 * Global_Service Provider class
41 */
42 class Global_Service_Provider implements Provider_Contract {
43 /**
44 * Store container
45 *
46 * @var Container
47 */
48 protected Container $container;
49
50 /**
51 * Store service providers
52 *
53 * @var array<string, string>
54 */
55 protected array $providers = array(
56 'assets' => Assets_Service_Provider::class,
57 'admin' => Admin_Service_Provider::class,
58 'appointment' => Appointment_Service_Provider::class,
59 'settings' => Settings_Service_Provider::class,
60 'team-member' => Team_Member_Service_Provider::class,
61 'onboard' => Onboard_Service_Provider::class,
62 'customer' => Customer_Service_Provider::class,
63 'dashboard' => Dashboard_Service_Provider::class,
64 'payment' => Payment_Service_Provider::class,
65 'service' => Service_Service_Provider::class,
66 'shortcode' => Shortcode_Service_Provider::class,
67 'category' => Category_Service_Provider::class,
68 'taxonomy' => Taxonomy_Service_Provider::class,
69 'cart' => Cart_Service_Provider::class,
70 'order' => Order_Service_Provider::class,
71 'addcalendar' => Add_To_Calendar_Service_Provider::class,
72 'extension' => Extension_Service_Provider::class,
73 'module' => Module_Service_Provider::class,
74 'fluentcrm' => FluentCRM_Service_Provider::class,
75 'zapier' => Zapier_Service_Provider::class,
76 'zoho' => Zoho_Service_Provider::class,
77 'mailpoet' => Mailpoet_Service_Provider::class,
78 'pabbly' => Pabbly_Service_Provider::class,
79 'stripe' => Stripe_Service_Provider::class,
80 'woocommerce' => Woocommerce_Service_Provider::class,
81 'google-calendar' => Google_Service_Provider::class,
82 );
83
84 /**
85 * GlobalServiceProvider
86 */
87 public function __construct() {
88 $this->container = booktics_container();
89 $this->register();
90 $this->boot();
91 }
92
93 /**
94 * Register all module providers
95 *
96 * @return void
97 */
98 public function register() {
99 $providers = apply_filters( 'booktics_service_providers', $this->providers );
100
101 if ( $providers ) {
102 foreach ( $providers as $key => $provider ) {
103 $this->container->addServiceProvider( $key, $provider );
104 }
105 }
106 }
107
108 /**
109 * Boot all services from providers
110 *
111 * @return void
112 */
113 public function boot(): void {
114 $this->boot_core_services();
115 $this->boot_module_services();
116 }
117
118 private function boot_core_services() {
119 $services = array(
120 'assets',
121 'admin',
122 'appointment',
123 'team-member',
124 'settings',
125 'onboard',
126 'customer',
127 'dashboard',
128 'payment',
129 'service',
130 'shortcode',
131 'category',
132 'taxonomy',
133 'order',
134 'cart',
135 'extension',
136 'module',
137 'addcalendar',
138 );
139
140 $services = apply_filters( 'booktics_services', $services );
141
142 foreach ( $services as $service ) {
143 if ( $this->module_is_off( $service ) ) {
144 continue;
145 }
146
147 $this->container->get( $service );
148 }
149 }
150
151 private function boot_module_services() {
152 $module_services = array(
153 'google-calendar',
154 'fluentcrm',
155 'zapier',
156 'zoho',
157 'mailpoet',
158 'pabbly',
159 'stripe',
160 'woocommerce',
161 );
162
163 foreach ( $module_services as $module ) {
164 if ( $this->module_is_off( $module ) ) {
165 continue;
166 }
167
168 $this->container->get( $module );
169 }
170 }
171
172 /**
173 * Check if module is off
174 *
175 * Every modules service provider will check if the module is off by module key
176 * Module key and module slug is always same
177 *
178 * @param string $module
179 * @return bool
180 */
181 public function module_is_off( string $module ): bool {
182 $modules = booktics_modules_list();
183
184 if ( ! isset( $modules[ $module ] ) ) {
185 return false;
186 }
187
188 return ! booktics_extension()->is_enabled( $module );
189 }
190 }
191