PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 1.0.0
ShopBuilder – WooCommerce Builder For Elementor v1.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 +199 -252 3.4.11.0.0 View file →
@@ -1,252 +1,199 @@
1 -<?php
2 -/**
3 - * Main initialization class.
4 - *
5 - * @package RadiusTheme\SB
6 - */
7 -
8 -namespace RadiusTheme\SB;
9 -
10 -use RadiusTheme\SB\AI\AIinit;
11 -use RadiusTheme\SB\Helpers\Cache;
12 -use RadiusTheme\SB\Helpers\Migration;
13 -use RadiusTheme\SB\Helpers\Installation;
14 -use RadiusTheme\SB\Modules\ModuleManager;
15 -use RadiusTheme\SB\Traits\SingletonTrait;
16 -use RadiusTheme\SB\Controllers\Shortcodes;
17 -use RadiusTheme\SB\Controllers\Dependencies;
18 -use RadiusTheme\SB\Controllers\CacheController;
19 -use RadiusTheme\SB\Controllers\Admin\AdminInit;
20 -use RadiusTheme\SB\Controllers\Admin\PluginRow;
21 -use RadiusTheme\SB\Controllers\AssetsController;
22 -use RadiusTheme\SB\Controllers\BuilderController;
23 -use RadiusTheme\SB\Controllers\SupportController;
24 -use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
25 -use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
26 -use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
27 -use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
28 -use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
29 -
30 -// Do not allow directly accessing this file.
31 -if ( ! defined( 'ABSPATH' ) ) {
32 - exit( 'This script cannot be accessed directly.' );
33 -}
34 -
35 -/**
36 - * Main initialization class.
37 - */
38 -final class ShopBuilder {
39 -
40 - /**
41 - * Nonce id
42 - *
43 - * @var string
44 - */
45 - public $nonceId = '__rtsb_wpnonce';
46 -
47 - /**
48 - * Nonce Text
49 - *
50 - * @var string
51 - */
52 - public $nonceText = 'rtsb_nonce';
53 -
54 - /**
55 - * Post Type.
56 - *
57 - * @var string
58 - */
59 - public $post_type;
60 -
61 - /**
62 - * Post Type.
63 - *
64 - * @var string
65 - */
66 - public $current_theme;
67 - /**
68 - * Singleton
69 - */
70 -
71 - /**
72 - * URL for fetch API
73 - *
74 - * @var string
75 - */
76 - public $BASE_API = 'https://shopbuilderwp.com/demo/wp-json/rtsb/v1/layouts/';
77 -
78 - use SingletonTrait;
79 -
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 );
88 -
89 - // Register Plugin Active Hook.
90 - register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
91 -
92 - // Register Plugin Deactivate Hook.
93 - register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
94 -
95 - if ( Dependencies::instance()->check() ) {
96 - SupportController::instance();
97 - }
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 - }
105 - }
106 - );
107 - }
108 -
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, '/' );
118 -
119 - return trailingslashit( RTSB_URL . '/assets' ) . $file;
120 - }
121 -
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 -
132 - return trailingslashit( RTSB_PATH . 'assets' ) . $file;
133 - }
134 -
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 - }
143 -
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 - }
152 -
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();
164 - }
165 -
166 - if ( ! Dependencies::instance()->check() ) {
167 - return;
168 - }
169 -
170 - try {
171 - do_action( 'rtsb/before/loaded' );
172 - CacheController::instance();
173 - // Include File.
174 - AssetsController::instance();
175 - ModuleManager::instance();
176 -
177 - // Ajax.
178 - AddToCart::instance();
179 - AjaxLogin::instance();
180 - UpdateCheckoutSection::instance();
181 -
182 - BuilderController::instance();
183 - FilterHooks::init_hooks();
184 - ActionHooks::init_hooks();
185 -
186 - Installation::init();
187 - Migration::init();
188 - AIinit::instance();
189 -
190 - if ( is_admin() ) {
191 - AdminInit::instance();
192 - }
193 -
194 - Shortcodes::instance();
195 -
196 - 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 - }
200 - }
201 -
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;
213 - }
214 -
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;
224 - }
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 - }
234 -
235 - /**
236 - * Checks if Pro version installed.
237 - *
238 - * @return boolean
239 - */
240 - public function has_pro() {
241 - return function_exists( 'rtsbpro' ); // Fns::is_pro_authorized() will add in the future for checking pro Version Compatibility.
242 - }
243 -
244 - /**
245 - * PRO Version URL.
246 - *
247 - * @return string
248 - */
249 - public function pro_version_link() {
250 - return 'https://shopbuilderwp.com/';
251 - }
252 -}
1 +<?php
2 +/**
3 + * Main initialization class.
4 + *
5 + * @package RadiusTheme\SB
6 + */
7 +
8 +use RadiusTheme\SB\Helpers\Installation;
9 +use RadiusTheme\SB\Modules\ModuleManager;
10 +use RadiusTheme\SB\Traits\SingletonTrait;
11 +use RadiusTheme\SB\Controllers\Dependencies;
12 +use RadiusTheme\SB\Controllers\Admin\AdminInit;
13 +use RadiusTheme\SB\Controllers\AssetsController;
14 +use RadiusTheme\SB\Controllers\BuilderController;
15 +use RadiusTheme\SB\Controllers\SupportController;
16 +use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
17 +use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
18 +use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
19 +use RadiusTheme\SB\Helpers\Fns;
20 +// Do not allow directly accessing this file.
21 +if ( ! defined( 'ABSPATH' ) ) {
22 + exit( 'This script cannot be accessed directly.' );
23 +}
24 +
25 +require_once __DIR__ . './../vendor/autoload.php';
26 +
27 +if ( ! class_exists( ShopBuilder::class ) ) {
28 + /**
29 + * Main initialization class.
30 + */
31 + final class ShopBuilder {
32 +
33 + /**
34 + * Nonce id
35 + *
36 + * @var string
37 + */
38 + public $nonceId = '__rtsb_wpnonce';
39 +
40 + /**
41 + * Nonce Text
42 + *
43 + * @var string
44 + */
45 + public $nonceText = 'rtsb_nonce';
46 + /**
47 + * Post Type.
48 + *
49 + * @var string
50 + */
51 + public $post_type;
52 + /**
53 + * Post Type.
54 + *
55 + * @var string
56 + */
57 + public $current_theme;
58 + /**
59 + * Singleton
60 + */
61 + use SingletonTrait;
62 +
63 + /**
64 + * Class Constructor
65 + */
66 + private function __construct() {
67 + $this->define_constants();
68 + $this->post_type = 'product';
69 + $this->current_theme = wp_get_theme()->get( 'Template' ) ? wp_get_theme()->get( 'Template' ) : wp_get_theme()->get( 'TextDomain' ) ;
70 + add_action( 'init', [ $this, 'language' ] );
71 + add_action( 'plugins_loaded', [ $this, 'init' ], 100 );
72 +
73 + // Register Plugin Active Hook.
74 + register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
75 +
76 + // Register Plugin Deactivate Hook.
77 + register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
78 + }
79 +
80 + /**
81 + * Constants
82 + *
83 + * @return void
84 + */
85 + private function define_constants() {
86 + if ( ! defined( 'RTSB_ABSPATH' ) ) {
87 + define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
88 + }
89 +
90 + if ( ! defined( 'RTSB_URL' ) ) {
91 + define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
92 + }
93 + }
94 +
95 +
96 + /**
97 + * Assets url generate with given assets file
98 + *
99 + * @param string $file File.
100 + *
101 + * @return string
102 + */
103 + public function get_assets_uri( $file ) {
104 + $file = ltrim( $file, '/' );
105 +
106 + return trailingslashit( RTSB_URL . '/assets' ) . $file;
107 + }
108 +
109 + /**
110 + * Get the template path.
111 + *
112 + * @return string
113 + */
114 + public function get_template_path() {
115 + return apply_filters( 'rtsb_template_path', 'shopbuilder/' );
116 + }
117 +
118 + /**
119 + * Get the plugin path.
120 + *
121 + * @return string
122 + */
123 + public function plugin_path() {
124 + return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
125 + }
126 +
127 + /**
128 + * Load Text Domain
129 + */
130 + public function language() {
131 + load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
132 + }
133 +
134 + /**
135 + * Init
136 + *
137 + * @return void
138 + */
139 + public function init() {
140 + if ( ! Dependencies::instance()->check() ) {
141 + return;
142 + }
143 +
144 + do_action( 'rtsb/before_loaded' );
145 + // Plugins Setting Page.
146 + add_filter(
147 + 'plugin_action_links_' . plugin_basename(RTSB_FILE ),
148 + [
149 + Fns::class,
150 + 'plugins_setting_links',
151 + ]
152 + );
153 +
154 + // Include File.
155 + AssetsController::instance();
156 + SupportController::instance();
157 + ModuleManager::instance();
158 + AddToCart::instance();
159 +
160 + BuilderController::instance();
161 + FilterHooks::init_hooks();
162 + ActionHooks::init_hooks();
163 +
164 + Installation::init();
165 + if ( is_admin() ) {
166 + AdminInit::instance();
167 + }
168 +
169 + do_action( 'rtsb/after_loaded' );
170 + }
171 +
172 + /**
173 + * Checks if Pro version installed
174 + *
175 + * @return boolean
176 + */
177 + public function has_pro() {
178 + return function_exists( 'rtsbp' );
179 + }
180 +
181 + /**
182 + * PRO Version URL.
183 + *
184 + * @return string
185 + */
186 + public function pro_version_link() {
187 + return 'https://www.radiustheme.com/downloads/shopbuilder/';
188 + }
189 + }
190 +
191 + /**
192 + * @return ShopBuilder
193 + */
194 + function rtsb() {
195 + return ShopBuilder::instance();
196 + }
197 +
198 + rtsb();
199 +}