PluginProbe
WDesignKit – AI Templates, Widget Builder & MCP Workflow / 1.0.14
WDesignKit – AI Templates, Widget Builder & MCP Workflow v1.0.14
2.6.6 2.6.5 2.6.4 2.6.3 2.6.2 2.6.1 2.6.0 2.5.5 2.5.4 2.5.3 2.5.2 2.5.1 2.5.0 2.4.0 2.3.3 2.3.2 2.3.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 All 128 releases
wdesignkit / includes / admin / class-wdkit-depends-installer.php

class-wdkit-depends-installer.php in WDesignKit – AI Templates, Widget Builder & MCP Workflow 1.0.14, at includes/admin/class-wdkit-depends-installer.php

176 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * The Plugin Installer Require of the Template.
4 *
5 * @link https://posimyth.com/
6 * @since 1.0.0
7 *
8 * @package Wdesignkit
9 */
10
11 /**Exit if accessed directly.*/
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit;
14 }
15
16 if ( ! class_exists( 'Wdkit_Depends_Installer' ) ) {
17
18 /**
19 * It is check plugin install or not when template import
20 *
21 * @since 1.0.0
22 */
23 class Wdkit_Depends_Installer {
24 /**
25 * Member Variable
26 *
27 * @var instance
28 */
29 private static $instance;
30
31 /**
32 * Initiator
33 */
34 public static function get_instance() {
35 if ( ! isset( self::$instance ) ) {
36 self::$instance = new self();
37 }
38 return self::$instance;
39 }
40
41 /**
42 * Initialize the class and set its properties.
43 *
44 * @since 1.0.0
45 */
46 public function __construct() {
47 }
48
49 /**
50 * Install Plugin For Template
51 *
52 * @since 1.0.0
53 *
54 * @param string $plugin_data this vlaue is plugin slug.
55 */
56 public function wdkit_install_plugin( $plugin_data ) {
57 require_once ABSPATH . 'wp-admin/includes/plugin.php';
58 require_once ABSPATH . 'wp-admin/includes/file.php';
59 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
60 include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
61
62 $all_plugins = get_plugins();
63 $installed = isset( $all_plugins[ $plugin_data['plugin_slug'] ] );
64
65 if ( isset( $plugin_data['freepro'] ) && 1 === $plugin_data['freepro'] ) {
66 if ( ! $installed ) {
67 $status = array(
68 'p_id' => $plugin_data['p_id'],
69 'success' => false,
70 'status' => 'pro_plugin',
71 'message' => 'Pro Plugin',
72 );
73 }
74 }
75
76 if ( $installed ) {
77 $activate_status = $this->wdkit_activate_plugin( $plugin_data['plugin_slug'] );
78
79 $status = array(
80 'p_id' => $plugin_data['p_id'],
81 'success' => true,
82 'status' => 'active',
83 );
84 } else {
85 $status = array(
86 'p_id' => $plugin_data['p_id'],
87 'success' => false,
88 );
89
90 $plugin_api = plugins_api(
91 'plugin_information',
92 array(
93 'slug' => sanitize_key( wp_unslash( $plugin_data['original_slug'] ) ),
94 'fields' => array(
95 'sections' => false,
96 ),
97 )
98 );
99
100 if ( is_wp_error( $plugin_api ) ) {
101 $status['message'] = $plugin_api->get_error_message();
102 return $status;
103 }
104
105 $status['plugin_name'] = $plugin_api->name;
106
107 $skin = new WP_Ajax_Upgrader_Skin();
108 $upgrader = new Plugin_Upgrader( $skin );
109 $result = $upgrader->install( $plugin_api->download_link );
110 if ( is_wp_error( $result ) ) {
111 $status['status'] = $result->get_error_code();
112 $status['message'] = $result->get_error_message();
113
114 return $status;
115 } elseif ( is_wp_error( $skin->result ) ) {
116 $status['status'] = $skin->result->get_error_code();
117 $status['message'] = $skin->result->get_error_message();
118
119 return $status;
120 } elseif ( $skin->get_errors()->has_errors() ) {
121 $status['message'] = $skin->get_error_messages();
122
123 return $status;
124 } elseif ( is_null( $result ) ) {
125 global $wp_filesystem;
126
127 $status['status'] = 'unable_to_connect_to_filesystem';
128 $status['message'] = __( 'Unable to connect to the filesystem. Please confirm your credentials.', 'wdesignkit' );
129
130 if ( $wp_filesystem instanceof \WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
131 $status['message'] = esc_html( $wp_filesystem->errors->get_error_message() );
132 }
133
134 return $status;
135 }
136
137 $install_status = install_plugin_install_status( $plugin_api );
138 $activate_status = $this->wdkit_activate_plugin( $install_status['file'] );
139 }
140
141 if ( $activate_status && ! is_wp_error( $activate_status ) ) {
142 $status['success'] = true;
143 $status['status'] = 'active';
144 }
145
146 $status['slug'] = $plugin_data['original_slug'];
147
148 return $status;
149 }
150
151 /**
152 * Active Plugin For Template
153 *
154 * @since 1.0.0
155 *
156 * @param string $plugin_file this vlaue is plugin slug.
157 */
158 private function wdkit_activate_plugin( $plugin_file ) {
159
160 if ( current_user_can( 'activate_plugin', $plugin_file ) && is_plugin_inactive( $plugin_file ) ) {
161 $result = activate_plugin( $plugin_file, false, false );
162
163 if ( is_wp_error( $result ) ) {
164 return $result;
165 } else {
166 return true;
167 }
168 }
169
170 return false;
171 }
172 }
173
174 Wdkit_Depends_Installer::get_instance();
175 }
176