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

215 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 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 CacheController::instance();
172 // Include File.
173 AssetsController::instance();
174 ModuleManager::instance();
175
176 // Ajax.
177 AddToCart::instance();
178 AjaxLogin::instance();
179 UpdateCheckoutSection::instance();
180
181 BuilderController::instance();
182 FilterHooks::init_hooks();
183 ActionHooks::init_hooks();
184
185 Installation::init();
186 Migration::init();
187
188 if ( is_admin() ) {
189 AdminInit::instance();
190 }
191
192 Shortcodes::instance();
193
194 do_action( 'rtsb/after/loaded' );
195 }
196
197 /**
198 * Checks if Pro version installed
199 *
200 * @return boolean
201 */
202 public function has_pro() {
203 return function_exists( 'rtsbpro' );
204 }
205
206 /**
207 * PRO Version URL.
208 *
209 * @return string
210 */
211 public function pro_version_link() {
212 return 'https://shopbuilderwp.com/';
213 }
214 }
215