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

229 lines 4.6 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 *
71 * @var string
72 */
73 public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
74
75 use SingletonTrait;
76
77 /**
78 * Class Constructor
79 */
80 private function __construct() {
81 $this->define_constants();
82 $this->post_type = 'product';
83 $this->current_theme = wp_get_theme()->get( 'Template' ) ? wp_get_theme()->get( 'Template' ) : wp_get_theme()->get( 'TextDomain' );
84 add_action( 'init', [ $this, 'language' ] );
85 add_action( 'plugins_loaded', [ $this, 'init' ], 15 );
86
87 // Register Plugin Active Hook.
88 register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
89
90 // Register Plugin Deactivate Hook.
91 register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
92
93 SupportController::instance();
94
95 // HPOS Declare compatibility.
96 add_action(
97 'before_woocommerce_init',
98 function () {
99 if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
100 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RTSB_FILE, true );
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 * Assets url generate with given assets file
124 *
125 * @param string $file File.
126 *
127 * @return string
128 */
129 public function get_assets_uri( $file ) {
130 $file = ltrim( $file, '/' );
131
132 return trailingslashit( RTSB_URL . '/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 * Load Text Domain
155 */
156 public function language() {
157 load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
158 }
159
160 /**
161 * Init
162 *
163 * @return void
164 */
165 public function init() {
166 if ( ! Dependencies::instance()->check() ) {
167 return;
168 }
169
170 do_action( 'rtsb/before/loaded' );
171
172 // Include File.
173 AssetsController::instance();
174 ModuleManager::instance();
175
176 // Ajax.
177 AddToCart::instance();
178 AjaxLogin::instance();
179
180 BuilderController::instance();
181 FilterHooks::init_hooks();
182 ActionHooks::init_hooks();
183
184 Installation::init();
185 Migration::init();
186
187 if ( is_admin() ) {
188 AdminInit::instance();
189 }
190
191 Shortcodes::instance();
192
193 do_action( 'rtsb/after/loaded' );
194 }
195
196 /**
197 * Checks if Pro version installed
198 *
199 * @return boolean
200 */
201 public function has_pro() {
202 return function_exists( 'rtsbpro' );
203 }
204
205 /**
206 * PRO Version URL.
207 *
208 * @return string
209 */
210 public function pro_version_link() {
211 return 'https://shopbuilderwp.com/';
212 }
213 }
214
215 /**
216 * @return ShopBuilder
217 */
218 function rtsb() {
219 static $cached_instance;
220 if ( null !== $cached_instance ) {
221 return $cached_instance;
222 }
223 $cached_instance = ShopBuilder::instance();
224 return $cached_instance;
225 }
226
227 rtsb();
228 }
229