add_node( [
'id' => 'login-monitor',
'parent' => 'top-secondary',
'meta' => [],
'title' => '-- ' . __( 'Logged in', 'admin-user-control' ) . '',
'href' => '#',
] );
$wp_admin_bar->add_node( [
'id' => 'login-monitor-detail',
'parent' => 'login-monitor',
'meta' => [],
'title' => '
',
'href' => '#',
] );
}
public function create_response( $lifetime ) {
$ary = [];
$now = time();
update_user_meta( get_current_user_id(), self::UM_KEY, $now );
$expire = $now - $lifetime;
$users = new WP_User_Query( [
'meta_key' => self::UM_KEY,
'meta_value' => $expire,
'meta_compare' => '>',
] );
$isAdministrator = current_user_can( 'administrator' );
foreach ( $users->get_results() as $user ) {
$ary['login-monitor'][] = [
'id' => $user->ID,
'nice_name' => $user->user_nicename,
'display_name' => $user->display_name,
'color' => substr( md5( $user->display_name ), 0, 6 ),
'profile_url' => $isAdministrator ? $this->get_admin_edit_user_link( $user->ID ) : null
];
}
return $ary;
}
private function get_admin_edit_user_link( $user_id ) {
if ( get_current_user_id() == $user_id ) {
$edit_link = null;
} else {
$edit_link = add_query_arg( 'user_id', $user_id, self_admin_url( 'user-edit.php' ) );
}
return $edit_link;
}
}