PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.1.3
ShopBuilder – WooCommerce Builder For Elementor v3.1.3
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 -156 2.1.93.1.3 View file →
@@ -4,14 +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;
12 15 use RadiusTheme\SB\Controllers\Shortcodes;
13 16 use RadiusTheme\SB\Controllers\Dependencies;
17 +use RadiusTheme\SB\Controllers\CacheController;
14 18 use RadiusTheme\SB\Controllers\Admin\AdminInit;
15 19 use RadiusTheme\SB\Controllers\AssetsController;
16 20 use RadiusTheme\SB\Controllers\BuilderController;
17 21 use RadiusTheme\SB\Controllers\SupportController;
@@ -18,9 +22,9 @@
18 22 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
19 23 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
20 24 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
21 25 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
22 -use RadiusTheme\SB\Helpers\Migration;
26 +use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
23 27
24 28 // Do not allow directly accessing this file.
25 29 if ( ! defined( 'ABSPATH' ) ) {
26 30 exit( 'This script cannot be accessed directly.' );
@@ -25,204 +29,228 @@
25 29 if ( ! defined( 'ABSPATH' ) ) {
26 30 exit( 'This script cannot be accessed directly.' );
27 31 }
28 32
29 -require_once RTSB_PATH . 'vendor/autoload.php';
33 +/**
34 + * Main initialization class.
35 + */
36 +final class ShopBuilder {
30 37
31 -if ( ! class_exists( ShopBuilder::class ) ) {
32 38 /**
33 - * Main initialization class.
39 + * Nonce id
40 + *
41 + * @var string
34 42 */
35 - final class ShopBuilder {
43 + public $nonceId = '__rtsb_wpnonce';
36 44
37 - /**
38 - * Nonce id
39 - *
40 - * @var string
41 - */
42 - public $nonceId = '__rtsb_wpnonce';
45 + /**
46 + * Nonce Text
47 + *
48 + * @var string
49 + */
50 + public $nonceText = 'rtsb_nonce';
43 51
44 - /**
45 - * Nonce Text
46 - *
47 - * @var string
48 - */
49 - public $nonceText = 'rtsb_nonce';
52 + /**
53 + * Post Type.
54 + *
55 + * @var string
56 + */
57 + public $post_type;
50 58
51 - /**
52 - * Post Type.
53 - *
54 - * @var string
55 - */
56 - public $post_type;
59 + /**
60 + * Post Type.
61 + *
62 + * @var string
63 + */
64 + public $current_theme;
65 + /**
66 + * Singleton
67 + */
57 68
58 - /**
59 - * Post Type.
60 - *
61 - * @var string
62 - */
63 - public $current_theme;
64 - /**
65 - * Singleton
66 - */
69 + /**
70 + * URL for fetch API
71 + *
72 + * @var string
73 + */
74 + public $BASE_API = 'https://shopbuilderwp.com/demo/wp-json/rtsb/v1/layouts/';
67 75
68 - /**
69 - * URL for fetch API
70 - *
71 - * @var string
72 - */
73 - public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
76 + use SingletonTrait;
74 77
75 - 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( 'plugins_loaded', [ $this, 'init' ], 15 );
86 + add_action( 'upgrader_process_complete', [ $this, 'maybe_run_after_update' ], 10, 2 );
76 87
77 - /**
78 - * Class Constructor
79 - */
80 - private function __construct() {
81 - $this->define_constants();
82 - $this->post_type = 'product';
83 - $this->current_theme = wp_get_theme()->get( 'Template' ) ? wp_get_theme()->get( 'Template' ) : wp_get_theme()->get( 'TextDomain' );
84 - add_action( 'init', [ $this, 'language' ] );
85 - add_action( 'plugins_loaded', [ $this, 'init' ], 15 );
88 + // Register Plugin Active Hook.
89 + register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
86 90
87 - // Register Plugin Active Hook.
88 - register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
91 + // Register Plugin Deactivate Hook.
92 + register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
89 93
90 - // Register Plugin Deactivate Hook.
91 - register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
92 -
94 + if ( Dependencies::instance()->check() ) {
93 95 SupportController::instance();
96 + }
94 97
95 - // HPOS Declare compatibility.
96 - add_action(
97 - 'before_woocommerce_init',
98 - function () {
99 - if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
100 - \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RTSB_FILE, true );
101 - }
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 );
102 104 }
103 - );
105 + }
106 + );
107 + }
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 - }
120 124
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
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, '/' );
135 + return trailingslashit( RTSB_URL . '/assets' ) . $file;
136 + }
131 137
132 - return trailingslashit( RTSB_URL . '/assets' ) . $file;
133 - }
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, '/' );
134 147
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 - }
148 + return trailingslashit( RTSB_PATH . 'assets' ) . $file;
149 + }
143 150
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 - }
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 + }
152 159
153 - /**
154 - * Load Text Domain
155 - */
156 - public function language() {
157 - load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
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 + }
168 +
169 + /**
170 + * Init
171 + *
172 + * @return void
173 + */
174 + public function init() {
175 + if ( ! Dependencies::instance()->check() ) {
176 + return;
158 177 }
159 178
160 - /**
161 - * Init
162 - *
163 - * @return void
164 - */
165 - public function init() {
166 - if ( ! Dependencies::instance()->check() ) {
167 - return;
168 - }
179 + do_action( 'rtsb/before/loaded' );
180 + CacheController::instance();
181 + // Include File.
182 + AssetsController::instance();
183 + ModuleManager::instance();
169 184
170 - do_action( 'rtsb/before/loaded' );
185 + // Ajax.
186 + AddToCart::instance();
187 + AjaxLogin::instance();
188 + UpdateCheckoutSection::instance();
171 189
172 - // Include File.
173 - AssetsController::instance();
174 - ModuleManager::instance();
190 + BuilderController::instance();
191 + FilterHooks::init_hooks();
192 + ActionHooks::init_hooks();
175 193
176 - // Ajax.
177 - AddToCart::instance();
178 - AjaxLogin::instance();
194 + Installation::init();
195 + Migration::init();
179 196
180 - BuilderController::instance();
181 - FilterHooks::init_hooks();
182 - ActionHooks::init_hooks();
197 + if ( is_admin() ) {
198 + AdminInit::instance();
199 + }
183 200
184 - Installation::init();
185 - Migration::init();
201 + Shortcodes::instance();
186 202
187 - if ( is_admin() ) {
188 - AdminInit::instance();
189 - }
203 + do_action( 'rtsb/after/loaded' );
204 + }
190 205
191 - Shortcodes::instance();
192 -
193 - do_action( 'rtsb/after/loaded' );
206 + /**
207 + * Maybe Run After Update
208 + *
209 + * @param object $upgrader_object Upgrader Object.
210 + * @param array $options Options.
211 + *
212 + * @return void
213 + */
214 + public function maybe_run_after_update( $upgrader_object, $options ) {
215 + if ( 'plugin' !== $options['type'] || ! in_array( $options['action'], [ 'install', 'update' ], true ) ) {
216 + return;
194 217 }
195 218
196 - /**
197 - * Checks if Pro version installed
198 - *
199 - * @return boolean
200 - */
201 - public function has_pro() {
202 - return function_exists( 'rtsbpro' );
219 + // For normal update flow.
220 + if ( ! empty( $options['plugins'] ) ) {
221 + foreach ( $options['plugins'] as $plugin ) {
222 + if ( strpos( $plugin, 'shopbuilder' ) !== false ) {
223 + Cache::clear_all_cache();
224 + break;
225 + }
226 + }
227 + return;
203 228 }
204 229
205 - /**
206 - * PRO Version URL.
207 - *
208 - * @return string
209 - */
210 - public function pro_version_link() {
211 - return 'https://shopbuilderwp.com/';
230 + // For upload-based installation.
231 + if (
232 + ! empty( $upgrader_object->result['destination_name'] ) &&
233 + strpos( $upgrader_object->result['destination_name'], 'shopbuilder' ) !== false
234 + ) {
235 + Cache::clear_all_cache();
212 236 }
213 237 }
214 238
215 239 /**
216 - * @return ShopBuilder
240 + * Checks if Pro version installed
241 + *
242 + * @return boolean
217 243 */
218 - function rtsb() {
219 - static $cached_instance;
220 - if ( null !== $cached_instance ) {
221 - return $cached_instance;
222 - }
223 - $cached_instance = ShopBuilder::instance();
224 - return $cached_instance;
244 + public function has_pro() {
245 + return function_exists( 'rtsbpro' );
225 246 }
226 247
227 - rtsb();
248 + /**
249 + * PRO Version URL.
250 + *
251 + * @return string
252 + */
253 + public function pro_version_link() {
254 + return 'https://shopbuilderwp.com/';
255 + }
228 256 }