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 / booktics.php

booktics.php in Booktics – Appointment Booking Calendar for Service Businesses 1.0.29, at base/booktics.php

258 lines 5.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Booktics Main Class
4 *
5 * @package Booktics/Booktics
6 */
7
8 namespace Booktics;
9
10 if ( ! defined( 'ABSPATH' ) ) exit;
11
12 use Booktics\Container\Container;
13
14 /**
15 * Class Booktics
16 */
17 class Booktics {
18
19 /**
20 * Plugin version.
21 *
22 * @var string
23 */
24 public $version;
25
26 /**
27 * Plugin file.
28 *
29 * @var string
30 */
31 public $plugin_file;
32
33 /**
34 * Plugin directory.
35 *
36 * @var string
37 */
38 public $plugin_directory;
39
40 /**
41 * @var string
42 */
43 public $build_url;
44
45 /**
46 * Plugin base name.
47 *
48 * @var string
49 */
50 public $basename;
51
52 /**
53 * Plugin text directory path.
54 *
55 * @var string
56 */
57 public $text_domain_directory;
58
59 /**
60 * Plugin text directory path.
61 *
62 * @var string
63 */
64 public $template_directory;
65
66 /**
67 * Plugin assets directory path.
68 *
69 * @var string
70 */
71 public $assets_url;
72
73 /**
74 * Plugin url.
75 *
76 * @var string
77 */
78 public $plugin_url;
79
80 /**
81 * Container that holds all the services.
82 *
83 * @var Container
84 */
85 public $container;
86
87 /**
88 * Booktics Constructor.
89 */
90 public function __construct() {
91 $this->init();
92 add_action( 'init', array( $this, 'init_classes' ) );
93 }
94
95 /**
96 * Initialize the plugin.
97 *
98 * @return void
99 */
100 protected function init(): void {
101 $this->version = BOOKTICS_VERSION;
102 $this->plugin_file = BOOKTICS_FILE;
103 $this->plugin_directory = BOOKTICS_DIR;
104 $this->basename = plugin_basename( $this->plugin_file );
105 $this->text_domain_directory = $this->plugin_directory . '/languages';
106 $this->template_directory = $this->plugin_directory . '/templates';
107 $this->plugin_url = plugins_url( '', $this->plugin_file );
108 $this->assets_url = $this->plugin_url . '/assets';
109 $this->build_url = $this->plugin_url . '/build';
110 register_activation_hook(
111 $this->plugin_file, array(
112 $this,
113 'activate',
114 )
115 );
116 register_deactivation_hook(
117 $this->plugin_file, array(
118 $this,
119 'deactivate',
120 )
121 );
122 }
123
124 /**
125 * Init classes
126 *
127 * @return void
128 */
129 public function init_classes() {
130 self::register_custom_post_type();
131
132 ( new \Booktics\Base\Services\Post_Status_Service() )->register();
133
134 $service_provider = $this->get_container()->get( 'global' );
135
136 // Initilize Plugin Banner Notice.
137 Plugin_Notice::run();
138
139 self::version_check();
140 }
141
142 /**
143 * Get container
144 *
145 * @return Container
146 */
147 public function get_container() {
148 return booktics_container();
149 }
150
151 /**
152 * Initializes the Booktics class.
153 *
154 * Checks for an existing WeMeal instance
155 * and if it doesn't find one, creates it.
156 *
157 * @return Booktics
158 */
159 public static function instance(): Booktics {
160 static $instance = false;
161
162 if ( ! $instance ) {
163 $instance = new self();
164 }
165
166 return $instance;
167 }
168
169 /**
170 * Trigger plugin activation class
171 *
172 * @return void
173 */
174 public function activate() {
175 Activate::handle();
176 }
177
178 /**
179 * Trigger plugin deactivation
180 *
181 * @return void
182 */
183 public function deactivate() {
184 Deactivate::handle();
185 }
186
187 /**
188 * returns assets url
189 *
190 * @return string
191 */
192 public static function assets_url(): string {
193 return trailingslashit( plugins_url( '', BOOKTICS_FILE ) . '/assets' );
194 }
195
196 /**
197 * Check if the plugin version is up to date
198 *
199 * @return void
200 */
201 public static function version_check() {
202 $latest_version = BOOKTICS_VERSION;
203 if ( is_multisite() ) {
204 $sites = get_sites();
205
206 foreach ( $sites as $site ) {
207 switch_to_blog( $site->blog_id );
208
209 $installed_version = booktics_get_option( 'booktics_version' );
210 if ( $installed_version < $latest_version ) {
211 self::run_migration();
212 booktics_update_option( 'booktics_version', booktics()->version );
213 }
214
215 restore_current_blog();
216 }
217 } else {
218 $installed_version = booktics_get_option( 'booktics_version' );
219 if ( $installed_version < $latest_version ) {
220 self::run_migration();
221 booktics_update_option( 'booktics_version', booktics()->version );
222 }
223 }
224 }
225
226 /**
227 * Run migration
228 *
229 * @return void
230 */
231 public static function run_migration() {
232 Installer::create_tables();
233 }
234
235 /**
236 * Register post type
237 *
238 * @return void
239 */
240 public static function register_custom_post_type() {
241 register_post_type(
242 'booktics-service', array(
243 'labels' => array(
244 'name' => __( 'Services', 'booktics' ),
245 'singular_name' => __( 'Service', 'booktics' ),
246 ),
247 'public' => true,
248 'has_archive' => true,
249 'has_single' => true,
250 'rewrite' => true,
251 'supports' => array( 'title', 'editor', 'thumbnail' ),
252 'show_in_rest' => true,
253 'show_in_menu' => false,
254 )
255 );
256 }
257 }
258