= 3 ) { update_option( self::$banner_hidden_option, true ); delete_option( self::$remind_option ); wp_send_json_success(); return; } $days = ( 1 === $count ) ? 7 : 30; update_option( self::$remind_option, array( 'remind_count' => $count, 'snooze_until' => time() + ( $days * DAY_IN_SECONDS ), ) ); wp_send_json_success(); } /** * Handle plugin installation (download with optional activate). * * @since 2.7.3 */ public static function install_plugin() { try { check_ajax_referer( self::$plugin_prefix, '_wpnonce' ); $response = array( 'status' => false, 'message' => esc_html__( 'Something went wrong. Please try again.', 'users-customers-import-export-for-wp-woocommerce' ), ); if ( ! current_user_can( 'install_plugins' ) ) { $response['message'] = esc_html__( 'You do not have sufficient permissions to install plugins.', 'users-customers-import-export-for-wp-woocommerce' ); wp_send_json( $response ); return; } require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $plugin_slug = 'accessibility-widget'; $api = plugins_api( 'plugin_information', array( 'slug' => $plugin_slug ) ); if ( is_wp_error( $api ) ) { $response['message'] = $api->get_error_message(); wp_send_json( $response ); return; } if ( ! isset( $api->download_link ) ) { $response['message'] = esc_html__( 'Plugin download link not found.', 'users-customers-import-export-for-wp-woocommerce' ); wp_send_json( $response ); return; } $upgrader = new Plugin_Upgrader( new WP_Ajax_Upgrader_Skin() ); $result = $upgrader->install( $api->download_link ); if ( is_wp_error( $result ) ) { $response['message'] = $result->get_error_message(); wp_send_json( $response ); return; } if ( $result ) { $activate_response = self::activate_plugin(); if ( $activate_response['status'] ) { $response['status'] = true; } else { $response['message'] = $activate_response['msg']; } update_option( self::$banner_hidden_option, true ); delete_option( self::$remind_option ); } wp_send_json( $response ); } catch ( Exception $e ) { wp_send_json( array( 'status' => false, 'message' => $e->getMessage(), ) ); } } /** * Handle plugin activation. * * @since 2.7.3 * @return array{status: bool, msg: string} */ public static function activate_plugin() { $result = array( 'status' => false, 'msg' => '', ); if ( ! current_user_can( 'activate_plugins' ) ) { $result['msg'] = esc_html__( 'You do not have sufficient permissions to activate plugins.', 'users-customers-import-export-for-wp-woocommerce' ); return $result; } if ( file_exists( WP_PLUGIN_DIR . '/' . self::$plugin_file ) ) { $activation_result = activate_plugin( self::$plugin_file ); if ( is_wp_error( $activation_result ) ) { $result['status'] = false; $result['msg'] = esc_html__( 'Activation failed. Please try again.', 'users-customers-import-export-for-wp-woocommerce' ); } else { $result['status'] = true; } } return $result; } /** * Display the accessibility banner. * * @since 2.7.3 */ public function show_banner_notice() { $plugin_modal_link = admin_url( 'plugin-install.php?tab=plugin-information&plugin=accessibility-widget&TB_iframe=true' ); ?>