PluginProbe
Elementor Website Builder – more than just a page builder / 3.5.3
Elementor Website Builder – more than just a page builder v3.5.3
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / core / logger / log-reporter.php

log-reporter.php in Elementor Website Builder – more than just a page builder 3.5.3, at core/logger/log-reporter.php

115 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\Core\Logger;
3
4 use Elementor\Modules\System_Info\Reporters\Base;
5
6 if ( ! defined( 'ABSPATH' ) ) {
7 exit; // Exit if accessed directly
8 }
9
10 /**
11 * Elementor Log reporter.
12 *
13 * Elementor log reporter handler class is responsible for generating the
14 * debug reports.
15 *
16 * @since 2.4.0
17 */
18 class Log_Reporter extends Base {
19
20 const MAX_ENTRIES = 20;
21 const CLEAR_LOG_ACTION = 'elementor-clear-log';
22
23 public function get_title() {
24 return __( 'Log', 'elementor' );
25 }
26
27 public function get_fields() {
28 return [
29 'log_entries' => '',
30 ];
31 }
32
33 public function print_html_label( $log_label ) {
34 $title = $this->get_title();
35
36 if ( empty( $_GET[ self::CLEAR_LOG_ACTION ] ) ) { // phpcs:ignore -- nonce validation is not require here.
37 $nonce = wp_create_nonce( self::CLEAR_LOG_ACTION );
38 $url = add_query_arg( [
39 self::CLEAR_LOG_ACTION => 1,
40 '_wpnonce' => $nonce,
41 ] );
42
43 $title .= '<a href="' . esc_url( $url ) . '#elementor-clear-log" class="box-title-tool">' . esc_html__( 'Clear Log', 'elementor' ) . '</a>';
44 $title .= '<span id="elementor-clear-log"></span>';
45 }
46
47 parent::print_html_label( $title );
48 }
49
50 public function get_log_entries() {
51 /** @var \Elementor\Core\Logger\Manager $manager */
52 $manager = Manager::instance();
53
54 /** @var \Elementor\Core\Logger\Loggers\Db $logger */
55 $logger = $manager->get_logger( 'db' );
56
57 if ( ! empty( $_GET[ self::CLEAR_LOG_ACTION ] ) ) {
58 if ( empty( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], self::CLEAR_LOG_ACTION ) ) {
59 wp_die( 'Invalid Nonce', 'Invalid Nonce', [
60 'back_link' => true,
61 ] );
62 }
63
64 $logger->clear();
65 }
66
67 $log_string = 'No entries to display';
68 $log_entries = $logger->get_formatted_log_entries( self::MAX_ENTRIES, false );
69
70 if ( ! empty( $log_entries ) ) {
71 $entries_string = '';
72 foreach ( $log_entries as $key => $log_entry ) {
73 if ( $log_entry['count'] ) {
74 $entries_string .= '<h3>' . sprintf( '%s: showing %s of %s', $key, $log_entry['count'], $log_entry['total_count'] ) . '</h3>';
75 $entries_string .= '<div class="elementor-log-entries">' . $log_entry['entries'] . '</div>';
76 }
77 }
78
79 if ( ! empty( $entries_string ) ) {
80 $log_string = $entries_string;
81 }
82 }
83
84 return [
85 'value' => $log_string,
86 ];
87 }
88
89 public function get_raw_log_entries() {
90 $log_string = 'No entries to display';
91
92 /** @var \Elementor\Core\Logger\Manager $manager */
93 $manager = Manager::instance();
94 $logger = $manager->get_logger();
95 $log_entries = $logger->get_formatted_log_entries( self::MAX_ENTRIES, false );
96
97 if ( ! empty( $log_entries ) ) {
98 $entries_string = PHP_EOL;
99 foreach ( $log_entries as $key => $log_entry ) {
100 if ( $log_entry['count'] ) {
101 $entries_string .= sprintf( '%s: showing %s of %s', $key, $log_entry['count'], $log_entry['total_count'] ) . $log_entry['entries'] . PHP_EOL;
102 }
103 }
104
105 if ( ! empty( $entries_string ) ) {
106 $log_string = $entries_string;
107 }
108 }
109
110 return [
111 'value' => $log_string,
112 ];
113 }
114 }
115