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

217 lines 4.5 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\Migration;
11 use RadiusTheme\SB\Helpers\Installation;
12 use RadiusTheme\SB\Modules\ModuleManager;
13 use RadiusTheme\SB\Traits\SingletonTrait;
14 use RadiusTheme\SB\Controllers\Shortcodes;
15 use RadiusTheme\SB\Controllers\Dependencies;
16 use RadiusTheme\SB\Controllers\CacheController;
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 use RadiusTheme\SB\Controllers\Frontend\Ajax\UpdateCheckoutSection;
26
27 // Do not allow directly accessing this file.
28 if ( ! defined( 'ABSPATH' ) ) {
29 exit( 'This script cannot be accessed directly.' );
30 }
31
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' ) ? wp_get_theme()->get( 'TextDomain' ) : strtolower( str_replace( ' ', '', wp_get_theme()->get( 'Name' ) ) ) );
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 if ( Dependencies::instance()->check() ) {
94 SupportController::instance();
95 }
96
97 // HPOS Declare compatibility.
98 add_action(
99 'before_woocommerce_init',
100 function () {
101 if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
102 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RTSB_FILE, true );
103 }
104 }
105 );
106 }
107
108 /**
109 * Constants
110 *
111 * @return void
112 */
113 private function define_constants() {
114 if ( ! defined( 'RTSB_ABSPATH' ) ) {
115 define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
116 }
117
118 if ( ! defined( 'RTSB_URL' ) ) {
119 define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
120 }
121 }
122
123
124 /**
125 * Assets url generate with given assets file
126 *
127 * @param string $file File.
128 *
129 * @return string
130 */
131 public function get_assets_uri( $file ) {
132 $file = ltrim( $file, '/' );
133
134 return trailingslashit( RTSB_URL . '/assets' ) . $file;
135 }
136
137 /**
138 * Get the template path.
139 *
140 * @return string
141 */
142 public function get_template_path() {
143 return apply_filters( 'rtsb/template/path', 'shopbuilder/' );
144 }
145
146 /**
147 * Get the plugin path.
148 *
149 * @return string
150 */
151 public function plugin_path() {
152 return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
153 }
154
155 /**
156 * Load Text Domain
157 */
158 public function language() {
159 load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
160 }
161
162 /**
163 * Init
164 *
165 * @return void
166 */
167 public function init() {
168 if ( ! Dependencies::instance()->check() ) {
169 return;
170 }
171
172 do_action( 'rtsb/before/loaded' );
173 CacheController::instance();
174 // Include File.
175 AssetsController::instance();
176 ModuleManager::instance();
177
178 // Ajax.
179 AddToCart::instance();
180 AjaxLogin::instance();
181 UpdateCheckoutSection::instance();
182
183 BuilderController::instance();
184 FilterHooks::init_hooks();
185 ActionHooks::init_hooks();
186
187 Installation::init();
188 Migration::init();
189
190 if ( is_admin() ) {
191 AdminInit::instance();
192 }
193
194 Shortcodes::instance();
195
196 do_action( 'rtsb/after/loaded' );
197 }
198
199 /**
200 * Checks if Pro version installed
201 *
202 * @return boolean
203 */
204 public function has_pro() {
205 return function_exists( 'rtsbpro' );
206 }
207
208 /**
209 * PRO Version URL.
210 *
211 * @return string
212 */
213 public function pro_version_link() {
214 return 'https://shopbuilderwp.com/';
215 }
216 }
217