LLMS_Abstract_Session_Data
LLMS_Abstract_Session
Source Source
File: includes/abstracts/llms-abstract-session-data.php
abstract class LLMS_Abstract_Session_Data { /** * Session data * * @var array */ protected $data = array(); /** * Session ID * * The session ID is the logged-in user ID * or a unique ID for an anonymous user. * * @var string */ protected $id = ''; /** * Determines if there's session data to be saved. * * If `true` no data needs to be saved, if `false` data * needs to be saved. * * @var boolean */ protected $is_clean = true; /** * Generate a session key for the current user/visitor. * * A logged-in user will use their WP_User ID while logged-out * users will be assigned a random string. * * @since 4.0.0 * * @return string */ protected function generate_id() { // Use the current user id if the user is logged in. if ( is_user_logged_in() ) { return strval( get_current_user_id() ); } // Generate a random id. require_once ABSPATH . 'wp-includes/class-phpass.php'; $hasher = new PasswordHash( 8, false ); return md5( $hasher->get_random_bytes( 32 ) ); } /** * Retrieve session ID. * * @since 1.0.0 * @since 4.0.0 Moved from `LLMS_Sessions`, automatically generates an ID if it doesn't exist. * * @return string Session ID. */ public function get_id() { if ( empty( $this->id ) ) { $this->id = $this->generate_id(); } return $this->id; } /** * Retrieve a session variable. * * @since 1.0.0 * @since 3.37.7 Added the `$default` parameter that represents the default value * to return if the session variable requested doesn't exist. * @since 4.0.0 Moved from `LLMS_Session`. * * @param string $key The key of the session variable. * @param mixed $default Optional. The default value to return if no session variable is found with the provided key. Default `false`. * @return mixed */ public function get( $key, $default = false ) { $key = sanitize_key( $key ); return isset( $this->data[ $key ] ) ? maybe_unserialize( $this->data[ $key ] ) : $default; } /** * Set a session variable. * * @since 1.0.0 * @since 4.0.0 Moved from `LLMS_Session`. * * @param string $key The key of the session variable. * @param mixed $value The value of the session variable. * @return mixed */ public function set( $key, $value ) { /** * Using `isset()` allows us to explicitly save a value of `false` * since the `get()` method will return the default value `false` making it look * as if the value hasn't changed (when it actually has). */ if ( ! isset( $this->$key ) || $value !== $this->get( $key ) ) { $this->data[ sanitize_key( $key ) ] = maybe_serialize( $value ); $this->is_clean = false; } return $this->get( $key ); } /** * Magic get * * @since 1.0.0 * @since 4.0.0 Moved from `LLMS_Session`. * * @param string $key The key of the session variable. * @return mixed */ public function __get( $key ) { return $this->get( $key ); } /** * Magic set * * @since 1.0.0 * @since 4.0.0 Moved from `LLMS_Session`. * * @param string $key The key of the session variable. * @param string $value The value of the session variable. * @return void */ public function __set( $key, $value ) { $this->set( $key, $value ); } /** * Magic isset * * @since 1.0.0 * @since 4.0.0 Use `sanitize_key()` (like other methods in this class) instead of `sanitize_title()`. * * @param string $key The key of the session variable. * @return bool */ public function __isset( $key ) { return isset( $this->data[ sanitize_key( $key ) ] ); } /** * Magic unset * * @since 1.0.0 * @since 4.0.0 Use `sanitize_key()` when removing session var. * * @param string $key The key of the session variable. * @return void */ public function __unset( $key ) { if ( isset( $this->$key ) ) { unset( $this->data[ sanitize_key( $key ) ] ); $this->is_clean = false; } } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
Changelog Changelog
Version | Description |
---|---|
4.0.0 | Introduced. |