| @@ -41,9 +41,8 @@ | ||
| 41 | 41 | use WP_Defender\Component\Logger\Rotation_Logger; |
| 42 | 42 | use WP_Defender\Component\Firewall as Firewall_Component; |
| 43 | 43 | use WP_Defender\Controller\Firewall as Firewall_Controller; |
| 44 | 44 | use WP_Defender\Controller\Hub_Connector as Hub_Connector_Controller; |
| 45 | -use WP_Defender\Model\Onboard as Onboard_Model; | |
| 46 | 45 | use WP_Defender\Controller\Rate as Rate_Controller; |
| 47 | 46 | use WP_Defender\Component\Rate as Rate_Component; |
| 48 | 47 | use WP_Defender\Upgrader; |
| 49 | 48 | |
| @@ -166,8 +165,39 @@ | ||
| 166 | 165 | $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared |
| 167 | 166 | } |
| 168 | 167 | |
| 169 | 168 | /** |
| 169 | + * Creates the audit log table used for caching audit events. | |
| 170 | + */ | |
| 171 | + protected function create_table_audit_log(): void { | |
| 172 | + global $wpdb; | |
| 173 | + | |
| 174 | + $charset_collate = $wpdb->get_charset_collate(); | |
| 175 | + // Audit log table. Though our data mainly store on API side, we will need a table for caching. | |
| 176 | + $sql = "CREATE TABLE IF NOT EXISTS {$wpdb->base_prefix}defender_audit_log ( | |
| 177 | + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, | |
| 178 | + `timestamp` int NOT NULL, | |
| 179 | + `event_type` varchar(255) NOT NULL, | |
| 180 | + `action_type` varchar(255) NOT NULL, | |
| 181 | + `site_url` varchar(255) NOT NULL, | |
| 182 | + `user_id` int NOT NULL, | |
| 183 | + `context` varchar(255) NOT NULL, | |
| 184 | + `ip` varchar(45) NOT NULL, | |
| 185 | + `msg` varchar(255) NOT NULL, | |
| 186 | + `blog_id` int NOT NULL, | |
| 187 | + `synced` int NOT NULL, | |
| 188 | + `ttl` int NOT NULL, | |
| 189 | + PRIMARY KEY (`id`), | |
| 190 | + KEY `event_type` (`event_type`), | |
| 191 | + KEY `action_type` (`action_type`), | |
| 192 | + KEY `user_id` (`user_id`), | |
| 193 | + KEY `context` (`context`), | |
| 194 | + KEY `ip` (`ip`) | |
| 195 | +) $charset_collate;"; | |
| 196 | + $wpdb->query( $sql ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching | |
| 197 | + } | |
| 198 | + | |
| 199 | + /** | |
| 170 | 200 | * Creates Defender's tables. |
| 171 | 201 | * |
| 172 | 202 | * @since 2.7.1 No use dbDelta because PHP v8.1 triggers an error when calling query "DESCRIBE {$table};" if the |
| 173 | 203 | * table doesn't exist. |
| @@ -260,8 +290,10 @@ | ||
| 260 | 290 | // Create Blocklist table. |
| 261 | 291 | $this->create_table_blocklist(); |
| 262 | 292 | // Create Quarantine table. |
| 263 | 293 | $this->create_table_quarantine(); |
| 294 | + // Create Audit Log table. | |
| 295 | + $this->create_table_audit_log(); | |
| 264 | 296 | } |
| 265 | 297 | |
| 266 | 298 | /** |
| 267 | 299 | * Check if all quarantine-dependent tables use the InnoDB storage engine. |
| @@ -441,12 +473,12 @@ | ||
| 441 | 473 | }' |
| 442 | 474 | ); |
| 443 | 475 | |
| 444 | 476 | $css_files = array( |
| 445 | - 'defender' => WP_DEFENDER_BASE_URL . 'assets/css/styles.css', | |
| 446 | - 'def-sui' => WP_DEFENDER_BASE_URL . 'assets/css/shared-ui.css', | |
| 447 | - 'def-admin' => WP_DEFENDER_BASE_URL . 'assets/css/admin.css', | |
| 448 | - 'def-showcase' => WP_DEFENDER_BASE_URL . 'assets/css/showcase.css', | |
| 477 | + 'defender' => WP_DEFENDER_BASE_URL . 'assets/css/styles.css', | |
| 478 | + 'def-sui' => WP_DEFENDER_BASE_URL . 'assets/css/shared-ui.css', | |
| 479 | + 'def-admin' => WP_DEFENDER_BASE_URL . 'assets/css/admin.css', | |
| 480 | + 'def-core-ui-style' => WP_DEFENDER_BASE_URL . 'assets/css/core-ui.css', | |
| 449 | 481 | ); |
| 450 | 482 | |
| 451 | 483 | foreach ( $css_files as $slug => $file ) { |
| 452 | 484 | wp_register_style( $slug, $file, array(), DEFENDER_VERSION ); |
| @@ -486,12 +518,8 @@ | ||
| 486 | 518 | $base_url . 'assets/js/core-ui.js', |
| 487 | 519 | array( 'def-vue', 'def-manifest' ), |
| 488 | 520 | ), |
| 489 | 521 | // React files. |
| 490 | - 'def-showcase' => array( | |
| 491 | - $base_url . 'assets/js/showcase.js', | |
| 492 | - $dependencies, | |
| 493 | - ), | |
| 494 | 522 | 'def-setup-wizard' => array( |
| 495 | 523 | $base_url . 'assets/js/setup-wizard.js', |
| 496 | 524 | $dependencies, |
| 497 | 525 | ), |
| @@ -520,14 +548,9 @@ | ||
| 520 | 548 | private function localize_script(): void { |
| 521 | 549 | $wpmu_dev = new WPMUDEV(); |
| 522 | 550 | global $wp_defender_central; |
| 523 | 551 | |
| 524 | - $misc = array(); | |
| 525 | - $data_tracking = wd_di()->get( Data_Tracking::class ); | |
| 526 | - $is_tracking = $data_tracking->show_tracking_modal(); | |
| 527 | - if ( $is_tracking ) { | |
| 528 | - $misc = $data_tracking->get_tracking_modal(); | |
| 529 | - } | |
| 552 | + $misc = array(); | |
| 530 | 553 | $misc['high_contrast'] = defender_high_contrast(); |
| 531 | 554 | $is_wp_org = defender_is_wp_org_version(); |
| 532 | 555 | if ( $is_wp_org ) { |
| 533 | 556 | $misc['rating'] = array(); |
| @@ -565,9 +588,8 @@ | ||
| 565 | 588 | 'wpmudev_url' => WP_DEFENDER_DOCS_LINK, |
| 566 | 589 | 'wpmudev_support_ticket_text' => defender_support_ticket_text(), |
| 567 | 590 | 'wpmudev_api_base_url' => $wpmu_dev->get_api_base_url(), |
| 568 | 591 | 'upgrade_title' => esc_html__( 'UPGRADE TO PRO', 'defender-security' ), |
| 569 | - 'tracking_modal' => $is_tracking ? 'show' : 'hide', | |
| 570 | 592 | 'hosted' => $wpmu_dev->is_wpmu_hosting(), |
| 571 | 593 | 'file_upload_nonce' => wp_create_nonce( 'defender_file_upload' ), |
| 572 | 594 | 'wpmudev_hub_link' => 'https://wpmudev.com/hub2/', |
| 573 | 595 | ) |