PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.0
Tutor LMS – eLearning and online course solution v4.0.0
4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 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.5.9 1.6.0 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.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 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.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 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.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / GDPR / GDPR.php
tutor / GDPR Last commit date
Controllers 19 hours ago DB 19 hours ago Models 19 hours ago GDPR.php 19 hours ago
GDPR.php
105 lines
1 <?php
2 /**
3 * Main GDPR module bootstrap.
4 *
5 * @package Tutor\GDPR
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 4.0.0
9 */
10
11 namespace Tutor\GDPR;
12
13 use AllowDynamicProperties;
14 use Tutor\GDPR\Controllers\LegalConsent;
15 use Tutor\GDPR\Controllers\UserConsent;
16 use Tutor\GDPR\DB\DB;
17 use TUTOR\Singleton;
18
19 defined( 'ABSPATH' ) || exit;
20
21 /**
22 * GDPR main class to init GDPR functionalities.
23 *
24 * @since 4.0.0
25 */
26 #[AllowDynamicProperties]
27 final class GDPR extends Singleton {
28
29 /**
30 * Option key to track GDPR DB schema installation.
31 *
32 * @since 4.0.0
33 *
34 * @var string
35 */
36 private const DB_SCHEMA_VERSION_OPTION = 'tutor_gdpr_db_schema_version';
37
38 /**
39 * Current schema version.
40 *
41 * Bump this when GDPR DB schemas change.
42 *
43 * @since 4.0.0
44 *
45 * @var string
46 */
47 private const DB_SCHEMA_VERSION = '1.1.0';
48
49 /**
50 * Constructor.
51 *
52 * @since 4.0.0
53 */
54 public function __construct() {
55 $this->register_hooks();
56 }
57
58 /**
59 * Register WordPress hooks for GDPR.
60 *
61 * @since 4.0.0
62 *
63 * @return void
64 */
65 private function register_hooks() {
66 add_action( 'init', array( $this, 'init' ), 5 );
67 }
68
69 /**
70 * Initialize GDPR functionalities.
71 *
72 * @since 4.0.0
73 *
74 * @return void
75 */
76 public function init() {
77 $this->maybe_install_db();
78
79 $this->legal_consent = new LegalConsent();
80 $this->user_content = new UserConsent();
81 }
82
83 /**
84 * Create/update GDPR DB tables when needed.
85 *
86 * @since 4.0.0
87 *
88 * @return void
89 */
90 private function maybe_install_db() {
91 $installed_version = get_option( self::DB_SCHEMA_VERSION_OPTION );
92 if ( self::DB_SCHEMA_VERSION === $installed_version ) {
93 return;
94 }
95
96 // Only create tables when WordPress is fully installed.
97 if ( ! function_exists( 'dbDelta' ) ) {
98 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
99 }
100
101 DB::create_tables();
102 update_option( self::DB_SCHEMA_VERSION_OPTION, self::DB_SCHEMA_VERSION, false );
103 }
104 }
105