balmet.com

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

base.php (2384B)


      1 <?php
      2 namespace Elementor\Core\Logger\Loggers;
      3 
      4 use Elementor\Core\Logger\Items\Base as Log_Item;
      5 use Elementor\Core\Logger\Items\Log_Item_Interface as Log_Item_Interface;
      6 
      7 if ( ! defined( 'ABSPATH' ) ) {
      8 	exit; // Exit if accessed directly
      9 }
     10 
     11 abstract class Base implements Logger_Interface {
     12 
     13 	abstract protected function save_log( Log_Item_Interface $item );
     14 
     15 	/**
     16 	 * @return Log_Item_Interface[]
     17 	 */
     18 	abstract public function get_log();
     19 
     20 	public function log( $item, $type = self::LEVEL_INFO, $args = [] ) {
     21 		if ( ! $item instanceof Log_Item ) {
     22 			$item = $this->create_item( $item, $type, $args );
     23 		}
     24 		$this->save_log( $item );
     25 	}
     26 
     27 	public function info( $message, $args = [] ) {
     28 		$this->log( $message, self::LEVEL_INFO, $args );
     29 	}
     30 
     31 	public function notice( $message, $args = [] ) {
     32 		$this->log( $message, self::LEVEL_NOTICE, $args );
     33 	}
     34 
     35 	public function warning( $message, $args = [] ) {
     36 		$this->log( $message, self::LEVEL_WARNING, $args );
     37 	}
     38 
     39 	public function error( $message, $args = [] ) {
     40 		$this->log( $message, self::LEVEL_ERROR, $args );
     41 	}
     42 
     43 	/**
     44 	 * @param string $message
     45 	 * @param string $type
     46 	 * @param array  $args
     47 	 *
     48 	 * @return Log_Item_Interface
     49 	 */
     50 	private function create_item( $message, $type, $args = [] ) {
     51 		$args['message'] = $message;
     52 		$args['type'] = $type;
     53 
     54 		$item = new Log_Item( $args );
     55 
     56 		return $item;
     57 	}
     58 
     59 	public function get_formatted_log_entries( $max_entries, $table = true ) {
     60 		$entries = $this->get_log();
     61 
     62 		if ( empty( $entries ) ) {
     63 			return [
     64 				'All' => [
     65 					'total_count' => 0,
     66 					'count' => 0,
     67 					'entries' => '',
     68 				],
     69 			];
     70 		}
     71 
     72 		$sorted_entries = [];
     73 		$open_tag = $table ? '<tr><td>' : '';
     74 		$close_tab = $table ? '</td></tr>' : PHP_EOL;
     75 
     76 		$format = $table ? 'html' : 'raw';
     77 
     78 		foreach ( $entries as $entry ) {
     79 			/** @var Log_Item $entry */
     80 			$sorted_entries[ $entry->get_name() ][] = $open_tag . $entry->format( $format ) . $close_tab;
     81 		}
     82 
     83 		$formatted_entries = [];
     84 		foreach ( $sorted_entries as $key => $sorted_entry ) {
     85 			$formatted_entries[ $key ]['total_count'] = count( $sorted_entry );
     86 			$formatted_entries[ $key ]['count'] = count( $sorted_entry );
     87 			$sorted_entry = array_slice( $sorted_entry, -$max_entries );
     88 			$formatted_entries[ $key ]['count'] = count( $sorted_entry );
     89 			$formatted_entries[ $key ]['entries'] = implode( $sorted_entry );
     90 		}
     91 		return $formatted_entries;
     92 	}
     93 }