PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.0.2
ShopBuilder – WooCommerce Builder For Elementor v2.0.2
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
← All changes | app/Controllers/Dependencies.php +65 -21 3.4.22.0.2 View file →
@@ -18,11 +18,8 @@
18 18 const PLUGIN_NAME = 'ShopBuilder - Woocommerce Builder for Elementor';
19 19
20 20 use SingletonTrait;
21 21
22 - /**
23 - * @var array
24 - */
25 22 private $missing = [];
26 23 /**
27 24 * @var bool
28 25 */
@@ -43,26 +40,33 @@
43 40 }
44 41 if ( ! function_exists( 'wp_create_nonce' ) ) {
45 42 require_once ABSPATH . 'wp-includes/pluggable.php';
46 43 }
44 + // Check WooCommerce
45 + $woocommerce = 'woocommerce/woocommerce.php';
47 46
48 - // Check WooCommerce.
49 - $woocommerce = 'woocommerce/woocommerce.php';
50 47 if ( ! is_plugin_active( $woocommerce ) ) {
51 48 if ( $this->is_plugins_installed( $woocommerce ) ) {
52 49 $activation_url = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $woocommerce . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $woocommerce );
53 50 $message = sprintf(
54 - '<strong>%s</strong> requires <strong>WooCommerce</strong> plugin to be active. Please activate WooCommerce to continue.',
51 + '<strong>%s</strong> %s <strong>%s</strong> %s',
55 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 56 );
57 - $button_text = 'Activate WooCommerce';
57 + $button_text = esc_html__( 'Activate WooCommerce', 'shopbuilder' );
58 +
58 59 } else {
59 60 $activation_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=woocommerce' ), 'install-plugin_woocommerce' );
60 61 $message = sprintf(
61 - '<strong>%s</strong> requires <strong>WooCommerce</strong> plugin to be active. Please activate WooCommerce to continue.',
62 + '<strong>%s</strong> %s <strong>%s</strong> %s',
62 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' )
63 67 );
64 - $button_text = 'Install WooCommerce';
68 + $button_text = esc_html__( 'Install WooCommerce', 'shopbuilder' );
65 69 }
66 70 $this->missing['woocommerce'] = [
67 71 'name' => 'WooCommerce',
68 72 'slug' => 'woocommerce',
@@ -70,13 +74,51 @@
70 74 'url' => $activation_url,
71 75 'message' => $message,
72 76 'button_txt' => $button_text,
73 77 ];
74 - $this->allOk = false;
75 78 }
76 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 + }
77 117 if ( ! empty( $this->missing ) ) {
78 118 add_action( 'admin_notices', [ $this, '_missing_plugins_warning' ] );
119 +
120 + $this->allOk = false;
79 121 }
80 122
81 123 return $this->allOk;
82 124 }
@@ -84,20 +126,19 @@
84 126 /**
85 127 * Admin Notice For Required PHP Version
86 128 */
87 129 public function minimum_php_version() {
88 - // Protect plugin Activation with error.
89 - if ( isset( $_GET['activate'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
130 + if ( isset( $_GET['activate'] ) ) {
90 131 unset( $_GET['activate'] );
91 132 }
92 133 $message = sprintf(
93 134 /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
94 - esc_html( '"%1$s" requires "%2$s" version %3$s or greater.' ),
95 - '<strong>ShopBuilder</strong>',
96 - '<strong>PHP</strong>',
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>',
97 138 self::MINIMUM_PHP_VERSION
98 139 );
99 - printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', wp_kses_post( $message ) );
140 + printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
100 141 }
101 142
102 143 /**
103 144 * Adds admin notice.
@@ -105,18 +146,19 @@
105 146 public function _missing_plugins_warning() {
106 147 $missingPlugins = '';
107 148 $counter = 0;
108 149 foreach ( $this->missing as $plugin ) {
109 - $counter++;
110 - if ( $counter == count( $this->missing ) ) {
150 + $counter ++;
151 + if ( $counter == sizeof( $this->missing ) ) {
111 152 $sep = '';
112 - } elseif ( $counter == count( $this->missing ) - 1 ) {
113 - $sep = ' and ';
153 + } elseif ( $counter == sizeof( $this->missing ) - 1 ) {
154 + $sep = ' ' . esc_html__( 'and', 'shopbuilder' ) . ' ';
114 155 } else {
115 156 $sep = ', ';
116 157 }
117 158 if ( current_user_can( 'activate_plugins' ) ) {
118 - $button = ! empty( $plugin['url'] ) ? '<p><a href="' . esc_url( $plugin['url'] ) . '" class="button-primary">' . esc_html( $plugin['button_txt'] ) . '</a></p>' : '';
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
119 161 printf( '<div class="error"><p>%1$s</p>%2$s</div>', $plugin['message'], $button ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
120 162 } else {
121 163 $missingPlugins .= '<strong>' . esc_html( $plugin['name'] ) . '</strong>' . $sep;
122 164 }
@@ -132,5 +174,7 @@
132 174 $installed_plugins_list = get_plugins();
133 175
134 176 return isset( $installed_plugins_list[ $plugin_file_path ] );
135 177 }
178 +
179 +
136 180 }