PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.5.1
ShopBuilder – WooCommerce Builder For Elementor v2.5.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 +45 -101 3.4.22.5.1 View file →
@@ -6,10 +6,8 @@
6 6 */
7 7
8 8 namespace RadiusTheme\SB;
9 9
10 -use RadiusTheme\SB\AI\AIinit;
11 -use RadiusTheme\SB\Helpers\Cache;
12 10 use RadiusTheme\SB\Helpers\Migration;
13 11 use RadiusTheme\SB\Helpers\Installation;
14 12 use RadiusTheme\SB\Modules\ModuleManager;
15 13 use RadiusTheme\SB\Traits\SingletonTrait;
@@ -16,9 +14,8 @@
16 14 use RadiusTheme\SB\Controllers\Shortcodes;
17 15 use RadiusTheme\SB\Controllers\Dependencies;
18 16 use RadiusTheme\SB\Controllers\CacheController;
19 17 use RadiusTheme\SB\Controllers\Admin\AdminInit;
20 -use RadiusTheme\SB\Controllers\Admin\PluginRow;
21 18 use RadiusTheme\SB\Controllers\AssetsController;
22 19 use RadiusTheme\SB\Controllers\BuilderController;
23 20 use RadiusTheme\SB\Controllers\SupportController;
24 21 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
@@ -24,9 +21,8 @@
24 21 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
25 22 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
26 23 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
27 24 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
28 -use RadiusTheme\SB\Controllers\Frontend\OrderReviewQuantity;
29 25 use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
30 26
31 27 // Do not allow directly accessing this file.
32 28 if ( ! defined( 'ABSPATH' ) ) {
@@ -73,9 +69,9 @@
73 69 * URL for fetch API
74 70 *
75 71 * @var string
76 72 */
77 - public $BASE_API = 'https://shopbuilderwp.com/demo/wp-json/rtsb/v1/layouts/';
73 + public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
78 74
79 75 use SingletonTrait;
80 76
81 77 /**
@@ -81,19 +77,14 @@
81 77 /**
82 78 * Class Constructor
83 79 */
84 80 private function __construct() {
81 + $this->define_constants();
85 82 $this->post_type = 'product';
86 83 $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' ) ) ) );
84 + add_action( 'init', [ $this, 'language' ] );
87 85 add_action( 'plugins_loaded', [ $this, 'init' ], 15 );
88 - add_action( 'upgrader_process_complete', [ $this, 'maybe_run_after_update' ], 10, 2 );
89 86
90 - // Runs before anything reads or writes the object cache: Installation is
91 - // on init:5 and ModuleManager on init:15. Registered here rather than in
92 - // init() so version tracking stays accurate even while a dependency is
93 - // missing and the rest of the plugin is dormant.
94 - add_action( 'init', [ Cache::class, 'maybe_rotate_group' ], 1 );
95 -
96 87 // Register Plugin Active Hook.
97 88 register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
98 89
99 90 // Register Plugin Deactivate Hook.
@@ -98,11 +89,10 @@
98 89
99 90 // Register Plugin Deactivate Hook.
100 91 register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
101 92
102 - if ( Dependencies::instance()->check() ) {
103 - SupportController::instance();
104 - }
93 + SupportController::instance();
94 +
105 95 // HPOS Declare compatibility.
106 96 add_action(
107 97 'before_woocommerce_init',
108 98 function () {
@@ -113,31 +103,34 @@
113 103 );
114 104 }
115 105
116 106 /**
117 - * Assets url generate with given assets file
107 + * Constants
118 108 *
119 - * @param string $file File.
120 - *
121 - * @return string
109 + * @return void
122 110 */
123 - public function get_assets_uri( $file ) {
124 - $file = ltrim( $file, '/' );
111 + private function define_constants() {
112 + if ( ! defined( 'RTSB_ABSPATH' ) ) {
113 + define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
114 + }
125 115
126 - return trailingslashit( RTSB_URL . '/assets' ) . $file;
116 + if ( ! defined( 'RTSB_URL' ) ) {
117 + define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
118 + }
127 119 }
128 120
121 +
129 122 /**
130 - * Assets path.
123 + * Assets url generate with given assets file
131 124 *
132 125 * @param string $file File.
133 126 *
134 127 * @return string
135 128 */
136 - public function get_assets_path( $file ) {
129 + public function get_assets_uri( $file ) {
137 130 $file = ltrim( $file, '/' );
138 131
139 - return trailingslashit( RTSB_PATH . 'assets' ) . $file;
132 + return trailingslashit( RTSB_URL . '/assets' ) . $file;
140 133 }
141 134
142 135 /**
143 136 * Get the template path.
@@ -157,107 +150,58 @@
157 150 return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
158 151 }
159 152
160 153 /**
154 + * Load Text Domain
155 + */
156 + public function language() {
157 + load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
158 + }
159 +
160 + /**
161 161 * Init
162 162 *
163 163 * @return void
164 164 */
165 165 public function init() {
166 - // Plugin row links (Settings/Demo/Documentation/Get Pro) must register
167 - // regardless of dependency state so users can always reach Settings or
168 - // docs even when WooCommerce/Elementor is inactive.
169 - if ( is_admin() ) {
170 - PluginRow::instance();
171 - }
172 -
173 166 if ( ! Dependencies::instance()->check() ) {
174 167 return;
175 168 }
176 169
177 - try {
178 - do_action( 'rtsb/before/loaded' );
179 - CacheController::instance();
180 - // Include File.
181 - AssetsController::instance();
182 - ModuleManager::instance();
170 + do_action( 'rtsb/before/loaded' );
171 + CacheController::instance();
172 + // Include File.
173 + AssetsController::instance();
174 + ModuleManager::instance();
183 175
184 - // Ajax.
185 - AddToCart::instance();
186 - AjaxLogin::instance();
187 - UpdateCheckoutSection::instance();
176 + // Ajax.
177 + AddToCart::instance();
178 + AjaxLogin::instance();
179 + UpdateCheckoutSection::instance();
188 180
189 - // Checkout.
190 - OrderReviewQuantity::instance();
181 + BuilderController::instance();
182 + FilterHooks::init_hooks();
183 + ActionHooks::init_hooks();
191 184
192 - BuilderController::instance();
193 - FilterHooks::init_hooks();
194 - ActionHooks::init_hooks();
185 + Installation::init();
186 + Migration::init();
195 187
196 - Installation::init();
197 - Migration::init();
198 - AIinit::instance();
199 -
200 - if ( is_admin() ) {
201 - AdminInit::instance();
202 - }
203 -
204 - Shortcodes::instance();
205 -
206 - do_action( 'rtsb/after/loaded' );
207 - } catch ( \Throwable $e ) {
208 - error_log( 'ShopBuilder init error: ' . $e->getMessage() ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
188 + if ( is_admin() ) {
189 + AdminInit::instance();
209 190 }
210 - }
211 191
212 - /**
213 - * Maybe Run After Update
214 - *
215 - * @param object $upgrader_object Upgrader Object.
216 - * @param array $options Options.
217 - *
218 - * @return void
219 - */
220 - public function maybe_run_after_update( $upgrader_object, $options ) {
221 - if ( 'plugin' !== $options['type'] || ! in_array( $options['action'], [ 'install', 'update' ], true ) ) {
222 - return;
223 - }
192 + Shortcodes::instance();
224 193
225 - $basename = plugin_basename( RTSB_FILE );
226 - $slug = dirname( $basename );
227 -
228 - // Bulk update flow: WordPress passes every plugin in the batch.
229 - if ( ! empty( $options['plugins'] ) ) {
230 - if ( in_array( $basename, (array) $options['plugins'], true ) ) {
231 - Cache::clear_all_cache();
232 - }
233 - return;
234 - }
235 -
236 - // Single update flow: WordPress passes the basename under `plugin`.
237 - if ( ! empty( $options['plugin'] ) ) {
238 - if ( $basename === $options['plugin'] ) {
239 - Cache::clear_all_cache();
240 - }
241 - return;
242 - }
243 -
244 - // Upload-based installation: only the destination folder name is known.
245 - if (
246 - ! empty( $upgrader_object->result['destination_name'] ) &&
247 - $slug === $upgrader_object->result['destination_name']
248 - ) {
249 - Cache::clear_all_cache();
250 - }
194 + do_action( 'rtsb/after/loaded' );
251 195 }
252 196
253 197 /**
254 - * Checks if Pro version installed.
198 + * Checks if Pro version installed
255 199 *
256 200 * @return boolean
257 201 */
258 202 public function has_pro() {
259 - return function_exists( 'rtsbpro' ); // Fns::is_pro_authorized() will add in the future for checking pro Version Compatibility.
203 + return function_exists( 'rtsbpro' );
260 204 }
261 205
262 206 /**
263 207 * PRO Version URL.