PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.1.4
ShopBuilder – WooCommerce Builder For Elementor v2.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 2.1.4, at app/ShopBuilder.php

239 lines 4.8 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
9 use RadiusTheme\SB\Helpers\Installation;
10 use RadiusTheme\SB\Modules\ModuleManager;
11 use RadiusTheme\SB\Traits\SingletonTrait;
12 use RadiusTheme\SB\Controllers\Shortcodes;
13 use RadiusTheme\SB\Controllers\Dependencies;
14 use RadiusTheme\SB\Controllers\Admin\AdminInit;
15 use RadiusTheme\SB\Controllers\AssetsController;
16 use RadiusTheme\SB\Controllers\BuilderController;
17 use RadiusTheme\SB\Controllers\SupportController;
18 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
19 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
20 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
21 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
22 use RadiusTheme\SB\Helpers\Migration;
23
24 // Do not allow directly accessing this file.
25 if ( ! defined( 'ABSPATH' ) ) {
26 exit( 'This script cannot be accessed directly.' );
27 }
28
29 require_once RTSB_PATH . 'vendor/autoload.php';
30
31 if ( ! class_exists( ShopBuilder::class ) ) {
32 /**
33 * Main initialization class.
34 */
35 final class ShopBuilder {
36
37 /**
38 * Nonce id
39 *
40 * @var string
41 */
42 public $nonceId = '__rtsb_wpnonce';
43
44 /**
45 * Nonce Text
46 *
47 * @var string
48 */
49 public $nonceText = 'rtsb_nonce';
50
51 /**
52 * Post Type.
53 *
54 * @var string
55 */
56 public $post_type;
57
58 /**
59 * Post Type.
60 *
61 * @var string
62 */
63 public $current_theme;
64 /**
65 * Singleton
66 */
67
68 /**
69 * URL for fetch API
70 * @var string
71 */
72 public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
73
74 use SingletonTrait;
75
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 );
85
86 // Register Plugin Active Hook.
87 register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
88
89 // Register Plugin Deactivate Hook.
90 register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
91
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 }
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 ) . '/' );
114 }
115
116 if ( ! defined( 'RTSB_URL' ) ) {
117 define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
118 }
119
120 }
121
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;
134 }
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 }
144
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 }
153
154 /**
155 * Load Text Domain
156 */
157 public function language() {
158 load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
159 }
160
161 /**
162 * Init
163 *
164 * @return void
165 */
166 public function init() {
167 if ( ! Dependencies::instance()->check() ) {
168 return;
169 }
170
171 do_action( 'rtsb/before/loaded' );
172
173 // Include File.
174 AssetsController::instance();
175 ModuleManager::instance();
176
177 // Ajax.
178 AddToCart::instance();
179 AjaxLogin::instance();
180
181 BuilderController::instance();
182 FilterHooks::init_hooks();
183 ActionHooks::init_hooks();
184
185 Installation::init();
186 Migration::init();
187
188 if ( is_admin() ) {
189 AdminInit::instance();
190 }
191
192 Shortcodes::instance();
193
194 do_action( 'rtsb/after/loaded' );
195 }
196
197 /**
198 * Checks if Pro version installed
199 *
200 * @return boolean
201 */
202 public function has_pro() {
203 return function_exists( 'rtsbpro' );
204 }
205
206 /**
207 * PRO Version URL.
208 *
209 * @return string
210 */
211 public function pro_version_link() {
212 return 'https://shopbuilderwp.com/';
213 }
214 }
215
216 /**
217 * @return ShopBuilder
218 */
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;
234 }
235
236
237 rtsb();
238 }
239