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