PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.6.0
GiveWP – Donation Plugin and Fundraising Platform v2.6.0
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 / database / class-give-db-sessions.php
give / includes / database Last commit date
class-give-db-comments-meta.php 6 years ago class-give-db-comments.php 6 years ago class-give-db-donor-meta.php 6 years ago class-give-db-donors.php 6 years ago class-give-db-form-meta.php 6 years ago class-give-db-logs-meta.php 6 years ago class-give-db-logs.php 6 years ago class-give-db-meta.php 6 years ago class-give-db-payment-meta.php 6 years ago class-give-db-sequential-ordering.php 6 years ago class-give-db-sessions.php 6 years ago class-give-db.php 6 years ago
class-give-db-sessions.php
248 lines
1 <?php
2 /**
3 * Session Database Handler
4 *
5 * @package Give
6 * @subpackage Classes/Give_Session
7 * @copyright Copyright (c) 2018, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 2.2.0
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 /**
18 * Class Give_DB_Sessions
19 */
20 class Give_DB_Sessions extends Give_DB {
21 /**
22 * Cache group name
23 *
24 * @since 2.2.0
25 * @access private
26 *
27 * @var string
28 */
29 private $cache_group = 'give_sessions';
30
31 /**
32 * Cache incrementer name
33 *
34 * @since 2.2.0
35 * @access private
36 *
37 * @var string
38 */
39 private $incrementer_name = 'give_sessions';
40
41
42 /**
43 * Class Constructor
44 *
45 * @since 2.2.0
46 * @access public
47 */
48 public function __construct() {
49 global $wpdb;
50 $this->table_name = "{$wpdb->prefix}give_sessions";
51 $this->primary_key = 'session_key';
52 $this->version = '1.0';
53
54 // Set cache group id.
55 $current_blog_id = get_current_blog_id();
56 $this->incrementer_name = "give-cache-incrementer-sessions-{$current_blog_id}";
57 $incrementer_value = wp_cache_get( $this->incrementer_name );
58 $incrementer_value = ! empty( $incrementer_value ) ? $incrementer_value : microtime( true );
59 $this->cache_group = "{$this->cache_group}_{$current_blog_id}_{$incrementer_value}";
60
61 parent::__construct();
62 }
63
64
65 /**
66 * Whitelist of columns
67 *
68 * @since 2.2.0
69 * @access public
70 *
71 * @return array Columns and formats.
72 */
73 public function get_columns() {
74 return array(
75 'session_id' => '%d',
76 'session_key' => '%s',
77 'session_value' => '%s',
78 'session_expiry' => '%d',
79 );
80 }
81
82 /**
83 * Create Meta Tables.
84 *
85 * @since 2.2.0
86 * @access public
87 */
88 public function create_table() {
89 global $wpdb;
90
91 $charset_collate = $wpdb->get_charset_collate();
92
93 $sql = "CREATE TABLE {$this->table_name} (
94 session_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
95 session_key char(32) NOT NULL,
96 session_value longtext NOT NULL,
97 session_expiry BIGINT UNSIGNED NOT NULL,
98 PRIMARY KEY (session_key),
99 UNIQUE KEY session_id (session_id)
100 ) {$charset_collate};";
101
102 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
103 dbDelta( $sql );
104
105 update_option( $this->table_name . '_db_version', $this->version, false );
106 }
107
108
109 /**
110 * Returns the session.
111 *
112 * @todo: add cache logic
113 *
114 * @param string $donor_id Donor ID.
115 * @param mixed $default Default session value.
116 *
117 * @return mixed
118 */
119 public function get_session( $donor_id, $default = false ) {
120 global $wpdb;
121
122 if ( defined( 'WP_SETUP_CONFIG' ) ) {
123 return false;
124 }
125
126 if ( ! ( $value = wp_cache_get( $donor_id, $this->cache_group ) ) ) { // @codingStandardsIgnoreLine
127
128 // @codingStandardsIgnoreStart
129 $value = $wpdb->get_var(
130 $wpdb->prepare(
131 "
132 SELECT session_value
133 FROM $this->table_name
134 WHERE session_key = %s
135 ",
136 $donor_id
137 )
138 );
139 // @codingStandardsIgnoreEnd
140
141 if ( is_null( $value ) ) {
142 $value = $default;
143 }
144
145 wp_cache_add( $donor_id, $value, $this->cache_group );
146 }
147
148 return maybe_unserialize( $value );
149 }
150
151 /**
152 * Update the session expiry timestamp.
153 *
154 * @param string $donor_id Donor ID.
155 * @param int $timestamp Timestamp to expire the cookie.
156 */
157 public function update_session_timestamp( $donor_id, $timestamp ) {
158 global $wpdb;
159
160 // @codingStandardsIgnoreStart.
161 $wpdb->update(
162 $this->table_name,
163 array(
164 'session_expiry' => $timestamp,
165 ),
166 array(
167 'session_key' => $donor_id,
168 ),
169 array(
170 '%d'
171 )
172 );
173 // @codingStandardsIgnoreEnd.
174 }
175
176 /**
177 * Delete the session from the cache and database.
178 *
179 * @since 2.2.0
180 * @access public
181 *
182 * @param int $donor_id Customer ID.
183 */
184 public function delete_session( $donor_id ) {
185 global $wpdb;
186
187 wp_cache_delete( $donor_id, $this->cache_group );
188
189 // @codingStandardsIgnoreStart
190 $wpdb->delete(
191 $this->table_name,
192 array(
193 'session_key' => $donor_id,
194 )
195 );
196 // @codingStandardsIgnoreEnd
197 }
198
199
200 /**
201 * Cleanup session data from the database and clear caches.
202 * Note: for internal logic only.
203 *
204 * @since 2.2.0
205 * @access public
206 */
207 public function delete_expired_sessions() {
208 global $wpdb;
209
210 wp_cache_set( $this->incrementer_name, microtime( true ) );
211
212 // @codingStandardsIgnoreStart
213 $wpdb->query(
214 $wpdb->prepare(
215 "DELETE FROM $this->table_name WHERE session_expiry < %d",
216 time()
217 )
218 );
219 // @codingStandardsIgnoreEnd
220 }
221
222 /**
223 * Replace table data
224 * Note: only for internal use
225 *
226 * @since 2.2.0
227 * @access public
228 *
229 * @param string $table_name Table name.
230 * @param array $data Data.
231 * @param array $format Array for data format of each key:value in data.
232 */
233 public function __replace( $table_name, $data, $format = null ) {
234 global $wpdb;
235
236 wp_cache_set( $data['session_key'], $data['session_value'], $this->cache_group, $data['session_expiry'] - time() );
237
238
239 // @codingStandardsIgnoreStart
240 $wpdb->replace(
241 $table_name,
242 $data,
243 $format
244 );
245 // @codingStandardsIgnoreEnd
246 }
247 }
248