PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.3
Elementor Website Builder – more than just a page builder v4.2.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 4.2.3, at core/logger/log-reporter.php

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