PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.6
ShopBuilder – WooCommerce Builder For Elementor v3.2.6
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/ShopBuilder.php +184 -165 2.1.43.2.6 View file →
@@ -4,14 +4,19 @@
4 4 *
5 5 * @package RadiusTheme\SB
6 6 */
7 7
8 +namespace RadiusTheme\SB;
8 9
10 +use RadiusTheme\SB\AI\AIinit;
11 +use RadiusTheme\SB\Helpers\Cache;
12 +use RadiusTheme\SB\Helpers\Migration;
9 13 use RadiusTheme\SB\Helpers\Installation;
10 14 use RadiusTheme\SB\Modules\ModuleManager;
11 15 use RadiusTheme\SB\Traits\SingletonTrait;
12 16 use RadiusTheme\SB\Controllers\Shortcodes;
13 17 use RadiusTheme\SB\Controllers\Dependencies;
18 +use RadiusTheme\SB\Controllers\CacheController;
14 19 use RadiusTheme\SB\Controllers\Admin\AdminInit;
15 20 use RadiusTheme\SB\Controllers\AssetsController;
16 21 use RadiusTheme\SB\Controllers\BuilderController;
17 22 use RadiusTheme\SB\Controllers\SupportController;
@@ -18,9 +23,9 @@
18 23 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
19 24 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
20 25 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
21 26 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
22 -use RadiusTheme\SB\Helpers\Migration;
27 +use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
23 28
24 29 // Do not allow directly accessing this file.
25 30 if ( ! defined( 'ABSPATH' ) ) {
26 31 exit( 'This script cannot be accessed directly.' );
@@ -25,214 +30,228 @@
25 30 if ( ! defined( 'ABSPATH' ) ) {
26 31 exit( 'This script cannot be accessed directly.' );
27 32 }
28 33
29 -require_once RTSB_PATH . 'vendor/autoload.php';
34 +/**
35 + * Main initialization class.
36 + */
37 +final class ShopBuilder {
30 38
31 -if ( ! class_exists( ShopBuilder::class ) ) {
32 39 /**
33 - * Main initialization class.
40 + * Nonce id
41 + *
42 + * @var string
34 43 */
35 - final class ShopBuilder {
44 + public $nonceId = '__rtsb_wpnonce';
36 45
37 - /**
38 - * Nonce id
39 - *
40 - * @var string
41 - */
42 - public $nonceId = '__rtsb_wpnonce';
46 + /**
47 + * Nonce Text
48 + *
49 + * @var string
50 + */
51 + public $nonceText = 'rtsb_nonce';
43 52
44 - /**
45 - * Nonce Text
46 - *
47 - * @var string
48 - */
49 - public $nonceText = 'rtsb_nonce';
53 + /**
54 + * Post Type.
55 + *
56 + * @var string
57 + */
58 + public $post_type;
50 59
51 - /**
52 - * Post Type.
53 - *
54 - * @var string
55 - */
56 - public $post_type;
60 + /**
61 + * Post Type.
62 + *
63 + * @var string
64 + */
65 + public $current_theme;
66 + /**
67 + * Singleton
68 + */
57 69
58 - /**
59 - * Post Type.
60 - *
61 - * @var string
62 - */
63 - public $current_theme;
64 - /**
65 - * Singleton
66 - */
70 + /**
71 + * URL for fetch API
72 + *
73 + * @var string
74 + */
75 + public $BASE_API = 'https://shopbuilderwp.com/demo/wp-json/rtsb/v1/layouts/';
67 76
68 - /**
69 - * URL for fetch API
70 - * @var string
71 - */
72 - public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
77 + use SingletonTrait;
73 78
74 - use SingletonTrait;
79 + /**
80 + * Class Constructor
81 + */
82 + private function __construct() {
83 + $this->define_constants();
84 + $this->post_type = 'product';
85 + $this->current_theme = wp_get_theme()->get( 'Template' ) ? wp_get_theme()->get( 'Template' ) : ( wp_get_theme()->get( 'TextDomain' ) ? wp_get_theme()->get( 'TextDomain' ) : strtolower( str_replace( ' ', '', wp_get_theme()->get( 'Name' ) ) ) );
86 + add_action( 'plugins_loaded', [ $this, 'init' ], 15 );
87 + add_action( 'upgrader_process_complete', [ $this, 'maybe_run_after_update' ], 10, 2 );
75 88
76 - /**
77 - * Class Constructor
78 - */
79 - private function __construct() {
80 - $this->define_constants();
81 - $this->post_type = 'product';
82 - $this->current_theme = wp_get_theme()->get( 'Template' ) ? wp_get_theme()->get( 'Template' ) : wp_get_theme()->get( 'TextDomain' );
83 - add_action( 'init', [ $this, 'language' ] );
84 - add_action( 'plugins_loaded', [ $this, 'init' ], 15 );
89 + // Register Plugin Active Hook.
90 + register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
85 91
86 - // Register Plugin Active Hook.
87 - register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
92 + // Register Plugin Deactivate Hook.
93 + register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
88 94
89 - // Register Plugin Deactivate Hook.
90 - register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
91 -
95 + if ( Dependencies::instance()->check() ) {
92 96 SupportController::instance();
93 -
94 - // HPOS Declare compatibility
95 - add_action(
96 - 'before_woocommerce_init',
97 - function() {
98 - if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
99 - \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RTSB_FILE, true );
100 - }
97 + }
98 + // HPOS Declare compatibility.
99 + add_action(
100 + 'before_woocommerce_init',
101 + function () {
102 + if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
103 + \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RTSB_FILE, true );
101 104 }
102 - );
105 + }
106 + );
107 + }
103 108
109 + /**
110 + * Constants
111 + *
112 + * @return void
113 + */
114 + private function define_constants() {
115 + if ( ! defined( 'RTSB_ABSPATH' ) ) {
116 + define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
104 117 }
105 118
106 - /**
107 - * Constants
108 - *
109 - * @return void
110 - */
111 - private function define_constants() {
112 - if ( ! defined( 'RTSB_ABSPATH' ) ) {
113 - define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
114 - }
119 + if ( ! defined( 'RTSB_URL' ) ) {
120 + define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
121 + }
122 + }
115 123
116 - if ( ! defined( 'RTSB_URL' ) ) {
117 - define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
118 - }
119 124
120 - }
125 + /**
126 + * Assets url generate with given assets file
127 + *
128 + * @param string $file File.
129 + *
130 + * @return string
131 + */
132 + public function get_assets_uri( $file ) {
133 + $file = ltrim( $file, '/' );
121 134
135 + return trailingslashit( RTSB_URL . '/assets' ) . $file;
136 + }
122 137
123 - /**
124 - * Assets url generate with given assets file
125 - *
126 - * @param string $file File.
127 - *
128 - * @return string
129 - */
130 - public function get_assets_uri( $file ) {
131 - $file = ltrim( $file, '/' );
138 + /**
139 + * Assets path.
140 + *
141 + * @param string $file File.
142 + *
143 + * @return string
144 + */
145 + public function get_assets_path( $file ) {
146 + $file = ltrim( $file, '/' );
132 147
133 - return trailingslashit( RTSB_URL . '/assets' ) . $file;
134 - }
148 + return trailingslashit( RTSB_PATH . 'assets' ) . $file;
149 + }
135 150
136 - /**
137 - * Get the template path.
138 - *
139 - * @return string
140 - */
141 - public function get_template_path() {
142 - return apply_filters( 'rtsb/template/path', 'shopbuilder/' );
143 - }
151 + /**
152 + * Get the template path.
153 + *
154 + * @return string
155 + */
156 + public function get_template_path() {
157 + return apply_filters( 'rtsb/template/path', 'shopbuilder/' );
158 + }
144 159
145 - /**
146 - * Get the plugin path.
147 - *
148 - * @return string
149 - */
150 - public function plugin_path() {
151 - return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
152 - }
160 + /**
161 + * Get the plugin path.
162 + *
163 + * @return string
164 + */
165 + public function plugin_path() {
166 + return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
167 + }
153 168
154 - /**
155 - * Load Text Domain
156 - */
157 - public function language() {
158 - load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
169 + /**
170 + * Init
171 + *
172 + * @return void
173 + */
174 + public function init() {
175 + if ( ! Dependencies::instance()->check() ) {
176 + return;
159 177 }
160 178
161 - /**
162 - * Init
163 - *
164 - * @return void
165 - */
166 - public function init() {
167 - if ( ! Dependencies::instance()->check() ) {
168 - return;
169 - }
179 + do_action( 'rtsb/before/loaded' );
180 + CacheController::instance();
181 + // Include File.
182 + AssetsController::instance();
183 + ModuleManager::instance();
170 184
171 - do_action( 'rtsb/before/loaded' );
185 + // Ajax.
186 + AddToCart::instance();
187 + AjaxLogin::instance();
188 + UpdateCheckoutSection::instance();
172 189
173 - // Include File.
174 - AssetsController::instance();
175 - ModuleManager::instance();
190 + BuilderController::instance();
191 + FilterHooks::init_hooks();
192 + ActionHooks::init_hooks();
176 193
177 - // Ajax.
178 - AddToCart::instance();
179 - AjaxLogin::instance();
194 + Installation::init();
195 + Migration::init();
196 + AIinit::instance();
180 197
181 - BuilderController::instance();
182 - FilterHooks::init_hooks();
183 - ActionHooks::init_hooks();
198 + if ( is_admin() ) {
199 + AdminInit::instance();
200 + }
184 201
185 - Installation::init();
186 - Migration::init();
202 + Shortcodes::instance();
187 203
188 - if ( is_admin() ) {
189 - AdminInit::instance();
190 - }
204 + do_action( 'rtsb/after/loaded' );
205 + }
191 206
192 - Shortcodes::instance();
193 -
194 - do_action( 'rtsb/after/loaded' );
207 + /**
208 + * Maybe Run After Update
209 + *
210 + * @param object $upgrader_object Upgrader Object.
211 + * @param array $options Options.
212 + *
213 + * @return void
214 + */
215 + public function maybe_run_after_update( $upgrader_object, $options ) {
216 + if ( 'plugin' !== $options['type'] || ! in_array( $options['action'], [ 'install', 'update' ], true ) ) {
217 + return;
195 218 }
196 219
197 - /**
198 - * Checks if Pro version installed
199 - *
200 - * @return boolean
201 - */
202 - public function has_pro() {
203 - return function_exists( 'rtsbpro' );
220 + // For normal update flow.
221 + if ( ! empty( $options['plugins'] ) ) {
222 + foreach ( $options['plugins'] as $plugin ) {
223 + if ( strpos( $plugin, 'shopbuilder' ) !== false ) {
224 + Cache::clear_all_cache();
225 + break;
226 + }
227 + }
228 + return;
204 229 }
205 230
206 - /**
207 - * PRO Version URL.
208 - *
209 - * @return string
210 - */
211 - public function pro_version_link() {
212 - return 'https://shopbuilderwp.com/';
231 + // For upload-based installation.
232 + if (
233 + ! empty( $upgrader_object->result['destination_name'] ) &&
234 + strpos( $upgrader_object->result['destination_name'], 'shopbuilder' ) !== false
235 + ) {
236 + Cache::clear_all_cache();
213 237 }
214 238 }
215 239
216 240 /**
217 - * @return ShopBuilder
241 + * Checks if Pro version installed.
242 + *
243 + * @return boolean
218 244 */
219 - function rtsb() {
220 - static $cached_instance;
245 + public function has_pro() {
246 + return function_exists( 'rtsbpro' ); // Fns::is_pro_authorized() will add in the future for checking pro Version Compatibility.
247 + }
221 248
222 - if (null !== $cached_instance) {
223 - return $cached_instance;
224 - }
225 -
226 - $cached_instance = wp_cache_get('shopbuilder_instance', 'shopbuilder_cache');
227 -
228 - if (false === $cached_instance) {
229 - $cached_instance = ShopBuilder::instance();
230 - wp_cache_set('shopbuilder_instance', $cached_instance, 'shopbuilder_cache');
231 - }
232 -
233 - return $cached_instance;
249 + /**
250 + * PRO Version URL.
251 + *
252 + * @return string
253 + */
254 + public function pro_version_link() {
255 + return 'https://shopbuilderwp.com/';
234 256 }
235 -
236 -
237 - rtsb();
238 257 }