Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/elementor/core/logger/log-reporter.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
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 +