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

111 lines 2.9 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 $title = 'Log';
25
26 if ( 'html' === $this->_properties['format'] && empty( $_GET[ self::CLEAR_LOG_ACTION ] ) ) { // phpcs:ignore -- nonce validation is not require here.
27 $nonce = wp_create_nonce( self::CLEAR_LOG_ACTION );
28 $url = add_query_arg( [
29 self::CLEAR_LOG_ACTION => 1,
30 '_wpnonce' => $nonce,
31 ] );
32
33 $title .= '<a href="' . esc_url( $url ) . '#elementor-clear-log" class="box-title-tool">' . esc_html__( 'Clear Log', 'elementor' ) . '</a>';
34 $title .= '<span id="elementor-clear-log"></span>';
35 }
36
37 return $title;
38 }
39
40 public function get_fields() {
41 return [
42 'log_entries' => '',
43 ];
44 }
45
46 public function get_log_entries() {
47 /** @var \Elementor\Core\Logger\Manager $manager */
48 $manager = Manager::instance();
49
50 /** @var \Elementor\Core\Logger\Loggers\Db $logger */
51 $logger = $manager->get_logger( 'db' );
52
53 if ( ! empty( $_GET[ self::CLEAR_LOG_ACTION ] ) ) {
54 if ( empty( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], self::CLEAR_LOG_ACTION ) ) {
55 wp_die( 'Invalid Nonce', 'Invalid Nonce', [
56 'back_link' => true,
57 ] );
58 }
59
60 $logger->clear();
61 }
62
63 $log_string = 'No entries to display';
64 $log_entries = $logger->get_formatted_log_entries( self::MAX_ENTRIES, false );
65
66 if ( ! empty( $log_entries ) ) {
67 $entries_string = '';
68 foreach ( $log_entries as $key => $log_entry ) {
69 if ( $log_entry['count'] ) {
70 $entries_string .= '<h3>' . sprintf( '%s: showing %s of %s', $key, $log_entry['count'], $log_entry['total_count'] ) . '</h3>';
71 $entries_string .= '<div class="elementor-log-entries">' . $log_entry['entries'] . '</div>';
72 }
73 }
74
75 if ( ! empty( $entries_string ) ) {
76 $log_string = $entries_string;
77 }
78 }
79
80 return [
81 'value' => $log_string,
82 ];
83 }
84
85 public function get_raw_log_entries() {
86 $log_string = 'No entries to display';
87
88 /** @var \Elementor\Core\Logger\Manager $manager */
89 $manager = Manager::instance();
90 $logger = $manager->get_logger();
91 $log_entries = $logger->get_formatted_log_entries( self::MAX_ENTRIES, false );
92
93 if ( ! empty( $log_entries ) ) {
94 $entries_string = PHP_EOL;
95 foreach ( $log_entries as $key => $log_entry ) {
96 if ( $log_entry['count'] ) {
97 $entries_string .= sprintf( '%s: showing %s of %s', $key, $log_entry['count'], $log_entry['total_count'] ) . $log_entry['entries'] . PHP_EOL;
98 }
99 }
100
101 if ( ! empty( $entries_string ) ) {
102 $log_string = $entries_string;
103 }
104 }
105
106 return [
107 'value' => $log_string,
108 ];
109 }
110 }
111