PluginProbe
Timetics – Appointment Booking Calendar & Scheduling / 1.0.64
Timetics – Appointment Booking Calendar & Scheduling v1.0.64
1.0.64 1.0.62 1.0.63 1.0.61 1.0.60 1.0.59 1.0.58 1.0.57 1.0.56 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.19 1.0.2 1.0.20 1.0.21 All 65 releases
← All changes | timetics.php +28 -9 1.0.56 → 1.0.64 View file →
@@ -3,9 +3,9 @@
3 3 /**
4 4 * Plugin Name: Timetics - Appointment Booking Calendar & Scheduling System
5 5 * Plugin URI: https://arraytics.com/timetics/
6 6 * Description: Schedule, Appointment and Seat Booking plugin.
7 - * Version: 1.0.56
7 + * Version: 1.0.64
8 8 * Requires at least: 5.2
9 9 * Requires PHP: 7.3
10 10 * Author: Arraytics
11 11 * Author URI: https://arraytics.com/
@@ -55,9 +55,9 @@
55 55 *
56 56 * @return string
57 57 */
58 58 public static function get_version() {
59 - return '1.0.56';
59 + return '1.0.64';
60 60 }
61 61
62 62 /**
63 63 * Requirements Array
@@ -116,12 +116,31 @@
116 116 * @since 1.0
117 117 * @return void
118 118 */
119 119 public function load_text_domain() {
120 - $locale = apply_filters( 'timetics_plugin_locale', get_user_locale(), 'timetics' );
120 + $locale = determine_locale();
121 + // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WordPress core localization hook.
122 + $locale = apply_filters( 'plugin_locale', $locale, 'timetics' );
123 + $locale = apply_filters( 'timetics_plugin_locale', $locale, 'timetics' );
121 124
122 - unload_textdomain( 'timetics' );
123 - load_textdomain( 'timetics', WP_LANG_DIR . '/timetics/timetics-' . $locale . '.mo' );
125 + $mofile = 'timetics-' . $locale . '.mo';
126 +
127 + // Loco "Custom" location.
128 + if ( file_exists( WP_LANG_DIR . '/loco/plugins/' . $mofile ) ) {
129 + load_textdomain( 'timetics', WP_LANG_DIR . '/loco/plugins/' . $mofile );
130 + }
131 +
132 + // Loco "System" location.
133 + if ( file_exists( WP_LANG_DIR . '/plugins/' . $mofile ) ) {
134 + load_textdomain( 'timetics', WP_LANG_DIR . '/plugins/' . $mofile );
135 + }
136 +
137 + // Bundled translations remain available while WordPress loads language
138 + // packs for this text domain automatically.
139 + $bundled_mofile = plugin_dir_path( __FILE__ ) . 'languages/' . $mofile;
140 + if ( file_exists( $bundled_mofile ) ) {
141 + load_textdomain( 'timetics', $bundled_mofile );
142 + }
124 143 }
125 144
126 145 /**
127 146 * Initialize Plugin Modules
@@ -137,9 +156,8 @@
137 156
138 157 // block for showing banner.
139 158 require_once plugin_dir_path( __FILE__ ) . '/utils/notice/notice.php';
140 159 require_once plugin_dir_path( __FILE__ ) . '/utils/banner/banner.php';
141 - require_once plugin_dir_path( __FILE__ ) . '/utils/pro-awareness/pro-awareness.php';
142 160
143 161 // Include the bootstrap file if not loaded.
144 162 if ( ! class_exists( 'Timetics\Bootstrap' ) ) {
145 163 require_once self::get_plugin_dir() . 'bootstrap.php';
@@ -147,11 +165,8 @@
147 165
148 166 // init notice class.
149 167 \Oxaim\Libs\Notice::init();
150 168
151 - // init pro menu class.
152 - \Wpmet\Libs\Pro_Awareness::init();
153 -
154 169 // Initialize the bootstraper if exists.
155 170 if ( class_exists( 'Timetics\Bootstrap' ) ) {
156 171
157 172 // Initialize all modules through plugins_loaded.
@@ -295,8 +310,11 @@
295 310
296 311 // Create new woocommerce product category for timetics meeting
297 312 timetics_add_woocommerce_product_cat();
298 313
314 + // Force rewrite-rule flush on activation; the maybe_flush_rules guard handles subsequent upgrades.
315 + delete_option( 'timetics_rewrite_version' );
316 +
299 317 // Update option for onboard settings.
300 318 $timetics_onboard_setup = get_option( 'timetics_onboard_setup' );
301 319
302 320 $timetics_demo_data = get_option( 'timetics_demo_data' );
@@ -317,8 +335,9 @@
317 335 *
318 336 * @return void
319 337 */
320 338 public function deactivate() {
339 + wp_clear_scheduled_hook( 'timetics_cleanup_unpaid_bookings' );
321 340 }
322 341
323 342 /**
324 343 * Quit Plugin Execution