JezK
Edit File: class-plugin-user-switching-logger.php
<?php namespace Simple_History\Loggers; use Simple_History\Log_Initiators; /** * Logs user switching from the great User Switching plugin * Plugin URL: https://wordpress.org/plugins/user-switching/ * * @since 2.2 */ class Plugin_User_Switching_Logger extends Logger { /** @var string Logger slug */ public $slug = 'PluginUserSwitchingLogger'; /** * Get array with information about this logger * * @return array */ public function get_info() { return array( 'name' => _x( 'Plugin: User Switching Logger', 'PluginUserSwitchingLogger', 'simple-history' ), 'description' => _x( 'Logs user switches', 'PluginUserSwitchingLogger', 'simple-history' ), 'name_via' => _x( 'Using plugin User Switching', 'PluginUserSwitchingLogger', 'simple-history' ), 'capability' => 'edit_users', 'messages' => array( 'switched_to_user' => _x( 'Switched to user "{user_login_to}" from user "{user_login_from}"', 'PluginUserSwitchingLogger', 'simple-history' ), 'switched_back_user' => _x( 'Switched back to user "{user_login_to}" from user "{user_login_from}"', 'PluginUserSwitchingLogger', 'simple-history' ), 'switched_back_themself' => _x( 'Switched back to user "{user_login_to}"', 'PluginUserSwitchingLogger', 'simple-history' ), 'switched_off_user' => _x( 'Switched off user "{user_login}"', 'PluginUserSwitchingLogger', 'simple-history' ), ), 'labels' => array( 'search' => array( 'label' => _x( 'User Switching', 'User Switching logger: search', 'simple-history' ), 'label_all' => _x( 'All user switches', 'User Switching logger: search', 'simple-history' ), 'options' => array( _x( 'User switches', 'User Switching logger: search', 'simple-history' ) => array( 'switched_to_user', 'switched_back_user', 'switched_back_themself', 'switched_off_user', ), ), ), ), ); } /** * Called when logger is loaded. */ public function loaded() { add_action( 'switch_to_user', array( $this, 'on_switch_to_user' ), 10, 2 ); add_action( 'switch_back_user', array( $this, 'on_switch_back_user' ), 10, 2 ); add_action( 'switch_off_user', array( $this, 'on_switch_off_user' ), 10, 1 ); } /** * Function is called when a user switches to another user. * * @param int $user_id The ID of the user being switched to. * @param int $old_user_id The ID of the user being switched from. */ public function on_switch_to_user( $user_id, $old_user_id ) { $user_to = get_user_by( 'id', $user_id ); $user_from = get_user_by( 'id', $old_user_id ); if ( ! is_a( $user_to, 'WP_User' ) || ! is_a( $user_from, 'WP_User' ) ) { return; } $this->info_message( 'switched_to_user', array( // It is the old user who initiates the switching. '_initiator' => Log_Initiators::WP_USER, '_user_id' => $user_from->ID, '_user_login' => $user_from->user_login, '_user_email' => $user_from->user_email, 'user_id' => $user_id, 'old_user_id' => $old_user_id, 'user_login_to' => $user_to->user_login, 'user_login_from' => $user_from->user_login, ) ); } /** * Function is called when a user switches back to their originating account. * When you switch back after being logged off the * * Note: $old_user_id parameter is boolean false because there is no old user. * * @param int $user_id The ID of the user being switched back to. * @param int|false $old_user_id The ID of the user being switched from, or false if the user is switching back * after having been switched off. */ public function on_switch_back_user( $user_id, $old_user_id ) { $user_to = get_user_by( 'id', $user_id ); $user_from = $old_user_id === false ? null : get_user_by( 'id', $old_user_id ); if ( ! is_a( $user_to, 'WP_User' ) ) { return; } if ( $user_from ) { // User switched back from another user. $this->info_message( 'switched_back_user', array( '_initiator' => Log_Initiators::WP_USER, '_user_id' => $user_to->ID, '_user_login' => $user_to->user_login, '_user_email' => $user_to->user_email, 'user_id' => $user_id, 'old_user_id' => $old_user_id, 'user_login_to' => $user_to->user_login, 'user_login_from' => $user_from->user_login, ) ); } else { // User switched back to themself (no prev user). $this->info_message( 'switched_back_themself', array( '_initiator' => Log_Initiators::WP_USER, '_user_id' => $user_to->ID, '_user_login' => $user_to->user_login, '_user_email' => $user_to->user_email, 'user_login_to' => $user_to->user_login, ) ); } } /** * Function is called when a user is switched off. * * @param int $user_id The ID of the user being switched off. */ public function on_switch_off_user( $user_id ) { $user = get_user_by( 'id', $user_id ); if ( ! is_a( $user, 'WP_User' ) ) { return; } $this->info_message( 'switched_off_user', array( '_initiator' => Log_Initiators::WP_USER, '_user_id' => $user_id, '_user_login' => $user->user_login, '_user_email' => $user->user_email, 'user_id' => $user_id, 'user_login' => $user->user_login, ) ); } }