*/ class Adminify_UserActivities { public function __construct() { add_action( 'wp_dashboard_setup', [ $this, 'jltwp_adminify_user_activities' ] ); add_action( 'auth_cookie_expired', [ $this, 'jltwp_adminify_auth_cookie_expired' ], 10, 1 ); add_action( 'admin_init', [ $this, 'jltwp_adminify_first_login_status' ], 1 ); add_action( 'wp_login', [ $this, 'jltwp_adminify_last_user_login' ], 10, 2 ); } /** * Label: User Activities * * @return void */ public function jltwp_adminify_user_activities() { wp_add_dashboard_widget( 'jltwp_adminify_dash_user_activities', esc_html__( 'User Activities - Adminify', 'adminify' ), [ $this, 'jltwp_adminify_user_activities_details' ] ); } /** * Cookie Expired */ public function jltwp_adminify_auth_cookie_expired( $user ) { $user = get_user_by( 'login', $user['username'] ); if ( $user ) { // Update user last logout date/time update_user_meta( $user->ID, '_last_logout', $this->jltwp_adminify_set_date_time() ); // Update user login status to logged out update_user_meta( $user->ID, '_logged_in', 0 ); } } /** * Set Date Time */ public function jltwp_adminify_set_date_time() { // Update user last login date/time $timezone_string = get_option( 'timezone_string' ); if ( ! empty( $timezone_string ) ) { date_default_timezone_set( $timezone_string ); // --> Set default timezone by wp settings } // Get date / time in wp format $date = date_i18n( get_option( 'date_format' ), strtotime( gmdate( 'Y-m-d', time() ) ) ); $time = date_i18n( get_option( 'time_format' ), strtotime( gmdate( 'H:i:s', time() ) ) ); return $date . ' ' . $time; } /** * First login status * * @return void */ public function jltwp_adminify_first_login_status() { // Get current logged in user ID $current_user = wp_get_current_user(); // Check if user login status is false if ( get_user_meta( $current_user->ID, '_logged_in', true ) ) { // update user login status to logged in update_user_meta( $current_user->ID, '_logged_in', 1 ); } // Check if user last login is empty if ( empty( get_user_meta( $current_user->ID, '_last_login', true ) ) ) { // Update user last login date/time update_user_meta( $current_user->ID, '_last_login', $this->jltwp_adminify_set_date_time() ); } } /** * Last Login Status */ public function jltwp_adminify_last_user_login( $user ) { // Get current logged in user ID $current_user = get_user_by( 'login', $user ); update_user_meta( $current_user->ID, '_last_login', $this->jltwp_adminify_set_date_time() ); // Update user login status to logged in update_user_meta( $current_user->ID, '_logged_in', 1 ); } /** * Last Login Status */ public function jltwp_adminify_current_logged_in_user( $current_user ) { // Get current logged in user ID $current_user = wp_get_current_user(); // Update user last logout date/time update_user_meta( $current_user->ID, '_last_logout', $this->jltwp_adminify_set_date_time() ); // Update user login status to logged out update_user_meta( $current_user->ID, '_logged_in', 0 ); } /** * User Activity lists * * @return void */ public function jltwp_adminify_get_logged_in_users() { $user_list = []; $blog_id = '1'; // Check for multisite if ( is_multisite() ) { $blog_id = get_current_blog_id(); $options = get_blog_option( $blog_id, 'wp_admin_theme_settings_options' ); } // Build the user count query $user_count_args = [ 'blog_id' => $blog_id, 'number' => 999999, ]; $user_count_query = new \WP_User_Query( $user_count_args ); $user_count = $user_count_query->get_results(); // Count the number of users found in the query $total_users = isset( $user_count ) ? count( $user_count ) : 1; // Grab the current page number and set to 1 if no page number is set $page = isset( $_GET['p'] ) ? sanitize_text_field( wp_unslash( $_GET['p'] ) ) : 1; // Limit users to show per page $users_per_page = 5; // Calculate the total number of pages $total_pages = 1; $offset = $users_per_page * ( $page - 1 ); $total_pages = ceil( $total_users / $users_per_page ); // Build the user query $args = [ 'blog_id' => $blog_id, 'orderby' => 'login', 'order' => 'ASC', 'number' => $users_per_page, 'offset' => $offset, ]; // Create the WP_User_Query object $wp_user_query = new \WP_User_Query( $args ); // Get the user results $users = $wp_user_query->get_results(); foreach ( $users as $current_user ) { // check last login date/time is false $getLastLogin = get_user_meta( $current_user->ID, '_last_login', true ); $last_user_login = $getLastLogin; if ( empty( $getLastLogin ) ) { $last_user_login = esc_html__( 'N/A', 'adminify' ); } // check last logout date/time is false $getLastLogout = get_user_meta( $current_user->ID, '_last_logout', true ); $last_user_logout = $getLastLogout; if ( empty( $getLastLogout ) ) { $last_user_logout = esc_html__( 'N/A', 'adminify' ); } // check if user login status is false $is_logged_in = '0'; if ( get_user_meta( $current_user->ID, '_logged_in', true ) ) { // check user is logged in $get_user_logged_in_status = get_user_meta( $current_user->ID ); $is_logged_in = $get_user_logged_in_status['_logged_in'][0]; } // get logged in status if ( $is_logged_in != '1' ) { $login_status = '' . esc_html__( 'logged out', 'adminify' ) . ''; if ( is_rtl() ) { $login_status = '' . esc_html__( 'logged out', 'adminify' ) . '' . esc_html__( 'is', 'adminify' ); } } else { $login_status = '' . esc_html__( 'logged in', 'adminify' ) . ''; if ( is_rtl() ) { $login_status = '' . esc_html__( 'logged in', 'adminify' ) . '' . esc_html__( 'is', 'adminify' ); } } // Logged In/Logout Status Symbol if ( $is_logged_in ) { $status_class = 'logged-in'; } else { $status_class = 'logged-out'; } // show logged in status if ( is_rtl() ) { $user_list['users'][] = '