PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.1.14
ShopBuilder – WooCommerce Builder For Elementor v2.1.14
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.14, at app/Controllers/Dependencies.php

182 lines 5.9 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(
97 self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ),
98 'install-plugin_elementor'
99 );
100 $message = sprintf(
101 '<strong>%s</strong> %s <strong>%s</strong> %s',
102 esc_html( self::PLUGIN_NAME ),
103 esc_html__( 'requires', 'shopbuilder' ),
104 esc_html__( 'Elementor', 'shopbuilder' ),
105 esc_html__( 'plugin to be installed and activated. Please install Elementor to continue.', 'shopbuilder' )
106 );
107 $button_text = esc_html__( 'Install Elementor', 'shopbuilder' );
108 }
109
110 $this->missing['elementor'] = [
111 'name' => 'Elementor',
112 'slug' => 'elementor',
113 'file_name' => $elementor,
114 'url' => $activation_url,
115 'message' => $message,
116 'button_txt' => $button_text,
117 ];
118 }
119 if ( ! empty( $this->missing ) ) {
120 add_action( 'admin_notices', [ $this, '_missing_plugins_warning' ] );
121
122 $this->allOk = false;
123 }
124
125 return $this->allOk;
126 }
127
128 /**
129 * Admin Notice For Required PHP Version
130 */
131 public function minimum_php_version() {
132 // Protect plugin Activation with error.
133 if ( isset( $_GET['activate'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
134 unset( $_GET['activate'] );
135 }
136 $message = sprintf(
137 /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
138 esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'shopbuilder' ),
139 '<strong>' . esc_html__( 'ShopBuilder', 'shopbuilder' ) . '</strong>',
140 '<strong>' . esc_html__( 'PHP', 'shopbuilder' ) . '</strong>',
141 self::MINIMUM_PHP_VERSION
142 );
143 printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', wp_kses_post( $message ) );
144 }
145
146 /**
147 * Adds admin notice.
148 */
149 public function _missing_plugins_warning() {
150 $missingPlugins = '';
151 $counter = 0;
152 foreach ( $this->missing as $plugin ) {
153 $counter++;
154 if ( $counter == count( $this->missing ) ) {
155 $sep = '';
156 } elseif ( $counter == count( $this->missing ) - 1 ) {
157 $sep = ' ' . esc_html__( 'and', 'shopbuilder' ) . ' ';
158 } else {
159 $sep = ', ';
160 }
161 if ( current_user_can( 'activate_plugins' ) ) {
162 $button = '<p><a href="' . esc_url( $plugin['url'] ) . '" class="button-primary">' . esc_html( $plugin['button_txt'] ) . '</a></p>';
163 // $plugin['message'] Already used escaping function
164 printf( '<div class="error"><p>%1$s</p>%2$s</div>', $plugin['message'], $button ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
165 } else {
166 $missingPlugins .= '<strong>' . esc_html( $plugin['name'] ) . '</strong>' . $sep;
167 }
168 }
169 }
170
171 /**
172 * @param $plugin_file_path
173 *
174 * @return bool
175 */
176 public function is_plugins_installed( $plugin_file_path = null ) {
177 $installed_plugins_list = get_plugins();
178
179 return isset( $installed_plugins_list[ $plugin_file_path ] );
180 }
181 }
182