| Current File : /home/digitaw/www/wp-content/plugins/simple-history/loggers/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() {
$arr_info = 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' ),
),
);
return $arr_info;
}
/**
* 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,
)
);
}
}