PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.0.2
ShopBuilder – WooCommerce Builder For Elementor v2.0.2
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 +136 -169 3.4.02.0.2 View file →
@@ -4,21 +4,14 @@
4 4 *
5 5 * @package RadiusTheme\SB
6 6 */
7 7
8 -namespace RadiusTheme\SB;
9 8
10 -use RadiusTheme\SB\AI\AIinit;
11 -use RadiusTheme\SB\Helpers\Cache;
12 -use RadiusTheme\SB\Helpers\Migration;
13 9 use RadiusTheme\SB\Helpers\Installation;
14 10 use RadiusTheme\SB\Modules\ModuleManager;
15 11 use RadiusTheme\SB\Traits\SingletonTrait;
16 -use RadiusTheme\SB\Controllers\Shortcodes;
17 12 use RadiusTheme\SB\Controllers\Dependencies;
18 -use RadiusTheme\SB\Controllers\CacheController;
19 13 use RadiusTheme\SB\Controllers\Admin\AdminInit;
20 -use RadiusTheme\SB\Controllers\Admin\PluginRow;
21 14 use RadiusTheme\SB\Controllers\AssetsController;
22 15 use RadiusTheme\SB\Controllers\BuilderController;
23 16 use RadiusTheme\SB\Controllers\SupportController;
24 17 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
@@ -24,9 +17,9 @@
24 17 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
25 18 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
26 19 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
27 20 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
28 -use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
21 +use RadiusTheme\SB\Helpers\Fns;
29 22
30 23 // Do not allow directly accessing this file.
31 24 if ( ! defined( 'ABSPATH' ) ) {
32 25 exit( 'This script cannot be accessed directly.' );
@@ -31,146 +24,152 @@
31 24 if ( ! defined( 'ABSPATH' ) ) {
32 25 exit( 'This script cannot be accessed directly.' );
33 26 }
34 27
35 -/**
36 - * Main initialization class.
37 - */
38 -final class ShopBuilder {
28 +require_once RTSB_PATH . 'vendor/autoload.php';
39 29
30 +if ( ! class_exists( ShopBuilder::class ) ) {
40 31 /**
41 - * Nonce id
42 - *
43 - * @var string
32 + * Main initialization class.
44 33 */
45 - public $nonceId = '__rtsb_wpnonce';
34 + final class ShopBuilder {
46 35
47 - /**
48 - * Nonce Text
49 - *
50 - * @var string
51 - */
52 - public $nonceText = 'rtsb_nonce';
36 + /**
37 + * Nonce id
38 + *
39 + * @var string
40 + */
41 + public $nonceId = '__rtsb_wpnonce';
53 42
54 - /**
55 - * Post Type.
56 - *
57 - * @var string
58 - */
59 - public $post_type;
43 + /**
44 + * Nonce Text
45 + *
46 + * @var string
47 + */
48 + public $nonceText = 'rtsb_nonce';
60 49
61 - /**
62 - * Post Type.
63 - *
64 - * @var string
65 - */
66 - public $current_theme;
67 - /**
68 - * Singleton
69 - */
50 + /**
51 + * Post Type.
52 + *
53 + * @var string
54 + */
55 + public $post_type;
70 56
71 - /**
72 - * URL for fetch API
73 - *
74 - * @var string
75 - */
76 - public $BASE_API = 'https://shopbuilderwp.com/demo/wp-json/rtsb/v1/layouts/';
57 + /**
58 + * Post Type.
59 + *
60 + * @var string
61 + */
62 + public $current_theme;
63 + /**
64 + * Singleton
65 + */
77 66
78 - use SingletonTrait;
67 + /**
68 + * URL for fetch API
69 + * @var string
70 + */
71 + public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
79 72
80 - /**
81 - * Class Constructor
82 - */
83 - private function __construct() {
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 );
73 + use SingletonTrait;
88 74
89 - // Register Plugin Active Hook.
90 - register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
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 );
91 84
92 - // Register Plugin Deactivate Hook.
93 - register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
85 + // Register Plugin Active Hook.
86 + register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
94 87
95 - if ( Dependencies::instance()->check() ) {
88 + // Register Plugin Deactivate Hook.
89 + register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
90 +
96 91 SupportController::instance();
92 +
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 + );
102 +
97 103 }
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 - }
104 +
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 ) . '/' );
105 113 }
106 - );
107 - }
108 114
109 - /**
110 - * Assets url generate with given assets file
111 - *
112 - * @param string $file File.
113 - *
114 - * @return string
115 - */
116 - public function get_assets_uri( $file ) {
117 - $file = ltrim( $file, '/' );
115 + if ( ! defined( 'RTSB_URL' ) ) {
116 + define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
117 + }
118 118
119 - return trailingslashit( RTSB_URL . '/assets' ) . $file;
120 - }
119 + }
121 120
122 - /**
123 - * Assets path.
124 - *
125 - * @param string $file File.
126 - *
127 - * @return string
128 - */
129 - public function get_assets_path( $file ) {
130 - $file = ltrim( $file, '/' );
131 121
132 - return trailingslashit( RTSB_PATH . 'assets' ) . $file;
133 - }
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, '/' );
134 131
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 - }
132 + return trailingslashit( RTSB_URL . '/assets' ) . $file;
133 + }
143 134
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 - }
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 + }
152 143
153 - /**
154 - * Init
155 - *
156 - * @return void
157 - */
158 - public function init() {
159 - // Plugin row links (Settings/Demo/Documentation/Get Pro) must register
160 - // regardless of dependency state so users can always reach Settings or
161 - // docs even when WooCommerce/Elementor is inactive.
162 - if ( is_admin() ) {
163 - PluginRow::instance();
144 + /**
145 + * Get the plugin path.
146 + *
147 + * @return string
148 + */
149 + public function plugin_path() {
150 + return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
164 151 }
165 152
166 - if ( ! Dependencies::instance()->check() ) {
167 - return;
153 + /**
154 + * Load Text Domain
155 + */
156 + public function language() {
157 + load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
168 158 }
169 159
170 - try {
160 + /**
161 + * Init
162 + *
163 + * @return void
164 + */
165 + public function init() {
166 + if ( ! Dependencies::instance()->check() ) {
167 + return;
168 + }
169 +
171 170 do_action( 'rtsb/before/loaded' );
172 - CacheController::instance();
171 +
173 172 // Include File.
174 173 AssetsController::instance();
175 174 ModuleManager::instance();
176 175
@@ -176,9 +175,8 @@
176 175
177 176 // Ajax.
178 177 AddToCart::instance();
179 178 AjaxLogin::instance();
180 - UpdateCheckoutSection::instance();
181 179
182 180 BuilderController::instance();
183 181 FilterHooks::init_hooks();
184 182 ActionHooks::init_hooks();
@@ -183,70 +181,39 @@
183 181 FilterHooks::init_hooks();
184 182 ActionHooks::init_hooks();
185 183
186 184 Installation::init();
187 - Migration::init();
188 - AIinit::instance();
189 -
190 185 if ( is_admin() ) {
191 186 AdminInit::instance();
192 187 }
193 188
194 - Shortcodes::instance();
195 -
196 189 do_action( 'rtsb/after/loaded' );
197 - } catch ( \Throwable $e ) {
198 - error_log( 'ShopBuilder init error: ' . $e->getMessage() ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
199 190 }
200 - }
201 191
202 - /**
203 - * Maybe Run After Update
204 - *
205 - * @param object $upgrader_object Upgrader Object.
206 - * @param array $options Options.
207 - *
208 - * @return void
209 - */
210 - public function maybe_run_after_update( $upgrader_object, $options ) {
211 - if ( 'plugin' !== $options['type'] || ! in_array( $options['action'], [ 'install', 'update' ], true ) ) {
212 - return;
192 + /**
193 + * Checks if Pro version installed
194 + *
195 + * @return boolean
196 + */
197 + public function has_pro() {
198 + return function_exists( 'rtsbpro' );
213 199 }
214 200
215 - // For normal update flow.
216 - if ( ! empty( $options['plugins'] ) ) {
217 - foreach ( $options['plugins'] as $plugin ) {
218 - if ( strpos( $plugin, 'shopbuilder' ) !== false ) {
219 - Cache::clear_all_cache();
220 - break;
221 - }
222 - }
223 - return;
201 + /**
202 + * PRO Version URL.
203 + *
204 + * @return string
205 + */
206 + public function pro_version_link() {
207 + return 'https://shopbuilderwp.com/';
224 208 }
225 -
226 - // For upload-based installation.
227 - if (
228 - ! empty( $upgrader_object->result['destination_name'] ) &&
229 - strpos( $upgrader_object->result['destination_name'], 'shopbuilder' ) !== false
230 - ) {
231 - Cache::clear_all_cache();
232 - }
233 209 }
234 210
235 211 /**
236 - * Checks if Pro version installed.
237 - *
238 - * @return boolean
212 + * @return ShopBuilder
239 213 */
240 - public function has_pro() {
241 - return function_exists( 'rtsbpro' ); // Fns::is_pro_authorized() will add in the future for checking pro Version Compatibility.
214 + function rtsb() {
215 + return ShopBuilder::instance();
242 216 }
243 217
244 - /**
245 - * PRO Version URL.
246 - *
247 - * @return string
248 - */
249 - public function pro_version_link() {
250 - return 'https://shopbuilderwp.com/';
251 - }
218 + rtsb();
252 219 }