| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Session API: WP_User_Meta_Session_Tokens class 4 * 5 * @package WordPress 6 * @subpackage Session 7 * @since 4.7.0 8 */ 9 10 /** 11 * Meta-based user sessions token manager. 12 * 13 * @since 4.0.0 14 * 15 * @see WP_Session_Tokens 16 */ 17 class WP_User_Meta_Session_Tokens extends WP_Session_Tokens { 18 19 /** 20 * Retrieves all sessions of the user. 21 * 22 * @since 4.0.0 23 * 24 * @return array Sessions of the user. 25 */ 26 protected function get_sessions() { 27 $sessions = get_user_meta( $this->user_id, 'session_tokens', true ); 28 29 if ( ! is_array( $sessions ) ) { 30 return array(); 31 } 32 33 $sessions = array_map( array( $this, 'prepare_session' ), $sessions ); 34 return array_filter( $sessions, array( $this, 'is_still_valid' ) ); 35 } 36 37 /** 38 * Converts an expiration to an array of session information. 39 * 40 * @since 4.0.0 41 * 42 * @param mixed $session Session or expiration. 43 * @return array Session. 44 */ 45 protected function prepare_session( $session ) { 46 if ( is_int( $session ) ) { 47 return array( 'expiration' => $session ); 48 } 49 50 return $session; 51 } 52 53 /** 54 * Retrieves a session based on its verifier (token hash). 55 * 56 * @since 4.0.0 57 * 58 * @param string $verifier Verifier for the session to retrieve. 59 * @return array|null The session, or null if it does not exist 60 */ 61 protected function get_session( $verifier ) { 62 $sessions = $this->get_sessions(); 63 return $sessions[ $verifier ] ?? null; 64 } 65 66 /** 67 * Updates a session based on its verifier (token hash). 68 * 69 * @since 4.0.0 70 * 71 * @param string $verifier Verifier for the session to update. 72 * @param array $session Optional. Session. Omitting this argument destroys the session. 73 */ 74 protected function update_session( $verifier, $session = null ) { 75 $sessions = $this->get_sessions(); 76 77 if ( $session ) { 78 $sessions[ $verifier ] = $session; 79 } else { 80 unset( $sessions[ $verifier ] ); 81 } 82 83 $this->update_sessions( $sessions ); 84 } 85 86 /** 87 * Updates the user's sessions in the usermeta table. 88 * 89 * @since 4.0.0 90 * 91 * @param array $sessions Sessions. 92 */ 93 protected function update_sessions( $sessions ) { 94 if ( $sessions ) { 95 update_user_meta( $this->user_id, 'session_tokens', $sessions ); 96 } else { 97 delete_user_meta( $this->user_id, 'session_tokens' ); 98 } 99 } 100 101 /** 102 * Destroys all sessions for this user, except the single session with the given verifier. 103 * 104 * @since 4.0.0 105 * 106 * @param string $verifier Verifier of the session to keep. 107 */ 108 protected function destroy_other_sessions( $verifier ) { 109 $session = $this->get_session( $verifier ); 110 $this->update_sessions( array( $verifier => $session ) ); 111 } 112 113 /** 114 * Destroys all session tokens for the user. 115 * 116 * @since 4.0.0 117 */ 118 protected function destroy_all_sessions() { 119 $this->update_sessions( array() ); 120 } 121 122 /** 123 * Destroys all sessions for all users. 124 * 125 * @since 4.0.0 126 */ 127 public static function drop_sessions() { 128 delete_metadata( 'user', 0, 'session_tokens', false, true ); 129 } 130 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Wed Apr 15 08:20:10 2026 | Cross-referenced by PHPXref |