PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 3.1
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v3.1
4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / lib / wp_session / wp-session.php
wp-user-avatar / src / lib / wp_session Last commit date
class-recursive-arrayaccess.php 5 years ago class-wp-session.php 5 years ago wp-session.php 5 years ago
wp-session.php
179 lines
1 <?php
2 /**
3 * WordPress session managment.
4 *
5 * Standardizes WordPress session data and uses either database transients or in-memory caching
6 * for storing user session information.
7 *
8 * @package WordPress
9 * @subpackage Session
10 * @since 3.7.0
11 */
12
13 // Exit if accessed directly
14 if ( ! defined( 'ABSPATH' ) ) exit;
15
16 /**
17 * Return the current cache expire setting.
18 *
19 * @return int
20 */
21 function wp_session_cache_expire() {
22 $wp_session = WP_Session::get_instance();
23
24 return $wp_session->cache_expiration();
25 }
26
27 /**
28 * Alias of wp_session_write_close()
29 */
30 function wp_session_commit() {
31 wp_session_write_close();
32 }
33
34 /**
35 * Load a JSON-encoded string into the current session.
36 *
37 * @param string $data
38 */
39 function wp_session_decode( $data ) {
40 $wp_session = WP_Session::get_instance();
41
42 return $wp_session->json_in( $data );
43 }
44
45 /**
46 * Encode the current session's data as a JSON string.
47 *
48 * @return string
49 */
50 function wp_session_encode() {
51 $wp_session = WP_Session::get_instance();
52
53 return $wp_session->json_out();
54 }
55
56 /**
57 * Regenerate the session ID.
58 *
59 * @param bool $delete_old_session
60 *
61 * @return bool
62 */
63 function wp_session_regenerate_id( $delete_old_session = false ) {
64 $wp_session = WP_Session::get_instance();
65
66 $wp_session->regenerate_id( $delete_old_session );
67
68 return true;
69 }
70
71 /**
72 * Start new or resume existing session.
73 *
74 * Resumes an existing session based on a value sent by the _wp_session cookie.
75 *
76 * @return bool
77 */
78 function wp_session_start() {
79 $wp_session = WP_Session::get_instance();
80 do_action( 'wp_session_start' );
81
82 return $wp_session->session_started();
83 }
84 add_action( 'plugins_loaded', 'wp_session_start' );
85
86 /**
87 * Return the current session status.
88 *
89 * @return int
90 */
91 function wp_session_status() {
92 $wp_session = WP_Session::get_instance();
93
94 if ( $wp_session->session_started() ) {
95 return PHP_SESSION_ACTIVE;
96 }
97
98 return PHP_SESSION_NONE;
99 }
100
101 /**
102 * Unset all session variables.
103 */
104 function wp_session_unset() {
105 $wp_session = WP_Session::get_instance();
106
107 $wp_session->reset();
108 }
109
110 /**
111 * Write session data and end session
112 */
113 function wp_session_write_close() {
114 $wp_session = WP_Session::get_instance();
115
116 $wp_session->write_data();
117 do_action( 'wp_session_commit' );
118 }
119 add_action( 'shutdown', 'wp_session_write_close' );
120
121 /**
122 * Clean up expired sessions by removing data and their expiration entries from
123 * the WordPress options table.
124 *
125 * This method should never be called directly and should instead be triggered as part
126 * of a scheduled task or cron job.
127 */
128 function wp_session_cleanup() {
129 global $wpdb;
130
131 if ( defined( 'WP_SETUP_CONFIG' ) ) {
132 return;
133 }
134
135 if ( ! defined( 'WP_INSTALLING' ) ) {
136 $expiration_keys = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE '_wp_session_expires_%'" );
137
138 $now = current_time( 'timestamp' );
139 $expired_sessions = array();
140
141 foreach( $expiration_keys as $expiration ) {
142
143 // If the session has expired
144 if ( $now > intval( $expiration->option_value ) ) {
145
146 // Get the session ID by parsing the option_name
147 $session_id = substr( $expiration->option_name, 20 );
148
149 if( (int) -1 === (int) $session_id || ! preg_match( '/^[a-f0-9]{32}$/', $session_id ) ) {
150 continue;
151 }
152
153 $expired_sessions[] = $expiration->option_name;
154 $expired_sessions[] = esc_sql( "_wp_session_$session_id" );
155 }
156 }
157
158 // Delete all expired sessions in a single query
159 if ( ! empty( $expired_sessions ) ) {
160 $option_names = implode( "','", $expired_sessions );
161 $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name IN ('$option_names')" );
162 }
163 }
164
165 // Allow other plugins to hook in to the garbage collection process.
166 do_action( 'wp_session_cleanup' );
167 }
168 add_action( 'wp_session_garbage_collection', 'wp_session_cleanup' );
169
170 /**
171 * Register the garbage collector as a twice daily event.
172 */
173 function wp_session_register_garbage_collection() {
174 if ( ! wp_next_scheduled( 'wp_session_garbage_collection' ) ) {
175 wp_schedule_event( current_time( 'timestamp' ), 'twicedaily', 'wp_session_garbage_collection' );
176 }
177 }
178 add_action( 'wp', 'wp_session_register_garbage_collection' );
179