PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.1.5
GiveWP – Donation Plugin and Fundraising Platform v2.1.5
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / libraries / sessions / class-wp-session-utils.php
give / includes / libraries / sessions Last commit date
class-recursive-arrayaccess.php 8 years ago class-wp-session-utils.php 8 years ago class-wp-session.php 8 years ago wp-session.php 8 years ago
class-wp-session-utils.php
139 lines
1 <?php
2
3 /**
4 * Utility class for sesion utilities
5 *
6 * THIS CLASS SHOULD NEVER BE INSTANTIATED
7 */
8 class WP_Session_Utils {
9 /**
10 * Count the total sessions in the database.
11 *
12 * @global wpdb $wpdb
13 *
14 * @return int
15 */
16 public static function count_sessions() {
17 global $wpdb;
18
19 $query = "SELECT COUNT(*) FROM $wpdb->options WHERE option_name LIKE '_wp_session_expires_%'";
20
21 /**
22 * Filter the query in case tables are non-standard.
23 *
24 * @param string $query Database count query
25 */
26 $query = apply_filters( 'wp_session_count_query', $query );
27
28 $sessions = $wpdb->get_var( $query );
29
30 return absint( $sessions );
31 }
32
33 /**
34 * Create a new, random session in the database.
35 *
36 * @param null|string $date
37 */
38 public static function create_dummy_session( $date = null ) {
39 // Generate our date
40 if ( null !== $date ) {
41 $time = strtotime( $date );
42
43 if ( false === $time ) {
44 $date = null;
45 } else {
46 $expires = date( 'U', strtotime( $date ) );
47 }
48 }
49
50 // If null was passed, or if the string parsing failed, fall back on a default
51 if ( null === $date ) {
52 /**
53 * Filter the expiration of the session in the database
54 *
55 * @param int
56 */
57 $expires = time() + (int) apply_filters( 'wp_session_expiration', 30 * 60 );
58 }
59
60 $session_id = self::generate_id();
61
62 // Store the session
63 add_option( "_wp_session_{$session_id}", array(), '', 'no' );
64 add_option( "_wp_session_expires_{$session_id}", $expires, '', 'no' );
65 }
66
67 /**
68 * Delete old sessions from the database.
69 *
70 * @param int $limit Maximum number of sessions to delete.
71 *
72 * @global wpdb $wpdb
73 *
74 * @return int Sessions deleted.
75 */
76 public static function delete_old_sessions( $limit = 1000 ) {
77 global $wpdb;
78
79 $limit = absint( $limit );
80 $keys = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE option_name LIKE '_wp_session_expires_%' ORDER BY option_value ASC LIMIT 0, {$limit}" );
81
82 $now = time();
83 $expired = array();
84 $count = 0;
85
86 foreach( $keys as $expiration ) {
87 $key = $expiration->option_name;
88 $expires = $expiration->option_value;
89
90 if ( $now > $expires ) {
91 $session_id = preg_replace("/[^A-Za-z0-9_]/", '', substr( $key, 20 ) );
92
93 $expired[] = $key;
94 $expired[] = "_wp_session_{$session_id}";
95
96 $count += 1;
97 }
98 }
99
100 // Delete expired sessions
101 if ( ! empty( $expired ) ) {
102 $placeholders = array_fill( 0, count( $expired ), '%s' );
103 $format = implode( ', ', $placeholders );
104 $query = "DELETE FROM $wpdb->options WHERE option_name IN ($format)";
105
106 $prepared = $wpdb->prepare( $query, $expired );
107 $wpdb->query( $prepared );
108 }
109
110 return $count;
111 }
112
113 /**
114 * Remove all sessions from the database, regardless of expiration.
115 *
116 * @global wpdb $wpdb
117 *
118 * @return int Sessions deleted
119 */
120 public static function delete_all_sessions() {
121 global $wpdb;
122
123 $count = $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '_wp_session_%'" );
124
125 return (int) ( $count / 2 );
126 }
127
128 /**
129 * Generate a new, random session ID.
130 *
131 * @return string
132 */
133 public static function generate_id() {
134 require_once( ABSPATH . 'wp-includes/class-phpass.php' );
135 $hash = new PasswordHash( 8, false );
136
137 return md5( $hash->get_random_bytes( 32 ) );
138 }
139 }