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

220 lines 4.4 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\Dependencies;
13 use RadiusTheme\SB\Controllers\Admin\AdminInit;
14 use RadiusTheme\SB\Controllers\AssetsController;
15 use RadiusTheme\SB\Controllers\BuilderController;
16 use RadiusTheme\SB\Controllers\SupportController;
17 use RadiusTheme\SB\Controllers\Hooks\FilterHooks;
18 use RadiusTheme\SB\Controllers\Hooks\ActionHooks;
19 use RadiusTheme\SB\Controllers\Frontend\Ajax\AddToCart;
20 use RadiusTheme\SB\Controllers\Frontend\Ajax\AjaxLogin;
21 use RadiusTheme\SB\Helpers\Fns;
22
23 // Do not allow directly accessing this file.
24 if ( ! defined( 'ABSPATH' ) ) {
25 exit( 'This script cannot be accessed directly.' );
26 }
27
28 require_once RTSB_PATH . 'vendor/autoload.php';
29
30 if ( ! class_exists( ShopBuilder::class ) ) {
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 * @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 /**
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 /**
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 if ( is_admin() ) {
186 AdminInit::instance();
187 }
188
189 do_action( 'rtsb/after/loaded' );
190 }
191
192 /**
193 * Checks if Pro version installed
194 *
195 * @return boolean
196 */
197 public function has_pro() {
198 return function_exists( 'rtsbpro' );
199 }
200
201 /**
202 * PRO Version URL.
203 *
204 * @return string
205 */
206 public function pro_version_link() {
207 return 'https://shopbuilderwp.com/';
208 }
209 }
210
211 /**
212 * @return ShopBuilder
213 */
214 function rtsb() {
215 return ShopBuilder::instance();
216 }
217
218 rtsb();
219 }
220