PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.7
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.7
6.2.14 6.2.13 6.2.12 6.2.10 6.2.11 6.2.9 6.2.8 6.2.7 6.2.6 6.2.5 6.2.4 6.2.3 6.2.2 3.6.22 3.6.31 3.6.40 3.6.41 3.6.42 3.6.50 3.6.51 3.6.60 3.6.61 3.6.62 3.6.64 3.6.65 All 196 releases
fluentform / app / Http / Controllers / SuggestedPluginsController.php

SuggestedPluginsController.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 6.2.7, at app/Http/Controllers/SuggestedPluginsController.php

173 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentForm\App\Http\Controllers;
4
5
6
7 class SuggestedPluginsController extends Controller
8 {
9 /**
10 * Check the installation and activation status of multiple plugins.
11 */
12 public function checkPluginStatuses()
13 {
14 if (!current_user_can('install_plugins')) {
15 return $this->sendError([
16 'message' => __('You do not have permission to manage plugins.', 'fluentform')
17 ], 403);
18 }
19
20 $plugins = wpFluentForm('request')->get('plugins', []);
21
22 if (empty($plugins) || !is_array($plugins)) {
23 return $this->sendError([
24 'message' => __('No plugins specified.', 'fluentform')
25 ], 400);
26 }
27
28 $statuses = [];
29
30 foreach ($plugins as $pluginSlug) {
31 $statuses[$pluginSlug] = $this->getPluginStatus($pluginSlug);
32 }
33
34 return $this->sendSuccess([
35 'statuses' => $statuses
36 ]);
37 }
38
39 /**
40 * Install a plugin from WordPress.org.
41 */
42 public function installPlugin()
43 {
44 if (!current_user_can('install_plugins')) {
45 return $this->sendError([
46 'message' => __('You do not have permission to install plugins.', 'fluentform')
47 ], 403);
48 }
49
50 $pluginSlug = wpFluentForm('request')->get('plugin_slug');
51
52 if (empty($pluginSlug)) {
53 return $this->sendError([
54 'message' => __('Plugin slug is required.', 'fluentform')
55 ], 400);
56 }
57
58 // Load WordPress plugin installer
59 if (!class_exists('Plugin_Upgrader')) {
60 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
61 }
62 if (!function_exists('request_filesystem_credentials')) {
63 require_once ABSPATH . 'wp-admin/includes/file.php';
64 }
65 if (!function_exists('wp_tempnam')) {
66 require_once ABSPATH . 'wp-admin/includes/misc.php';
67 }
68 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
69
70 $api = plugins_api('plugin_information', [
71 'slug' => sanitize_key($pluginSlug),
72 'fields' => [
73 'sections' => false,
74 ],
75 ]);
76
77 if (is_wp_error($api)) {
78 return $this->sendError([
79 'message' => $api->get_error_message()
80 ], 500);
81 }
82
83 // Install the plugin
84 $upgrader = new \Plugin_Upgrader(new \WP_Ajax_Upgrader_Skin());
85 $result = $upgrader->install($api->download_link);
86
87 if (is_wp_error($result)) {
88 return $this->sendError([
89 'message' => $result->get_error_message()
90 ], 500);
91 }
92
93 if ($result === false) {
94 return $this->sendError([
95 'message' => __('Plugin installation failed.', 'fluentform')
96 ], 500);
97 }
98
99 return $this->sendSuccess([
100 'message' => __('Plugin installed successfully.', 'fluentform')
101 ]);
102 }
103
104 /**
105 * Activate an installed plugin.
106 */
107 public function activatePlugin()
108 {
109 if (!current_user_can('activate_plugins')) {
110 return $this->sendError([
111 'message' => __('You do not have permission to activate plugins.', 'fluentform')
112 ], 403);
113 }
114
115 $pluginSlug = sanitize_text_field(wpFluentForm('request')->get('plugin_slug'));
116
117 if (empty($pluginSlug)) {
118 return $this->sendError([
119 'message' => __('Plugin slug is required.', 'fluentform')
120 ], 400);
121 }
122
123 if (!function_exists('get_plugins')) {
124 require_once ABSPATH . 'wp-admin/includes/plugin.php';
125 }
126
127 if (!array_key_exists($pluginSlug, get_plugins())) {
128 return $this->sendError([
129 'message' => __('Invalid plugin.', 'fluentform')
130 ], 400);
131 }
132
133 $result = activate_plugin($pluginSlug);
134
135 if (is_wp_error($result)) {
136 return $this->sendError([
137 'message' => $result->get_error_message()
138 ], 500);
139 }
140
141 return $this->sendSuccess([
142 'message' => __('Plugin activated successfully.', 'fluentform')
143 ]);
144 }
145
146 /**
147 * Get the status of a plugin (not_installed, inactive, or active).
148 *
149 * @param string $pluginSlug The plugin slug (e.g., 'fluent-crm/fluent-crm.php')
150 * @return string
151 */
152 private function getPluginStatus($pluginSlug)
153 {
154 if (!function_exists('get_plugins')) {
155 require_once ABSPATH . 'wp-admin/includes/plugin.php';
156 }
157
158 $allPlugins = get_plugins();
159
160 // Check if plugin is installed
161 if (!isset($allPlugins[$pluginSlug])) {
162 return 'not_installed';
163 }
164
165 // Check if plugin is active
166 if (is_plugin_active($pluginSlug)) {
167 return 'active';
168 }
169
170 return 'inactive';
171 }
172 }
173