PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 3.6.6
JetFormBuilder — Dynamic Blocks Form Builder v3.6.6
3.6.6.1 3.6.6 3.6.5.4 3.6.5.3 3.6.5.2 3.6.5.1 3.6.5 3.6.4.2 3.6.4.1 3.6.4 3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 All 134 releases
jetformbuilder / modules / security / csrf / csrf-token-model.php

csrf-token-model.php in JetFormBuilder — Dynamic Blocks Form Builder 3.6.6, at modules/security/csrf/csrf-token-model.php

83 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace JFB_Modules\Security\Csrf;
5
6 use Jet_Form_Builder\Db_Queries\Base_Db_Model;
7
8 // If this file is called directly, abort.
9 if ( ! defined( 'WPINC' ) ) {
10 die;
11 }
12
13 class Csrf_Token_Model extends Base_Db_Model {
14
15 private static $deleted = false;
16
17 /**
18 * @return string
19 */
20 public static function table_name(): string {
21 return 'csrf_tokens';
22 }
23
24 /**
25 * @return array
26 */
27 public static function schema(): array {
28 return array(
29 self::PRIMARY_ID => 'bigint(20) NOT NULL AUTO_INCREMENT',
30 'client_id' => 'varchar(155)',
31 'token' => 'text',
32 self::CREATED_AT => 'TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP',
33 );
34 }
35
36 public function schema_engine() {
37 return self::MyISAM;
38 }
39
40 /**
41 * @return array
42 */
43 public static function schema_keys(): array {
44 return array(
45 'id' => 'primary key',
46 'client_id' => 'unique',
47 );
48 }
49
50 public static function clear() {
51 global $wpdb;
52
53 if ( self::$deleted ) {
54 return;
55 }
56
57 self::$deleted = true;
58
59 /** @var \DateTimeImmutable $datetime_limit */
60 $datetime_limit = apply_filters(
61 'jet-form-builder/security/csrf-token/datetime-limit',
62 current_datetime()->modify( '-4 hours' )
63 );
64
65 $self = ( new static() )->create();
66
67 // phpcs:disable WordPress.DB
68 $wpdb->query(
69 $wpdb->prepare(
70 "
71 DELETE FROM {$self::table()}
72 WHERE 1=1
73 AND TIMESTAMP(`created_at`) <= TIMESTAMP(%s)
74 ",
75 $datetime_limit->format( 'Y-m-d H:i:s' )
76 )
77 );
78 // phpcs:enable WordPress.DB
79 }
80
81
82 }
83