PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.1.4
ShopBuilder – WooCommerce Builder For Elementor v2.1.4
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 / Controllers / Dependencies.php

Dependencies.php in ShopBuilder – WooCommerce Builder For Elementor 2.1.4, at app/Controllers/Dependencies.php

181 lines 5.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace RadiusTheme\SB\Controllers;
4
5 use RadiusTheme\SB\Helpers\Fns;
6 use RadiusTheme\SB\Traits\SingletonTrait;
7
8 // Do not allow directly accessing this file.
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit( 'This script cannot be accessed directly.' );
11 }
12
13
14 class Dependencies {
15
16 const MINIMUM_PHP_VERSION = '7.4';
17
18 const PLUGIN_NAME = 'ShopBuilder - Woocommerce Builder for Elementor';
19
20 use SingletonTrait;
21
22 private $missing = [];
23 /**
24 * @var bool
25 */
26 private $allOk = true;
27
28 /**
29 * @return bool
30 */
31 public function check() {
32
33 if ( version_compare( PHP_VERSION, self::MINIMUM_PHP_VERSION, '<' ) ) {
34 add_action( 'admin_notices', [ $this, 'minimum_php_version' ] );
35 $this->allOk = false;
36 }
37
38 if ( ! function_exists( 'is_plugin_active' ) ) {
39 include_once ABSPATH . 'wp-admin/includes/plugin.php';
40 }
41 if ( ! function_exists( 'wp_create_nonce' ) ) {
42 require_once ABSPATH . 'wp-includes/pluggable.php';
43 }
44 // Check WooCommerce
45 $woocommerce = 'woocommerce/woocommerce.php';
46
47 if ( ! is_plugin_active( $woocommerce ) ) {
48 if ( $this->is_plugins_installed( $woocommerce ) ) {
49 $activation_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $woocommerce . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $woocommerce );
50 $message = sprintf(
51 '<strong>%s</strong> %s <strong>%s</strong> %s',
52 esc_html( self::PLUGIN_NAME ),
53 esc_html__( 'requires', 'shopbuilder' ),
54 esc_html__( 'WooCommerce', 'shopbuilder' ),
55 esc_html__( 'plugin to be active. Please activate WooCommerce to continue.', 'shopbuilder' )
56 );
57 $button_text = esc_html__( 'Activate WooCommerce', 'shopbuilder' );
58
59 } else {
60 $activation_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=woocommerce' ), 'install-plugin_woocommerce' );
61 $message = sprintf(
62 '<strong>%s</strong> %s <strong>%s</strong> %s',
63 esc_html( self::PLUGIN_NAME ),
64 esc_html__( 'requires', 'shopbuilder' ),
65 esc_html__( 'WooCommerce', 'shopbuilder' ),
66 esc_html__( 'plugin to be installed and activated. Please install WooCommerce to continue.', 'shopbuilder' )
67 );
68 $button_text = esc_html__( 'Install WooCommerce', 'shopbuilder' );
69 }
70 $this->missing['woocommerce'] = [
71 'name' => 'WooCommerce',
72 'slug' => 'woocommerce',
73 'file_name' => $woocommerce,
74 'url' => $activation_url,
75 'message' => $message,
76 'button_txt' => $button_text,
77 ];
78 }
79
80 $elementor = 'elementor/elementor.php';
81
82 if ( ! is_plugin_active( $elementor ) ) {
83
84 if ( $this->is_plugins_installed( $elementor ) ) {
85 $activation_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $elementor . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $elementor );
86 $message = sprintf(
87 '<strong>%s</strong> %s <strong>%s</strong> %s',
88 esc_html( self::PLUGIN_NAME ),
89 esc_html__( 'requires', 'shopbuilder' ),
90 esc_html__( 'Elementor', 'shopbuilder' ),
91 esc_html__( 'plugin to be active. Please activate Elementor to continue.', 'shopbuilder' )
92 );
93 $button_text = esc_html__( 'Activate Elementor', 'shopbuilder' );
94
95 } else {
96 $activation_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ),
97 'install-plugin_elementor' );
98 $message = sprintf(
99 '<strong>%s</strong> %s <strong>%s</strong> %s',
100 esc_html( self::PLUGIN_NAME ),
101 esc_html__( 'requires', 'shopbuilder' ),
102 esc_html__( 'Elementor', 'shopbuilder' ),
103 esc_html__( 'plugin to be installed and activated. Please install Elementor to continue.', 'shopbuilder' )
104 );
105 $button_text = esc_html__( 'Install Elementor', 'shopbuilder' );
106 }
107
108 $this->missing['elementor'] = [
109 'name' => 'Elementor',
110 'slug' => 'elementor',
111 'file_name' => $elementor,
112 'url' => $activation_url,
113 'message' => $message,
114 'button_txt' => $button_text,
115 ];
116 }
117 if ( ! empty( $this->missing ) ) {
118 add_action( 'admin_notices', [ $this, '_missing_plugins_warning' ] );
119
120 $this->allOk = false;
121 }
122
123 return $this->allOk;
124 }
125
126 /**
127 * Admin Notice For Required PHP Version
128 */
129 public function minimum_php_version() {
130 if ( isset( $_GET['activate'] ) ) {
131 unset( $_GET['activate'] );
132 }
133 $message = sprintf(
134 /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
135 esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'shopbuilder' ),
136 '<strong>' . esc_html__( 'ShopBuilder', 'shopbuilder' ) . '</strong>',
137 '<strong>' . esc_html__( 'PHP', 'shopbuilder' ) . '</strong>',
138 self::MINIMUM_PHP_VERSION
139 );
140 printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
141 }
142
143 /**
144 * Adds admin notice.
145 */
146 public function _missing_plugins_warning() {
147 $missingPlugins = '';
148 $counter = 0;
149 foreach ( $this->missing as $plugin ) {
150 $counter ++;
151 if ( $counter == sizeof( $this->missing ) ) {
152 $sep = '';
153 } elseif ( $counter == sizeof( $this->missing ) - 1 ) {
154 $sep = ' ' . esc_html__( 'and', 'shopbuilder' ) . ' ';
155 } else {
156 $sep = ', ';
157 }
158 if ( current_user_can( 'activate_plugins' ) ) {
159 $button = '<p><a href="' . esc_url( $plugin['url'] ) . '" class="button-primary">' . esc_html( $plugin['button_txt'] ) . '</a></p>';
160 // $plugin['message'] Already used escaping function
161 printf( '<div class="error"><p>%1$s</p>%2$s</div>', $plugin['message'], $button ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
162 } else {
163 $missingPlugins .= '<strong>' . esc_html( $plugin['name'] ) . '</strong>' . $sep;
164 }
165 }
166 }
167
168 /**
169 * @param $plugin_file_path
170 *
171 * @return bool
172 */
173 public function is_plugins_installed( $plugin_file_path = null ) {
174 $installed_plugins_list = get_plugins();
175
176 return isset( $installed_plugins_list[ $plugin_file_path ] );
177 }
178
179
180 }
181