PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.1
ShopBuilder – WooCommerce Builder For Elementor v3.2.1
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 +186 -148 2.0.33.2.1 View file →
@@ -4,13 +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;
16 +use RadiusTheme\SB\Controllers\Shortcodes;
12 17 use RadiusTheme\SB\Controllers\Dependencies;
18 +use RadiusTheme\SB\Controllers\CacheController;
13 19 use RadiusTheme\SB\Controllers\Admin\AdminInit;
14 20 use RadiusTheme\SB\Controllers\AssetsController;
15 21 use RadiusTheme\SB\Controllers\BuilderController;
16 22 use RadiusTheme\SB\Controllers\SupportController;
@@ -17,9 +23,9 @@
17 23 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
18 24 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
19 25 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
20 26 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
21 -use RadiusTheme\SB\Helpers\Fns;
27 +use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
22 28
23 29 // Do not allow directly accessing this file.
24 30 if ( ! defined( 'ABSPATH' ) ) {
25 31 exit( 'This script cannot be accessed directly.' );
@@ -24,196 +30,228 @@
24 30 if ( ! defined( 'ABSPATH' ) ) {
25 31 exit( 'This script cannot be accessed directly.' );
26 32 }
27 33
28 -require_once RTSB_PATH . 'vendor/autoload.php';
34 +/**
35 + * Main initialization class.
36 + */
37 +final class ShopBuilder {
29 38
30 -if ( ! class_exists( ShopBuilder::class ) ) {
31 39 /**
32 - * Main initialization class.
40 + * Nonce id
41 + *
42 + * @var string
33 43 */
34 - final class ShopBuilder {
44 + public $nonceId = '__rtsb_wpnonce';
35 45
36 - /**
37 - * Nonce id
38 - *
39 - * @var string
40 - */
41 - public $nonceId = '__rtsb_wpnonce';
46 + /**
47 + * Nonce Text
48 + *
49 + * @var string
50 + */
51 + public $nonceText = 'rtsb_nonce';
42 52
43 - /**
44 - * Nonce Text
45 - *
46 - * @var string
47 - */
48 - public $nonceText = 'rtsb_nonce';
53 + /**
54 + * Post Type.
55 + *
56 + * @var string
57 + */
58 + public $post_type;
49 59
50 - /**
51 - * Post Type.
52 - *
53 - * @var string
54 - */
55 - public $post_type;
60 + /**
61 + * Post Type.
62 + *
63 + * @var string
64 + */
65 + public $current_theme;
66 + /**
67 + * Singleton
68 + */
56 69
57 - /**
58 - * Post Type.
59 - *
60 - * @var string
61 - */
62 - public $current_theme;
63 - /**
64 - * Singleton
65 - */
70 + /**
71 + * URL for fetch API
72 + *
73 + * @var string
74 + */
75 + public $BASE_API = 'https://shopbuilderwp.com/demo/wp-json/rtsb/v1/layouts/';
66 76
67 - /**
68 - * URL for fetch API
69 - * @var string
70 - */
71 - public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
77 + use SingletonTrait;
72 78
73 - 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 );
74 88
75 - /**
76 - * Class Constructor
77 - */
78 - private function __construct() {
79 - $this->define_constants();
80 - $this->post_type = 'product';
81 - $this->current_theme = wp_get_theme()->get( 'Template' ) ? wp_get_theme()->get( 'Template' ) : wp_get_theme()->get( 'TextDomain' );
82 - add_action( 'init', [ $this, 'language' ] );
83 - add_action( 'plugins_loaded', [ $this, 'init' ], 15 );
89 + // Register Plugin Active Hook.
90 + register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
84 91
85 - // Register Plugin Active Hook.
86 - register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
92 + // Register Plugin Deactivate Hook.
93 + register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
87 94
88 - // Register Plugin Deactivate Hook.
89 - register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
90 -
95 + if ( Dependencies::instance()->check() ) {
91 96 SupportController::instance();
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 );
104 + }
105 + }
106 + );
107 + }
92 108
93 - // HPOS Declare compatibility
94 - add_action(
95 - 'before_woocommerce_init',
96 - function() {
97 - if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
98 - \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RTSB_FILE, true );
99 - }
100 - }
101 - );
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 ) . '/' );
117 + }
102 118
119 + if ( ! defined( 'RTSB_URL' ) ) {
120 + define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
103 121 }
122 + }
104 123
105 - /**
106 - * Constants
107 - *
108 - * @return void
109 - */
110 - private function define_constants() {
111 - if ( ! defined( 'RTSB_ABSPATH' ) ) {
112 - define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
113 - }
114 124
115 - if ( ! defined( 'RTSB_URL' ) ) {
116 - define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
117 - }
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, '/' );
118 134
119 - }
135 + return trailingslashit( RTSB_URL . '/assets' ) . $file;
136 + }
120 137
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, '/' );
121 147
122 - /**
123 - * Assets url generate with given assets file
124 - *
125 - * @param string $file File.
126 - *
127 - * @return string
128 - */
129 - public function get_assets_uri( $file ) {
130 - $file = ltrim( $file, '/' );
148 + return trailingslashit( RTSB_PATH . 'assets' ) . $file;
149 + }
131 150
132 - return trailingslashit( RTSB_URL . '/assets' ) . $file;
133 - }
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 + }
134 159
135 - /**
136 - * Get the template path.
137 - *
138 - * @return string
139 - */
140 - public function get_template_path() {
141 - return apply_filters( 'rtsb/template/path', 'shopbuilder/' );
142 - }
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 + }
143 168
144 - /**
145 - * Get the plugin path.
146 - *
147 - * @return string
148 - */
149 - public function plugin_path() {
150 - return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
169 + /**
170 + * Init
171 + *
172 + * @return void
173 + */
174 + public function init() {
175 + if ( ! Dependencies::instance()->check() ) {
176 + return;
151 177 }
152 178
153 - /**
154 - * Load Text Domain
155 - */
156 - public function language() {
157 - load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
158 - }
179 + do_action( 'rtsb/before/loaded' );
180 + CacheController::instance();
181 + // Include File.
182 + AssetsController::instance();
183 + ModuleManager::instance();
159 184
160 - /**
161 - * Init
162 - *
163 - * @return void
164 - */
165 - public function init() {
166 - if ( ! Dependencies::instance()->check() ) {
167 - return;
168 - }
185 + // Ajax.
186 + AddToCart::instance();
187 + AjaxLogin::instance();
188 + UpdateCheckoutSection::instance();
169 189
170 - do_action( 'rtsb/before/loaded' );
190 + BuilderController::instance();
191 + FilterHooks::init_hooks();
192 + ActionHooks::init_hooks();
171 193
172 - // Include File.
173 - AssetsController::instance();
174 - ModuleManager::instance();
194 + Installation::init();
195 + Migration::init();
196 + AIinit::instance();
175 197
176 - // Ajax.
177 - AddToCart::instance();
178 - AjaxLogin::instance();
198 + if ( is_admin() ) {
199 + AdminInit::instance();
200 + }
179 201
180 - BuilderController::instance();
181 - FilterHooks::init_hooks();
182 - ActionHooks::init_hooks();
202 + Shortcodes::instance();
183 203
184 - Installation::init();
185 - if ( is_admin() ) {
186 - AdminInit::instance();
187 - }
204 + do_action( 'rtsb/after/loaded' );
205 + }
188 206
189 - 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;
190 218 }
191 219
192 - /**
193 - * Checks if Pro version installed
194 - *
195 - * @return boolean
196 - */
197 - public function has_pro() {
198 - 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;
199 229 }
200 230
201 - /**
202 - * PRO Version URL.
203 - *
204 - * @return string
205 - */
206 - public function pro_version_link() {
207 - 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();
208 237 }
209 238 }
210 239
211 240 /**
212 - * @return ShopBuilder
241 + * Checks if Pro version installed
242 + *
243 + * @return boolean
213 244 */
214 - function rtsb() {
215 - return ShopBuilder::instance();
245 + public function has_pro() {
246 + return function_exists( 'rtsbpro' );
216 247 }
217 248
218 - rtsb();
249 + /**
250 + * PRO Version URL.
251 + *
252 + * @return string
253 + */
254 + public function pro_version_link() {
255 + return 'https://shopbuilderwp.com/';
256 + }
219 257 }