PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.1.4
ShopBuilder – WooCommerce Builder For Elementor v3.1.4
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
shopbuilder / app / ShopBuilder.php

ShopBuilder.php in ShopBuilder – WooCommerce Builder For Elementor 3.1.4, at app/ShopBuilder.php

257 lines 5.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Main initialization class.
4 *
5 * @package RadiusTheme\SB
6 */
7
8 namespace RadiusTheme\SB;
9
10 use RadiusTheme\SB\Helpers\Cache;
11 use RadiusTheme\SB\Helpers\Migration;
12 use RadiusTheme\SB\Helpers\Installation;
13 use RadiusTheme\SB\Modules\ModuleManager;
14 use RadiusTheme\SB\Traits\SingletonTrait;
15 use RadiusTheme\SB\Controllers\Shortcodes;
16 use RadiusTheme\SB\Controllers\Dependencies;
17 use RadiusTheme\SB\Controllers\CacheController;
18 use RadiusTheme\SB\Controllers\Admin\AdminInit;
19 use RadiusTheme\SB\Controllers\AssetsController;
20 use RadiusTheme\SB\Controllers\BuilderController;
21 use RadiusTheme\SB\Controllers\SupportController;
22 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
23 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
24 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
25 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
26 use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
27
28 // Do not allow directly accessing this file.
29 if ( ! defined( 'ABSPATH' ) ) {
30 exit( 'This script cannot be accessed directly.' );
31 }
32
33 /**
34 * Main initialization class.
35 */
36 final class ShopBuilder {
37
38 /**
39 * Nonce id
40 *
41 * @var string
42 */
43 public $nonceId = '__rtsb_wpnonce';
44
45 /**
46 * Nonce Text
47 *
48 * @var string
49 */
50 public $nonceText = 'rtsb_nonce';
51
52 /**
53 * Post Type.
54 *
55 * @var string
56 */
57 public $post_type;
58
59 /**
60 * Post Type.
61 *
62 * @var string
63 */
64 public $current_theme;
65 /**
66 * Singleton
67 */
68
69 /**
70 * URL for fetch API
71 *
72 * @var string
73 */
74 public $BASE_API = 'https://shopbuilderwp.com/demo/wp-json/rtsb/v1/layouts/';
75
76 use SingletonTrait;
77
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 );
87
88 // Register Plugin Active Hook.
89 register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
90
91 // Register Plugin Deactivate Hook.
92 register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
93
94 if ( Dependencies::instance()->check() ) {
95 SupportController::instance();
96 }
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 * Constants
111 *
112 * @return void
113 */
114 private function define_constants() {
115 if ( ! defined( 'RTSB_ABSPATH' ) ) {
116 define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
117 }
118
119 if ( ! defined( 'RTSB_URL' ) ) {
120 define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
121 }
122 }
123
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, '/' );
134
135 return trailingslashit( RTSB_URL . '/assets' ) . $file;
136 }
137
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, '/' );
147
148 return trailingslashit( RTSB_PATH . 'assets' ) . $file;
149 }
150
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 }
159
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;
177 }
178
179 do_action( 'rtsb/before/loaded' );
180 CacheController::instance();
181 // Include File.
182 AssetsController::instance();
183 ModuleManager::instance();
184
185 // Ajax.
186 AddToCart::instance();
187 AjaxLogin::instance();
188 UpdateCheckoutSection::instance();
189
190 BuilderController::instance();
191 FilterHooks::init_hooks();
192 ActionHooks::init_hooks();
193
194 Installation::init();
195 Migration::init();
196
197 if ( is_admin() ) {
198 AdminInit::instance();
199 }
200
201 Shortcodes::instance();
202
203 do_action( 'rtsb/after/loaded' );
204 }
205
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;
217 }
218
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;
228 }
229
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();
236 }
237 }
238
239 /**
240 * Checks if Pro version installed
241 *
242 * @return boolean
243 */
244 public function has_pro() {
245 return function_exists( 'rtsbpro' );
246 }
247
248 /**
249 * PRO Version URL.
250 *
251 * @return string
252 */
253 public function pro_version_link() {
254 return 'https://shopbuilderwp.com/';
255 }
256 }
257