PluginProbe ʕ •ᴥ•ʔ
ElementsKit Elementor Addons – Advanced Widgets & Templates Addons for Elementor / 4.0.0
ElementsKit Elementor Addons – Advanced Widgets & Templates Addons for Elementor v4.0.0
4.0.2 4.0.1 4.0.0 3.10.02 3.10.01 3.9.10 3.9.9 3.9.8 3.9.7 3.9.5 3.9.6 3.9.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.3.1 2.3.1.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.4.0 2.5.0 2.5.1 2.5.10 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.5 2.8.6 2.8.7 2.8.8 2.9.0 2.9.1 2.9.2 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.6.0 3.6.1 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.9.0 3.9.1 3.9.2 trunk 1.2.6 1.2.7 1.2.9 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.2 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.0.9.1 2.0.9.2 2.0.9.3
elementskit-lite / libs / framework / classes / plugin-installer.php
elementskit-lite / libs / framework / classes Last commit date
ajax.php 3 weeks ago install-notice.php 3 weeks ago install-tracker.php 3 weeks ago onboard-status.php 3 weeks ago plugin-data-sender.php 1 year ago plugin-installer.php 3 weeks ago plugin-skin.php 1 year ago plugin-status.php 4 years ago utils.php 1 year ago
plugin-installer.php
136 lines
1 <?php
2
3 namespace ElementsKit_Lite\Libs\Framework\Classes;
4
5 defined( 'ABSPATH' ) || exit;
6
7 class Plugin_Installer {
8 /**
9 * Plugin slug recorded as the source of onboarding installations.
10 *
11 * @var string
12 */
13 private $installed_by = 'elementskit-lite';
14
15 private $plugin_file;
16 private $plugin_slug;
17
18 public function __construct( $plugin_file ) {
19 $this->plugin_file = $plugin_file;
20 $this->plugin_slug = dirname( $plugin_file );
21 $this->initialize_filesystem();
22 }
23
24 /**
25 * Install and activate a plugin.
26 */
27 public function install_and_activate() {
28 if ( ! function_exists( 'is_plugin_active' ) ) {
29 require_once ABSPATH . 'wp-admin/includes/plugin.php';
30 }
31
32 if ( is_plugin_active( $this->plugin_file ) ) {
33 return;
34 }
35
36 if ( $this->is_plugin_installed() ) {
37 $ignore_silent_activation = ['popup-builder-block/popup-builder-block.php'];
38 $silent = in_array( $this->plugin_file, $ignore_silent_activation ) ? false : true;
39
40 $activate = activate_plugin( $this->plugin_file, '', false, $silent );
41 if ( ! is_wp_error( $activate ) ) {
42 Install_Tracker::mark( $this->plugin_file, $this->installed_by );
43 return true;
44 }
45 } else {
46 $this->install_plugin();
47 }
48 }
49
50 /**
51 * Install the plugin using WP_Upgrader.
52 */
53 private function install_plugin() {
54 include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
55 include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
56 include_once ABSPATH . 'wp-admin/includes/plugin.php';
57
58 $plugin_info = $this->get_plugin_information( $this->plugin_slug );
59
60 if ( is_wp_error( $plugin_info ) || ! $plugin_info || empty( $plugin_info->download_link ) ) {
61 return false;
62 }
63
64 $skin = new \ElementsKit_Lite\Libs\Framework\Classes\Plugin_Skin();
65
66 $upgrader = new \Plugin_Upgrader( $skin );
67 $upgrader->install( $plugin_info->download_link );
68
69 if ( $this->is_plugin_installed() ) {
70 $ignore_silent_activation = ['popup-builder-block/popup-builder-block.php'];
71 $silent = in_array( $this->plugin_file, $ignore_silent_activation ) ? false : true;
72
73 $activate = activate_plugin( $this->plugin_file, '', false, $silent );
74 if ( ! is_wp_error( $activate ) ) {
75 Install_Tracker::mark( $this->plugin_file, $this->installed_by );
76 return true;
77 }
78 }
79 }
80
81 /**
82 * Get plugin info from WordPress.org.
83 */
84 private function get_plugin_information( $plugin_slug ) {
85 include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
86
87 $api = plugins_api( 'plugin_information', [
88 'slug' => $plugin_slug,
89 'fields' => [
90 'download_link' => true,
91 ],
92 ] );
93
94 return $api;
95 }
96
97 /**
98 * Check if plugin is installed.
99 */
100 private function is_plugin_installed() {
101 global $wp_filesystem;
102 return $wp_filesystem->exists( WP_PLUGIN_DIR . '/' . $this->plugin_file );
103 }
104
105 /**
106 * Init WordPress Filesystem API.
107 */
108 private function initialize_filesystem() {
109 global $wp_filesystem;
110
111 if ( ! function_exists( 'WP_Filesystem' ) ) {
112 require_once ABSPATH . 'wp-admin/includes/file.php';
113 }
114
115 WP_Filesystem();
116 }
117
118 /**
119 * Static method to bulk install/activate multiple plugins.
120 */
121 public static function single_install_and_activate( string $plugin_file ) {
122 $installer = new self( $plugin_file );
123 $installer->install_and_activate();
124 }
125
126 /**
127 * Static method to bulk install/activate multiple plugins.
128 */
129 public static function bulk_install_and_activate( array $plugin_files ) {
130 foreach ( $plugin_files as $plugin_file ) {
131 $installer = new self( $plugin_file );
132 $installer->install_and_activate();
133 }
134 }
135 }
136