| @@ -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 |