File ManagerCurrent Directory: wp-content/mu-plugins/wp-native-php-sessions/incLinux appserver-0d5e4f1e-php-cc8da225320a42ba9b7d66cba40b1f03 6.6.123+ #1 SMP PREEMPT_DYNAMIC Wed Mar 11 09:04:28 UTC 2026 x86_64Edit File: class-admin.php <?php /** * Controller for backend functionality. * * @package WPNPS */ namespace Pantheon_Sessions; /** * Controller for backend functionality. */ class Admin { /** * Copy of the singleton instance. * * @var object */ private static $instance; /** * Name of capability required to perform actions. * * @var string */ private static $capability = 'manage_options'; /** * Gets a copy of the singleton instance. * * @return object */ public static function get_instance() { if ( ! isset( self::$instance ) ) { self::$instance = new Admin; self::$instance->setup_actions(); } return self::$instance; } /** * Load admin actions */ private function setup_actions() { add_action( 'admin_menu', array( $this, 'action_admin_menu' ) ); add_action( 'wp_ajax_pantheon_clear_session', array( $this, 'handle_clear_session' ) ); } /** * Register the admin menu */ public function action_admin_menu() { add_management_page( __( 'Pantheon Sessions', 'wp-native-php-sessions' ), __( 'Sessions', 'wp-native-php-sessions' ), self::$capability, 'pantheon-sessions', array( $this, 'handle_page' ) ); } /** * Render the admin page */ public function handle_page() { global $wpdb; require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; require_once dirname( __FILE__ ) . '/class-list-table.php'; echo '<div class="wrap">'; echo '<div>'; $query_args = array( 'action' => 'pantheon_clear_session', 'nonce' => wp_create_nonce( 'pantheon_clear_session' ), 'session' => 'all', ); if ( $wpdb->get_var( "SELECT COUNT(session_id) FROM $wpdb->pantheon_sessions" ) ) { echo '<a class="button pantheon-clear-all-sessions" style="float:right; margin-top: 9px;" href="' . esc_url( add_query_arg( $query_args, admin_url( 'admin-ajax.php' ) ) ) . '">' . esc_html__( 'Clear All', 'wp-native-php-sessions' ) . '</a>'; } echo '<h2>' . esc_html__( 'Pantheon Sessions', 'wp-native-php-sessions' ) . '</h2>'; if ( isset( $_GET['message'] ) && in_array( $_GET['message'], array( 'delete-all-session', 'delete-session' ), true ) ) { if ( 'delete-all-session' === $_GET['message'] ) { $message = __( 'Cleared all sessions.', 'wp-native-php-sessions' ); } elseif ( 'delete-session' === $_GET['message'] ) { $message = __( 'Session cleared.', 'wp-native-php-sessions' ); } echo '<div id="message" class="updated"><p>' . esc_html( $message ) . '</p></div>'; } echo '</div>'; $wp_list_table = new List_Table; $wp_list_table->prepare_items(); $wp_list_table->display(); echo '</div>'; add_action( 'admin_footer', array( $this, 'action_admin_footer' ) ); } /** * Handle a request to clear all sessions */ public function handle_clear_session() { global $wpdb; if ( ! current_user_can( self::$capability ) || ! wp_verify_nonce( $_GET['nonce'], 'pantheon_clear_session' ) ) { wp_die( esc_html__( "You don't have permission to do this.", 'wp-native-php-sessions' ) ); } if ( ! empty( $_GET['session'] ) && 'all' === $_GET['session'] ) { $wpdb->query( "DELETE FROM $wpdb->pantheon_sessions" ); $message = 'delete-all-session'; } else { $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->pantheon_sessions WHERE session_id=%s", sanitize_text_field( $_GET['session'] ) ) ); $message = 'delete-session'; } wp_safe_redirect( add_query_arg( 'message', $message, wp_get_referer() ) ); exit; } /** * Stuff that needs to go in the footer */ public function action_admin_footer() { ?> <script> (function($){ $(document).ready(function(){ $('.pantheon-clear-all-sessions').on('click', function( e ){ if ( ! confirm( '<?php esc_html_e( 'Are you sure you want to clear all active sessions?', 'wp-native-php-sessions' ); ?>') ) { e.preventDefault(); } }); }); }(jQuery)) </script> <?php } } Upload File Directory Listing NameTypeSizeActions.. (Parent Directory)Dirclass-admin.phpFile3.79 KB Rename | Delete | Editclass-cli-command.phpFile1.90 KB Rename | Delete | Editclass-list-table.phpFile2.53 KB Rename | Delete | Editclass-session-handler.phpFile2.81 KB Rename | Delete | Editclass-session.phpFile6.36 KB Rename | Delete | Edit