PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.1.15
ShopBuilder – WooCommerce Builder For Elementor v2.1.15
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 2.3.0 All 62 releases
shopbuilder / app / ShopBuilder.php

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

213 lines 4.2 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\Controllers\CacheController;
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\Admin\AdminInit;
18 use RadiusTheme\SB\Controllers\AssetsController;
19 use RadiusTheme\SB\Controllers\BuilderController;
20 use RadiusTheme\SB\Controllers\SupportController;
21 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
22 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
23 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
24 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
25
26 // Do not allow directly accessing this file.
27 if ( ! defined( 'ABSPATH' ) ) {
28 exit( 'This script cannot be accessed directly.' );
29 }
30
31 /**
32 * Main initialization class.
33 */
34 final class ShopBuilder {
35
36 /**
37 * Nonce id
38 *
39 * @var string
40 */
41 public $nonceId = '__rtsb_wpnonce';
42
43 /**
44 * Nonce Text
45 *
46 * @var string
47 */
48 public $nonceText = 'rtsb_nonce';
49
50 /**
51 * Post Type.
52 *
53 * @var string
54 */
55 public $post_type;
56
57 /**
58 * Post Type.
59 *
60 * @var string
61 */
62 public $current_theme;
63 /**
64 * Singleton
65 */
66
67 /**
68 * URL for fetch API
69 *
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 * Constants
107 *
108 * @return void
109 */
110 private function define_constants() {
111 if ( ! defined( 'RTSB_ABSPATH' ) ) {
112 define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
113 }
114
115 if ( ! defined( 'RTSB_URL' ) ) {
116 define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
117 }
118 }
119
120
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, '/' );
130
131 return trailingslashit( RTSB_URL . '/assets' ) . $file;
132 }
133
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 }
142
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 }
151
152 /**
153 * Load Text Domain
154 */
155 public function language() {
156 load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
157 }
158
159 /**
160 * Init
161 *
162 * @return void
163 */
164 public function init() {
165 if ( ! Dependencies::instance()->check() ) {
166 return;
167 }
168
169 do_action( 'rtsb/before/loaded' );
170 CacheController::instance();
171 // Include File.
172 AssetsController::instance();
173 ModuleManager::instance();
174
175 // Ajax.
176 AddToCart::instance();
177 AjaxLogin::instance();
178
179 BuilderController::instance();
180 FilterHooks::init_hooks();
181 ActionHooks::init_hooks();
182
183 Installation::init();
184 Migration::init();
185
186 if ( is_admin() ) {
187 AdminInit::instance();
188 }
189
190 Shortcodes::instance();
191
192 do_action( 'rtsb/after/loaded' );
193 }
194
195 /**
196 * Checks if Pro version installed
197 *
198 * @return boolean
199 */
200 public function has_pro() {
201 return function_exists( 'rtsbpro' );
202 }
203
204 /**
205 * PRO Version URL.
206 *
207 * @return string
208 */
209 public function pro_version_link() {
210 return 'https://shopbuilderwp.com/';
211 }
212 }
213