balmet.com

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

db.php (1030B)


      1 <?php
      2 namespace Elementor\Core\Logger\Loggers;
      3 
      4 use Elementor\Core\Logger\Items\Log_Item_Interface as Log_Item;
      5 
      6 if ( ! defined( 'ABSPATH' ) ) {
      7 	exit; // Exit if accessed directly
      8 }
      9 
     10 class Db extends Base {
     11 
     12 	public function save_log( Log_Item $item ) {
     13 		$log = $this->maybe_truncate_log();
     14 
     15 		$id = $item->get_fingerprint();
     16 
     17 		if ( empty( $log[ $id ] ) ) {
     18 			$log[ $id ] = $item;
     19 		}
     20 
     21 		$log[ $id ]->increase_times( $item );
     22 
     23 		update_option( self::LOG_NAME, $log, 'no' );
     24 	}
     25 
     26 	public function clear() {
     27 		delete_option( self::LOG_NAME );
     28 	}
     29 
     30 	private function maybe_truncate_log() {
     31 		/** @var Log_Item[] $log */
     32 		$log = $this->get_log();
     33 
     34 		if ( Log_Item::MAX_LOG_ENTRIES < count( $log ) ) {
     35 			$log = array_slice( $log, -Log_Item::MAX_LOG_ENTRIES );
     36 		}
     37 
     38 		return $log;
     39 	}
     40 
     41 	public function get_log() {
     42 		// Clear cache.
     43 		wp_cache_delete( self::LOG_NAME, 'options' );
     44 
     45 		$log = get_option( self::LOG_NAME, [] );
     46 
     47 		// In case the DB log is corrupted.
     48 		if ( ! is_array( $log ) ) {
     49 			$log = [];
     50 		}
     51 
     52 		return $log;
     53 	}
     54 }