array( 'last_updated' => true, 'icons' => true, 'active_installs' => true, ), ); $api = plugins_api( 'query_plugins', $args ); if ( is_wp_error( $api ) ) { $this->error = $api; return; } $this->items = $api->plugins; } /** * Method render_widget() * * Build Plugins Widget * * @uses \MainWP\Dashboard\MainWP_DB::query() * @uses \MainWP\Dashboard\MainWP_DB::get_sql_website_by_id() * @uses \MainWP\Dashboard\MainWP_DB::fetch_object() * @uses \MainWP\Dashboard\MainWP_DB::free_result() * @uses \MainWP\Dashboard\MainWP_System_Utility::get_current_wpid() */ public static function render_widget() { // phpcs:ignore -- NOSONAR - complex. $current_wpid = MainWP_System_Utility::get_current_wpid(); if ( empty( $current_wpid ) ) { return; } $sql = MainWP_DB::instance()->get_sql_website_by_id( $current_wpid ); $websites = MainWP_DB::instance()->query( $sql ); $allPlugins = array(); if ( $websites ) { $website = MainWP_DB::fetch_object( $websites ); if ( $website && '' !== $website->plugins ) { $plugins = json_decode( $website->plugins, 1 ); if ( is_array( $plugins ) && ! empty( $plugins ) ) { foreach ( $plugins as $plugin ) { if ( isset( $plugin['mainwp'] ) && ( 'T' === $plugin['mainwp'] ) ) { continue; } $allPlugins[] = $plugin; } } } MainWP_DB::free_result( $websites ); } static::render_html_widget( $website, $allPlugins ); } /** * Method render_html_widget(). * * Render HTML plugins widget for current site * * @param object $website Object containing the child site info. * @param array $allPlugins Array containing all detected plugins data. * * @uses \MainWP\Dashboard\MainWP_Utility::get_sub_array_having() * @uses \MainWP\Dashboard\MainWP_Utility::sortmulti() */ public static function render_html_widget( $website, $allPlugins ) { // phpcs:ignore -- NOSONAR - complex. $is_demo = MainWP_Demo_Handle::is_demo_mode(); $actived_plugins = MainWP_Utility::get_sub_array_having( $allPlugins, 'active', 1 ); $actived_plugins = MainWP_Utility::sortmulti( $actived_plugins, 'name', 'asc' ); $inactive_plugins = MainWP_Utility::get_sub_array_having( $allPlugins, 'active', 0 ); $inactive_plugins = MainWP_Utility::sortmulti( $inactive_plugins, 'name', 'asc' ); ?>
esc_html__( 'Plugin has been activated!', 'mainwp' ) ) ) ); } /** * Method deactivate_plugin() * * Fire off action deactivate & display result */ public static function deactivate_plugin() { static::action( 'deactivate' ); die( wp_json_encode( array( 'result' => esc_html__( 'Plugin has been deactivated!', 'mainwp' ) ) ) ); } /** * Method delete_plugin() * * Fire off action delete & display result */ public static function delete_plugin() { static::action( 'delete' ); die( wp_json_encode( array( 'result' => esc_html__( 'Plugin has been permanently deleted!', 'mainwp' ) ) ) ); } /** * Method action() * * Initiate try catch for chosen Action * * @param mixed $action Plugin Action. * * @throws \MainWP_Exception Error message. * * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id() * @uses \MainWP\Dashboard\MainWP_Error_Helper::get_error_message() * @uses \MainWP\Dashboard\MainWP_Exception * @uses \MainWP\Dashboard\MainWP_Connect::fetch_url_authed() * @uses \MainWP\Dashboard\MainWP_System_Utility::can_edit_website() */ public static function action( $action ) { $plugin = isset( $_POST['plugin'] ) ? wp_unslash( $_POST['plugin'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $plugin = urldecode( $plugin ); $websiteId = isset( $_POST['websiteId'] ) ? intval( $_POST['websiteId'] ) : false; // phpcs:ignore WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized if ( empty( $plugin ) || empty( $websiteId ) ) { die( wp_json_encode( array( 'error' => esc_html__( 'Plugin or site ID not found. Please, reload the page and try again.', 'mainwp' ) ) ) ); } $website = MainWP_DB::instance()->get_website_by_id( $websiteId ); if ( ! MainWP_System_Utility::can_edit_website( $website ) ) { die( wp_json_encode( array( 'error' => esc_html__( 'You cannot edit this website.', 'mainwp' ) ) ) ); } if ( MainWP_System_Utility::is_suspended_site( $website ) ) { die( wp_json_encode( array( 'error' => esc_html__( 'Suspended site.', 'mainwp' ), 'errorCode' => 'SUSPENDED_SITE', ) ) ); } try { /** * Action: mainwp_before_plugin_action * * Fires before plugin activate/deactivate/delete actions. * * @since 4.1 */ do_action( 'mainwp_before_plugin_action', $action, $plugin, $website ); $information = MainWP_Connect::fetch_url_authed( $website, 'plugin_action', array( 'action' => $action, 'plugin' => $plugin, ) ); /** * Action: mainwp_after_plugin_action * * Fires after plugin activate/deactivate/delete actions. * * @since 4.1 */ do_action( 'mainwp_after_plugin_action', $information, $action, $plugin, $website ); } catch ( MainWP_Exception $e ) { die( wp_json_encode( array( 'error' => MainWP_Error_Helper::get_error_message( $e, true ) ) ) ); // escaped. } if ( ! isset( $information['status'] ) || ( 'SUCCESS' !== $information['status'] ) ) { die( wp_json_encode( array( 'error' => esc_html__( 'Unexpected error occurred. Please try again.', 'mainwp' ) ) ) ); } } }