PluginProbe
Elementor Website Builder – more than just a page builder / 3.6.3
Elementor Website Builder – more than just a page builder v3.6.3
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / core / utils / plugins-manager.php

plugins-manager.php in Elementor Website Builder – more than just a page builder 3.6.3, at core/utils/plugins-manager.php

138 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Core\Utils;
4
5 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
6 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
7 require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
8 require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
9
10 use Elementor\Plugin;
11 use Plugin_Upgrader;
12 use WP_Ajax_Upgrader_Skin;
13
14 class Plugins_Manager {
15
16 /**
17 * @var Plugin_Upgrader
18 */
19 private $upgrader;
20
21 public function __construct( $upgrader = null ) {
22
23 // For tests
24 if ( $upgrader ) {
25 $this->upgrader = $upgrader;
26 } else {
27 $skin = new WP_Ajax_Upgrader_Skin();
28 $this->upgrader = new Plugin_Upgrader( $skin );
29 }
30 }
31
32 /**
33 * Install plugin or an array of plugins.
34 *
35 * @since 3.6.2
36 *
37 * @param string|array $plugins
38 * @return array [ 'succeeded' => [] , 'failed' => [] ]
39 */
40 public function install( $plugins ) {
41 $succeeded = [];
42 $failed = [];
43 $already_installed_plugins = Plugin::$instance->wp->get_plugins();
44
45 if ( ! is_array( $plugins ) ) {
46 $plugins = [ $plugins ];
47 }
48
49 foreach ( $plugins as $plugin ) {
50 if ( in_array( $plugin, $already_installed_plugins->keys(), true ) ) {
51 $succeeded[] = $plugin;
52 continue;
53 }
54
55 $slug = $this->clean_slug( $plugin );
56
57 $api = Plugin::$instance->wp->plugins_api('plugin_information',
58 [
59 'slug' => $slug,
60 'fields' => array(
61 'short_description' => false,
62 'sections' => false,
63 'requires' => false,
64 'rating' => false,
65 'ratings' => false,
66 'downloaded' => false,
67 'last_updated' => false,
68 'added' => false,
69 'tags' => false,
70 'compatibility' => false,
71 'homepage' => false,
72 'donate_link' => false,
73 ),
74 ]
75 );
76
77 if ( ! isset( $api->download_link ) ) {
78 $failed[] = $plugin;
79 continue;
80 }
81
82 $installation = $this->upgrader->install( $api->download_link );
83
84 if ( $installation ) {
85 $succeeded[] = $plugin;
86 } else {
87 $failed[] = $plugin;
88 }
89 }
90
91 return [
92 'succeeded' => $succeeded,
93 'failed' => $failed,
94 ];
95 }
96
97 /**
98 * Activate plugin or array off plugins.
99 *
100 * @since 3.6.2
101 *
102 * @param array|string $plugins
103 * @return array [ 'succeeded' => [] , 'failed' => [] ]
104 */
105 public function activate( $plugins ) {
106 $succeeded = [];
107 $failed = [];
108
109 if ( ! is_array( $plugins ) ) {
110 $plugins = [ $plugins ];
111 }
112
113 foreach ( $plugins as $plugin ) {
114 if ( Plugin::$instance->wp->is_plugin_active( $plugin ) ) {
115 $succeeded[] = $plugin;
116 continue;
117 }
118
119 Plugin::$instance->wp->activate_plugin( $plugin );
120
121 if ( Plugin::$instance->wp->is_plugin_active( $plugin ) ) {
122 $succeeded[] = $plugin;
123 } else {
124 $failed[] = $plugin;
125 }
126 }
127
128 return [
129 'succeeded' => $succeeded,
130 'failed' => $failed,
131 ];
132 }
133
134 private function clean_slug( $initial_slug ) {
135 return explode( '/', $initial_slug )[0];
136 }
137 }
138