PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.2.2
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.2.2
6.2.3 6.2.2 6.2.1 6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 All 156 releases
← All changes | pages/page-mainwp-plugins-handler.php +315 -304 5.0.2 → 6.2.2 View file →
@@ -6,355 +6,366 @@
6 6 */
7 7
8 8 namespace MainWP\Dashboard;
9 9
10 +// Exit if accessed directly.
11 +if ( ! defined( 'ABSPATH' ) ) {
12 + exit;
13 +}
14 +
10 15 /**
11 16 * Class MainWP MainWP_Plugins_Handler
12 17 *
13 18 * @uses MainWP_Install_Bulk()
14 19 */
15 -class MainWP_Plugins_Handler {
16 - // phpcs:disable Generic.Metrics.CyclomaticComplexity -- This is the only way to achieve desired results, pull request solutions appreciated.
20 +class MainWP_Plugins_Handler { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR.
21 + // phpcs:disable Generic.Metrics.CyclomaticComplexity -- This is the only way to achieve desired results, pull request solutions appreciated.
17 22
18 - /**
19 - * Get Class Name.
20 - *
21 - * @return string __CLASS__
22 - */
23 - public static function get_class_name() {
24 - return __CLASS__;
25 - }
23 + /**
24 + * Get Class Name.
25 + *
26 + * @return string __CLASS__
27 + */
28 + public static function get_class_name() {
29 + return __CLASS__;
30 + }
26 31
27 - /**
28 - * Plugins Search Handler.
29 - *
30 - * @param mixed $data Search Data.
31 - * @param object $website Child Sites.
32 - * @param mixed $output Output.
33 - *
34 - * @return mixed error|array.
35 - *
36 - * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_error_message()
37 - * @uses \MainWP\Dashboard\MainWP_System_Utility::get_child_response()
38 - * @uses \MainWP\Dashboard\MainWP_Exception
39 - * @uses \MainWP\Dashboard\MainWP_System_Utility::get_child_response()
40 - */
41 - public static function plugins_search_handler( $data, $website, &$output ) {
42 - if ( MainWP_Demo_Handle::get_instance()->is_demo_website( $website ) ) {
43 - return;
44 - }
45 - if ( 0 < preg_match( '/<mainwp>(.*)<\/mainwp>/', $data, $results ) ) {
46 - $result = $results[1];
47 - $result_data = MainWP_System_Utility::get_child_response( base64_decode( $result ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions -- base64_encode used for http encoding compatible.
48 - unset( $results );
49 - if ( isset( $result_data['error'] ) ) {
50 - $output->errors[ $website->id ] = MainWP_Error_Helper::get_error_message( new MainWP_Exception( $result_data['error'], $website->url ) ); //phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
51 - return;
52 - }
32 + /**
33 + * Plugins Search Handler.
34 + *
35 + * @param mixed $data Search Data.
36 + * @param object $website Child Sites.
37 + * @param mixed $output Output.
38 + *
39 + * @return mixed error|array.
40 + *
41 + * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_error_message()
42 + * @uses \MainWP\Dashboard\MainWP_System_Utility::get_child_response()
43 + * @uses \MainWP\Dashboard\MainWP_Exception
44 + * @uses \MainWP\Dashboard\MainWP_System_Utility::get_child_response()
45 + */
46 + public static function plugins_search_handler( $data, $website, &$output ) { // phpcs:ignore -- NOSONAR - complex.
47 + if ( MainWP_Demo_Handle::get_instance()->is_demo_website( $website ) ) {
48 + return;
49 + }
50 + if ( 0 < preg_match( '/<mainwp>(.*)<\/mainwp>/', $data, $results ) ) {
51 + $result = $results[1];
52 + $result_data = MainWP_System_Utility::get_child_response( base64_decode( $result ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions -- base64_encode used for http encoding compatible.
53 + unset( $results );
54 + if ( isset( $result_data['error'] ) ) {
55 + $output->errors[ $website->id ] = MainWP_Error_Helper::get_error_message( new MainWP_Exception( $result_data['error'], $website->url ) ); //phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
56 + return;
57 + }
53 58
54 - $plugins = isset( $result_data['data'] ) && is_array( $result_data['data'] ) ? $result_data['data'] : array();
59 + $plugins = isset( $result_data['data'] ) && is_array( $result_data['data'] ) ? $result_data['data'] : array();
55 60
56 - $not_found = true;
61 + $not_found = true;
57 62
58 - foreach ( $plugins as $plugin ) {
59 - if ( ! isset( $plugin['name'] ) ) {
60 - continue;
61 - }
62 - $plugin['websiteid'] = $website->id;
63 - $plugin['websiteurl'] = $website->url;
64 - $plugin['websitename'] = $website->name;
63 + foreach ( $plugins as $plugin ) {
64 + if ( ! isset( $plugin['name'] ) ) {
65 + continue;
66 + }
67 + $plugin['websiteid'] = $website->id;
68 + $plugin['websiteurl'] = $website->url;
69 + $plugin['websitename'] = $website->name;
70 + $plugin['site_info'] = $website->site_info;
65 71
66 - $output->plugins[] = $plugin;
67 - $not_found = false;
68 - }
72 + $output->plugins[] = $plugin;
73 + $not_found = false;
74 + }
69 75
70 - if ( 'not_installed' === $output->status ) {
71 - if ( $not_found ) {
72 - $installed = isset( $result_data['installed_plugins'] ) && is_array( $result_data['installed_plugins'] ) ? $result_data['installed_plugins'] : array();
73 - foreach ( $installed as $plugin ) {
74 - if ( ! isset( $plugin['name'] ) ) {
75 - continue;
76 - }
77 - $plugin['websiteid'] = $website->id;
78 - $plugin['websiteurl'] = $website->url;
79 - $plugin['websitename'] = $website->name;
80 - $output->plugins_installed[] = $plugin;
81 - }
82 - }
83 - }
76 + if ( 'not_installed' === $output->status && $not_found ) {
77 + $installed = isset( $result_data['installed_plugins'] ) && is_array( $result_data['installed_plugins'] ) ? $result_data['installed_plugins'] : array();
78 + foreach ( $installed as $plugin ) {
79 + if ( ! isset( $plugin['name'] ) ) {
80 + continue;
81 + }
82 + $plugin['websiteid'] = $website->id;
83 + $plugin['websiteurl'] = $website->url;
84 + $plugin['websitename'] = $website->name;
85 + $plugin['site_info'] = $website->site_info;
86 + $output->plugins_installed[] = $plugin;
87 + }
88 + }
84 89
85 - unset( $plugins );
86 - } else {
87 - $output->errors[ $website->id ] = MainWP_Error_Helper::get_error_message( new MainWP_Exception( 'NOMAINWP', $website->url ) );
88 - }
89 - }
90 + if ( ! empty( $website->rollback_updates_data ) ) {
91 + $output->roll_items[ $website->id ] = MainWP_Updates_Helper::get_roll_update_plugintheme_items( 'plugin', $website->rollback_updates_data );
92 + }
90 93
91 - /** Activate Plugin. */
92 - public static function activate_plugins() {
93 - self::action( 'activate' );
94 - }
94 + unset( $plugins );
95 + } else {
96 + $output->errors[ $website->id ] = MainWP_Error_Helper::get_error_message( new MainWP_Exception( 'NOMAINWP', $website->url ) );
97 + }
98 + }
95 99
96 - /** Deactivate Plugin */
97 - public static function deactivate_plugins() {
98 - self::action( 'deactivate' );
99 - }
100 + /** Activate Plugin. */
101 + public static function activate_plugins() {
102 + static::action( 'activate' );
103 + }
100 104
101 - /** Delete Plugin. */
102 - public static function delete_plugins() {
103 - self::action( 'delete' );
104 - }
105 + /** Deactivate Plugin */
106 + public static function deactivate_plugins() {
107 + static::action( 'deactivate' );
108 + }
105 109
106 - /**
107 - * Ignore Plugin.
108 - *
109 - * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
110 - * @uses \MainWP\Dashboard\MainWP_DB::update_website_values()
111 - * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
112 - */
113 - public static function ignore_updates() {
114 - // phpcs:disable WordPress.Security.NonceVerification
115 - $websiteId = isset( $_POST['websiteId'] ) ? intval( $_POST['websiteId'] ) : false;
110 + /** Delete Plugin. */
111 + public static function delete_plugins() {
112 + static::action( 'delete' );
113 + }
116 114
117 - if ( empty( $websiteId ) ) {
118 - die( wp_json_encode( array( 'error' => esc_html__( 'Site ID not found. Please reload the page and try again.', 'mainwp' ) ) ) );
119 - }
115 + /**
116 + * Ignore Plugin.
117 + *
118 + * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
119 + * @uses \MainWP\Dashboard\MainWP_DB::update_website_values()
120 + * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
121 + */
122 + public static function ignore_updates() {
123 + // phpcs:disable WordPress.Security.NonceVerification
124 + $websiteId = isset( $_POST['websiteId'] ) ? intval( $_POST['websiteId'] ) : false;
120 125
121 - $website = MainWP_DB::instance()->get_website_by_id( $websiteId );
126 + if ( empty( $websiteId ) ) {
127 + die( wp_json_encode( array( 'error' => esc_html__( 'Site ID not found. Please reload the page and try again.', 'mainwp' ) ) ) );
128 + }
122 129
123 - if ( ! MainWP_System_Utility::can_edit_website( $website ) ) {
124 - die( wp_json_encode( array( 'error' => esc_html__( 'You are not allowed to edit this website.', 'mainwp' ) ) ) );
125 - }
130 + $website = MainWP_DB::instance()->get_website_by_id( $websiteId );
126 131
127 - $plugins = isset( $_POST['plugins'] ) ? wp_unslash( $_POST['plugins'] ) : false; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
128 - $names = isset( $_POST['names'] ) ? wp_unslash( $_POST['names'] ) : array(); //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
129 - // phpcs:enable
132 + if ( ! MainWP_System_Utility::can_edit_website( $website ) ) {
133 + die( wp_json_encode( array( 'error' => esc_html__( 'You are not allowed to edit this website.', 'mainwp' ) ) ) );
134 + }
130 135
131 - $decodedIgnoredPlugins = json_decode( $website->ignored_plugins, true );
136 + $plugins = isset( $_POST['plugins'] ) ? wp_unslash( $_POST['plugins'] ) : false; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
137 + $names = isset( $_POST['names'] ) ? wp_unslash( $_POST['names'] ) : array(); //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
138 + // phpcs:enable
132 139
133 - if ( ! is_array( $decodedIgnoredPlugins ) ) {
134 - $decodedIgnoredPlugins = array();
135 - }
140 + $decodedIgnoredPlugins = json_decode( $website->ignored_plugins, true );
136 141
137 - if ( is_array( $plugins ) ) {
138 - $_count = count( $plugins );
139 - for ( $i = 0; $i < $_count; $i++ ) {
140 - $slug = $plugins[ $i ];
141 - $name = $names[ $i ];
142 - if ( ! isset( $decodedIgnoredPlugins[ $slug ] ) ) {
143 - $decodedIgnoredPlugins[ $slug ] = urldecode( $name );
144 - }
145 - }
142 + if ( ! is_array( $decodedIgnoredPlugins ) ) {
143 + $decodedIgnoredPlugins = array();
144 + }
146 145
147 - /**
148 - * Action: mainwp_before_plugin_ignore
149 - *
150 - * Fires before plugin ignore.
151 - *
152 - * @since 4.1
153 - */
154 - do_action( 'mainwp_before_plugin_ignore', $decodedIgnoredPlugins, $website );
146 + if ( is_array( $plugins ) ) {
147 + $_count = count( $plugins );
148 + for ( $i = 0; $i < $_count; $i++ ) {
149 + $slug = $plugins[ $i ];
150 + $name = $names[ $i ];
151 + if ( ! isset( $decodedIgnoredPlugins[ $slug ] ) ) {
152 + $decodedIgnoredPlugins[ $slug ] = array( 'name' => urldecode( $name ) );
153 + }
154 + }
155 155
156 - MainWP_DB::instance()->update_website_values( $website->id, array( 'ignored_plugins' => wp_json_encode( $decodedIgnoredPlugins ) ) );
156 + /**
157 + * Action: mainwp_before_plugin_ignore
158 + *
159 + * Fires before plugin ignore.
160 + *
161 + * @since 4.1
162 + */
163 + do_action( 'mainwp_before_plugin_ignore', $decodedIgnoredPlugins, $website );
157 164
158 - /**
159 - * Action: mainwp_after_plugin_ignore
160 - *
161 - * Fires after plugin ignore.
162 - *
163 - * @since 4.1
164 - */
165 - do_action( 'mainwp_after_plugin_ignore', $decodedIgnoredPlugins, $website );
165 + MainWP_DB::instance()->update_website_values( $website->id, array( 'ignored_plugins' => wp_json_encode( $decodedIgnoredPlugins ) ) );
166 166
167 - }
167 + /**
168 + * Action: mainwp_after_plugin_ignore
169 + *
170 + * Fires after plugin ignore.
171 + *
172 + * @since 4.1
173 + */
174 + do_action( 'mainwp_after_plugin_ignore', $decodedIgnoredPlugins, $website );
168 175
169 - die( wp_json_encode( array( 'result' => true ) ) );
170 - }
176 + }
171 177
172 - /**
173 - * Plugin Action handler.
174 - *
175 - * @param mixed $pAction activate|deactivate|delete.
176 - *
177 - * @return mixed error|true
178 - *
179 - * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
180 - * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_error_message()
181 - * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
182 - * @uses \MainWP\Dashboard\MainWP_Exception
183 - * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
184 - */
185 - public static function action( $pAction ) {
186 - // phpcs:disable WordPress.Security.NonceVerification
187 - $websiteId = isset( $_POST['websiteId'] ) ? intval( $_POST['websiteId'] ) : false;
178 + die( wp_json_encode( array( 'result' => true ) ) );
179 + }
188 180
189 - if ( empty( $websiteId ) ) {
190 - die( wp_json_encode( array( 'error' => esc_html__( 'Site ID not found. Please reload the page and try again.', 'mainwp' ) ) ) );
191 - }
181 + /**
182 + * Plugin Action handler.
183 + *
184 + * @param mixed $pAction activate|deactivate|delete.
185 + *
186 + * @return mixed error|true
187 + *
188 + * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed()
189 + * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_error_message()
190 + * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id()
191 + * @uses \MainWP\Dashboard\MainWP_Exception
192 + * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website()
193 + */
194 + public static function action( $pAction ) {
195 + // phpcs:disable WordPress.Security.NonceVerification
196 + $websiteId = isset( $_POST['websiteId'] ) ? intval( $_POST['websiteId'] ) : false;
192 197
193 - $website = MainWP_DB::instance()->get_website_by_id( $websiteId );
198 + if ( empty( $websiteId ) ) {
199 + die( wp_json_encode( array( 'error' => esc_html__( 'Site ID not found. Please reload the page and try again.', 'mainwp' ) ) ) );
200 + }
194 201
195 - if ( ! MainWP_System_Utility::can_edit_website( $website ) ) {
196 - die( wp_json_encode( array( 'error' => esc_html__( 'You are not allowed to edit this website.', 'mainwp' ) ) ) );
197 - }
202 + $website = MainWP_DB::instance()->get_website_by_id( $websiteId );
198 203
199 - if ( MainWP_System_Utility::is_suspended_site( $website ) ) {
200 - die(
201 - wp_json_encode(
202 - array(
203 - 'error' => esc_html__( 'Suspended site.', 'mainwp' ),
204 - 'errorCode' => 'SUSPENDED_SITE',
205 - )
206 - )
207 - );
208 - }
204 + if ( ! MainWP_System_Utility::can_edit_website( $website ) ) {
205 + die( wp_json_encode( array( 'error' => esc_html__( 'You are not allowed to edit this website.', 'mainwp' ) ) ) );
206 + }
209 207
210 - try {
211 - $plugins = isset( $_POST['plugins'] ) ? wp_unslash( $_POST['plugins'] ) : array(); //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
212 - $plugin = implode( '||', $plugins );
213 - $plugin = urldecode( $plugin );
208 + if ( MainWP_System_Utility::is_suspended_site( $website ) ) {
209 + die(
210 + wp_json_encode(
211 + array(
212 + 'error' => esc_html__( 'Suspended site.', 'mainwp' ),
213 + 'errorCode' => 'SUSPENDED_SITE',
214 + )
215 + )
216 + );
217 + }
214 218
215 - /**
216 - * Action: mainwp_before_plugin_action
217 - *
218 - * Fires before plugin activate/deactivate/delete actions.
219 - *
220 - * @since 4.1
221 - */
222 - do_action( 'mainwp_before_plugin_action', $pAction, $plugin, $website );
219 + try {
220 + $plugins = isset( $_POST['plugins'] ) ? wp_unslash( $_POST['plugins'] ) : array(); //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
221 + $plugin = implode( '||', $plugins );
222 + $plugin = urldecode( $plugin );
223 223
224 - $information = MainWP_Connect::fetch_url_authed(
225 - $website,
226 - 'plugin_action',
227 - array(
228 - 'action' => $pAction,
229 - 'plugin' => $plugin,
230 - )
231 - );
224 + /**
225 + * Action: mainwp_before_plugin_action
226 + *
227 + * Fires before plugin activate/deactivate/delete actions.
228 + *
229 + * @since 4.1
230 + */
231 + do_action( 'mainwp_before_plugin_action', $pAction, $plugin, $website );
232 232
233 - /**
234 - * Action: mainwp_after_plugin_action
235 - *
236 - * Fires after plugin activate/deactivate/delete actions.
237 - *
238 - * @since 4.1
239 - */
240 - do_action( 'mainwp_after_plugin_action', $information, $pAction, $plugin, $website );
233 + $information = MainWP_Connect::fetch_url_authed(
234 + $website,
235 + 'plugin_action',
236 + array(
237 + 'action' => $pAction,
238 + 'plugin' => $plugin,
239 + )
240 + );
241 241
242 - } catch ( MainWP_Exception $e ) {
243 - die( wp_json_encode( array( 'error' => MainWP_Error_Helper::get_error_message( $e ) ) ) );
244 - }
242 + /**
243 + * Action: mainwp_after_plugin_action
244 + *
245 + * Fires after plugin activate/deactivate/delete actions.
246 + *
247 + * @since 4.1
248 + */
249 + do_action( 'mainwp_after_plugin_action', $information, $pAction, $plugin, $website );
245 250
246 - // phpcs:enable
251 + } catch ( MainWP_Exception $e ) {
252 + die( wp_json_encode( array( 'error' => MainWP_Error_Helper::get_error_message( $e ) ) ) );
253 + }
247 254
248 - if ( ! isset( $information['status'] ) || ( 'SUCCESS' !== $information['status'] ) ) {
249 - die( wp_json_encode( array( 'error' => esc_html__( 'Unexpected error. Please try again.', 'mainwp' ) ) ) );
250 - }
255 + // phpcs:enable
251 256
252 - die( wp_json_encode( array( 'result' => true ) ) );
253 - }
257 + if ( ! isset( $information['status'] ) || ( 'SUCCESS' !== $information['status'] ) ) {
258 + die( wp_json_encode( array( 'error' => esc_html__( 'Unexpected error. Please try again.', 'mainwp' ) ) ) );
259 + }
254 260
255 - /**
256 - * Trust Plugin $_POST.
257 - *
258 - * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
259 - * @uses \MainWP\Dashboard\MainWP_DB_Common::update_user_extension()
260 - */
261 - public static function trust_post() {
262 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
263 - $trustedPlugins = json_decode( $userExtension->trusted_plugins, true );
264 - if ( ! is_array( $trustedPlugins ) ) {
265 - $trustedPlugins = array();
266 - }
267 - // phpcs:disable WordPress.Security.NonceVerification
268 - $action = isset( $_POST['do'] ) ? sanitize_text_field( wp_unslash( $_POST['do'] ) ) : '';
269 - $slugs = isset( $_POST['slugs'] ) && is_array( $_POST['slugs'] ) ? wp_unslash( $_POST['slugs'] ) : ''; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
270 - // phpcs:enable
271 - if ( ! is_array( $slugs ) ) {
272 - return;
273 - }
274 - if ( 'trust' !== $action && 'untrust' !== $action ) {
275 - return;
276 - }
277 - if ( 'trust' === $action ) {
278 - foreach ( $slugs as $slug ) {
279 - $idx = array_search( urldecode( $slug ), $trustedPlugins );
280 - if ( false === $idx ) {
281 - $trustedPlugins[] = urldecode( $slug );
282 - }
283 - }
284 - } elseif ( 'untrust' === $action ) {
285 - foreach ( $slugs as $slug ) {
286 - if ( in_array( urldecode( $slug ), $trustedPlugins ) ) {
287 - $trustedPlugins = array_diff( $trustedPlugins, array( urldecode( $slug ) ) );
288 - }
289 - }
290 - }
291 - $userExtension->trusted_plugins = wp_json_encode( $trustedPlugins );
292 - MainWP_DB_Common::instance()->update_user_extension( $userExtension );
293 - }
261 + die( wp_json_encode( array( 'result' => true ) ) );
262 + }
294 263
295 - /**
296 - * Update Trusted Plugin list.
297 - *
298 - * @param mixed $slug Plugin Slug.
299 - *
300 - * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
301 - * @uses \MainWP\Dashboard\MainWP_DB_Common::update_user_extension()
302 - */
303 - public static function trust_plugin( $slug ) {
304 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
305 - $trustedPlugins = json_decode( $userExtension->trusted_plugins, true );
306 - if ( ! is_array( $trustedPlugins ) ) {
307 - $trustedPlugins = array();
308 - }
309 - $idx = array_search( urldecode( $slug ), $trustedPlugins );
310 - if ( false === $idx ) {
311 - $trustedPlugins[] = urldecode( $slug );
312 - }
313 - $userExtension->trusted_plugins = wp_json_encode( $trustedPlugins );
314 - MainWP_DB_Common::instance()->update_user_extension( $userExtension );
315 - }
264 + /**
265 + * Trust Plugin $_POST.
266 + *
267 + * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
268 + * @uses \MainWP\Dashboard\MainWP_DB_Common::update_user_extension()
269 + */
270 + public static function trust_post() { // phpcs:ignore -- NOSONAR - complex.
271 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
272 + $trustedPlugins = json_decode( $userExtension->trusted_plugins, true );
273 + if ( ! is_array( $trustedPlugins ) ) {
274 + $trustedPlugins = array();
275 + }
276 + // phpcs:disable WordPress.Security.NonceVerification
277 + $action = isset( $_POST['do'] ) ? sanitize_text_field( wp_unslash( $_POST['do'] ) ) : '';
278 + $slugs = isset( $_POST['slugs'] ) && is_array( $_POST['slugs'] ) ? wp_unslash( $_POST['slugs'] ) : ''; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
279 + // phpcs:enable
280 + if ( ! is_array( $slugs ) ) {
281 + return;
282 + }
283 + if ( 'trust' !== $action && 'untrust' !== $action ) {
284 + return;
285 + }
286 + if ( 'trust' === $action ) {
287 + foreach ( $slugs as $slug ) {
288 + $idx = array_search( urldecode( $slug ), $trustedPlugins );
289 + if ( false === $idx ) {
290 + $trustedPlugins[] = urldecode( $slug );
291 + }
292 + }
293 + } elseif ( 'untrust' === $action ) {
294 + foreach ( $slugs as $slug ) {
295 + if ( in_array( urldecode( $slug ), $trustedPlugins ) ) {
296 + $trustedPlugins = array_diff( $trustedPlugins, array( urldecode( $slug ) ) );
297 + }
298 + }
299 + }
300 + $userExtension->trusted_plugins = wp_json_encode( $trustedPlugins );
301 + MainWP_DB_Common::instance()->update_user_extension( $userExtension );
302 + }
316 303
317 - /**
318 - * Check if automatic daily updates is on and
319 - * the plugin is on the trusted list.
320 - *
321 - * @param mixed $slug Plugin Slug.
322 - *
323 - * @return boolean true|false.
324 - *
325 - * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
326 - * @uses \MainWP\Dashboard\MainWP_DB_Common::update_user_extension()
327 - */
328 - public static function check_auto_update_plugin( $slug ) {
329 - if ( 1 !== (int) get_option( 'mainwp_pluginAutomaticDailyUpdate' ) ) {
330 - return false;
331 - }
332 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
333 - $trustedPlugins = json_decode( $userExtension->trusted_plugins, true );
334 - if ( is_array( $trustedPlugins ) && in_array( $slug, $trustedPlugins ) ) {
335 - return true;
336 - }
337 - return false;
338 - }
304 + /**
305 + * Update Trusted Plugin list.
306 + *
307 + * @param mixed $slug Plugin Slug.
308 + *
309 + * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
310 + * @uses \MainWP\Dashboard\MainWP_DB_Common::update_user_extension()
311 + */
312 + public static function trust_plugin( $slug ) {
313 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
314 + $trustedPlugins = json_decode( $userExtension->trusted_plugins, true );
315 + if ( ! is_array( $trustedPlugins ) ) {
316 + $trustedPlugins = array();
317 + }
318 + $idx = array_search( urldecode( $slug ), $trustedPlugins );
319 + if ( false === $idx ) {
320 + $trustedPlugins[] = urldecode( $slug );
321 + }
322 + $userExtension->trusted_plugins = wp_json_encode( $trustedPlugins );
323 + MainWP_DB_Common::instance()->update_user_extension( $userExtension );
324 + }
339 325
340 - /**
341 - * Save the trusted plugin note.
342 - *
343 - * @uses \MainWP\Dashboard\MainWP_Utility::esc_content()
344 - */
345 - public static function save_trusted_plugin_note() {
346 - // phpcs:disable WordPress.Security.NonceVerification
347 - $slug = isset( $_POST['slug'] ) ? urldecode( wp_unslash( $_POST['slug'] ) ) : ''; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
348 - $note = isset( $_POST['note'] ) ? wp_unslash( $_POST['note'] ) : ''; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
349 - // phpcs:enable
350 - $esc_note = MainWP_Utility::esc_content( $note );
351 - $userExtension = MainWP_DB_Common::instance()->get_user_extension();
352 - $trustedPluginsNotes = json_decode( $userExtension->trusted_plugins_notes, true );
353 - if ( ! is_array( $trustedPluginsNotes ) ) {
354 - $trustedPluginsNotes = array();
355 - }
356 - $trustedPluginsNotes[ $slug ] = $esc_note;
357 - $userExtension->trusted_plugins_notes = wp_json_encode( $trustedPluginsNotes );
358 - MainWP_DB_Common::instance()->update_user_extension( $userExtension );
359 - }
326 + /**
327 + * Check if automatic daily updates is on and
328 + * the plugin is on the trusted list.
329 + *
330 + * @param mixed $slug Plugin Slug.
331 + *
332 + * @return boolean true|false.
333 + *
334 + * @uses \MainWP\Dashboard\MainWP_DB_Common::get_user_extension()
335 + * @uses \MainWP\Dashboard\MainWP_DB_Common::update_user_extension()
336 + */
337 + public static function check_auto_update_plugin( $slug ) {
338 + if ( 1 !== (int) get_option( 'mainwp_pluginAutomaticDailyUpdate' ) ) {
339 + return false;
340 + }
341 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
342 + $trustedPlugins = json_decode( $userExtension->trusted_plugins, true );
343 + if ( is_array( $trustedPlugins ) && in_array( $slug, $trustedPlugins ) ) {
344 + return true;
345 + }
346 + return false;
347 + }
348 +
349 + /**
350 + *
351 + * Save the trusted plugin note.
352 + *
353 + * @return string Escaped note.
354 + */
355 + public static function save_trusted_plugin_note() {
356 + // phpcs:disable WordPress.Security.NonceVerification
357 + $slug = isset( $_POST['slug'] ) ? urldecode( wp_unslash( $_POST['slug'] ) ) : ''; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
358 + $note = isset( $_POST['note'] ) ? wp_unslash( $_POST['note'] ) : ''; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
359 + // phpcs:enable
360 + $esc_note = MainWP_Utility::esc_content( $note );
361 + $userExtension = MainWP_DB_Common::instance()->get_user_extension();
362 + $trustedPluginsNotes = json_decode( $userExtension->trusted_plugins_notes, true );
363 + if ( ! is_array( $trustedPluginsNotes ) ) {
364 + $trustedPluginsNotes = array();
365 + }
366 + $trustedPluginsNotes[ $slug ] = $esc_note;
367 + $userExtension->trusted_plugins_notes = wp_json_encode( $trustedPluginsNotes );
368 + MainWP_DB_Common::instance()->update_user_extension( $userExtension );
369 + return $esc_note;
370 + }
360 371 }