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