PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.83
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.83
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / extensions / Smart_Links / Smart_Links_DB.php

Smart_Links_DB.php in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.83, at includes/extensions/Smart_Links/Smart_Links_DB.php

85 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Smart Links database schema.
4 *
5 * @package King_Addons
6 */
7
8 namespace King_Addons\Smart_Links;
9
10 if (!defined('ABSPATH')) {
11 exit;
12 }
13
14 class Smart_Links_DB
15 {
16 private const DB_VERSION = '1.0.0';
17
18 public static function get_clicks_table(): string
19 {
20 global $wpdb;
21
22 return $wpdb->prefix . 'kng_link_clicks';
23 }
24
25 public static function get_daily_table(): string
26 {
27 global $wpdb;
28
29 return $wpdb->prefix . 'kng_link_clicks_daily';
30 }
31
32 public static function maybe_create_tables(): void
33 {
34 $installed_version = get_option('king_addons_smart_links_db_version');
35 if ($installed_version === self::DB_VERSION) {
36 return;
37 }
38
39 self::create_tables();
40 update_option('king_addons_smart_links_db_version', self::DB_VERSION);
41 }
42
43 private static function create_tables(): void
44 {
45 global $wpdb;
46
47 require_once ABSPATH . 'wp-admin/includes/upgrade.php';
48
49 $charset_collate = $wpdb->get_charset_collate();
50 $clicks_table = self::get_clicks_table();
51 $daily_table = self::get_daily_table();
52
53 $sql_clicks = "CREATE TABLE {$clicks_table} (
54 id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
55 link_id BIGINT UNSIGNED NOT NULL,
56 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
57 ip_hash VARCHAR(64) NOT NULL DEFAULT '',
58 user_agent_hash VARCHAR(64) NOT NULL DEFAULT '',
59 unique_hash VARCHAR(64) NOT NULL DEFAULT '',
60 referrer TEXT NULL,
61 landing_url TEXT NULL,
62 device_type VARCHAR(20) NOT NULL DEFAULT '',
63 browser VARCHAR(50) NOT NULL DEFAULT '',
64 os VARCHAR(50) NOT NULL DEFAULT '',
65 country CHAR(2) NOT NULL DEFAULT '',
66 PRIMARY KEY (id),
67 KEY link_id (link_id),
68 KEY created_at (created_at),
69 KEY unique_hash (unique_hash)
70 ) {$charset_collate};";
71
72 $sql_daily = "CREATE TABLE {$daily_table} (
73 link_id BIGINT UNSIGNED NOT NULL,
74 date DATE NOT NULL,
75 clicks BIGINT UNSIGNED NOT NULL DEFAULT 0,
76 unique_clicks BIGINT UNSIGNED NOT NULL DEFAULT 0,
77 PRIMARY KEY (link_id, date),
78 KEY date (date)
79 ) {$charset_collate};";
80
81 dbDelta($sql_clicks);
82 dbDelta($sql_daily);
83 }
84 }
85