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

212 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\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\Admin\AdminInit;
17 use RadiusTheme\SB\Controllers\AssetsController;
18 use RadiusTheme\SB\Controllers\BuilderController;
19 use RadiusTheme\SB\Controllers\SupportController;
20 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
21 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
22 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
23 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
24
25 // Do not allow directly accessing this file.
26 if ( ! defined( 'ABSPATH' ) ) {
27 exit( 'This script cannot be accessed directly.' );
28 }
29
30 /**
31 * Main initialization class.
32 */
33 final class ShopBuilder {
34
35 /**
36 * Nonce id
37 *
38 * @var string
39 */
40 public $nonceId = '__rtsb_wpnonce';
41
42 /**
43 * Nonce Text
44 *
45 * @var string
46 */
47 public $nonceText = 'rtsb_nonce';
48
49 /**
50 * Post Type.
51 *
52 * @var string
53 */
54 public $post_type;
55
56 /**
57 * Post Type.
58 *
59 * @var string
60 */
61 public $current_theme;
62 /**
63 * Singleton
64 */
65
66 /**
67 * URL for fetch API
68 *
69 * @var string
70 */
71 public $BASE_API = 'https://shopbuilderwp.com/wp-json/rtsb/v1/layouts/';
72
73 use SingletonTrait;
74
75 /**
76 * Class Constructor
77 */
78 private function __construct() {
79 $this->define_constants();
80 $this->post_type = 'product';
81 $this->current_theme = wp_get_theme()->get( 'Template' ) ? wp_get_theme()->get( 'Template' ) : wp_get_theme()->get( 'TextDomain' );
82 add_action( 'init', [ $this, 'language' ] );
83 add_action( 'plugins_loaded', [ $this, 'init' ], 15 );
84
85 // Register Plugin Active Hook.
86 register_activation_hook( RTSB_FILE, [ Installation::class, 'activate' ] );
87
88 // Register Plugin Deactivate Hook.
89 register_deactivation_hook( RTSB_FILE, [ Installation::class, 'deactivation' ] );
90
91 SupportController::instance();
92
93 // HPOS Declare compatibility.
94 add_action(
95 'before_woocommerce_init',
96 function () {
97 if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
98 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', RTSB_FILE, true );
99 }
100 }
101 );
102 }
103
104 /**
105 * Constants
106 *
107 * @return void
108 */
109 private function define_constants() {
110 if ( ! defined( 'RTSB_ABSPATH' ) ) {
111 define( 'RTSB_ABSPATH', dirname( RTSB_FILE ) . '/' );
112 }
113
114 if ( ! defined( 'RTSB_URL' ) ) {
115 define( 'RTSB_URL', plugins_url( '', RTSB_FILE ) );
116 }
117 }
118
119
120 /**
121 * Assets url generate with given assets file
122 *
123 * @param string $file File.
124 *
125 * @return string
126 */
127 public function get_assets_uri( $file ) {
128 $file = ltrim( $file, '/' );
129
130 return trailingslashit( RTSB_URL . '/assets' ) . $file;
131 }
132
133 /**
134 * Get the template path.
135 *
136 * @return string
137 */
138 public function get_template_path() {
139 return apply_filters( 'rtsb/template/path', 'shopbuilder/' );
140 }
141
142 /**
143 * Get the plugin path.
144 *
145 * @return string
146 */
147 public function plugin_path() {
148 return untrailingslashit( plugin_dir_path( RTSB_FILE ) );
149 }
150
151 /**
152 * Load Text Domain
153 */
154 public function language() {
155 load_plugin_textdomain( 'shopbuilder', false, dirname( plugin_basename( RTSB_FILE ) ) . '/languages/' );
156 }
157
158 /**
159 * Init
160 *
161 * @return void
162 */
163 public function init() {
164 if ( ! Dependencies::instance()->check() ) {
165 return;
166 }
167
168 do_action( 'rtsb/before/loaded' );
169
170 // Include File.
171 AssetsController::instance();
172 ModuleManager::instance();
173
174 // Ajax.
175 AddToCart::instance();
176 AjaxLogin::instance();
177
178 BuilderController::instance();
179 FilterHooks::init_hooks();
180 ActionHooks::init_hooks();
181
182 Installation::init();
183 Migration::init();
184
185 if ( is_admin() ) {
186 AdminInit::instance();
187 }
188
189 Shortcodes::instance();
190
191 do_action( 'rtsb/after/loaded' );
192 }
193
194 /**
195 * Checks if Pro version installed
196 *
197 * @return boolean
198 */
199 public function has_pro() {
200 return function_exists( 'rtsbpro' );
201 }
202
203 /**
204 * PRO Version URL.
205 *
206 * @return string
207 */
208 public function pro_version_link() {
209 return 'https://shopbuilderwp.com/';
210 }
211 }
212