balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

log-reporter.php (2944B)


      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 }