Server : Apache System : Linux ls31.server.ly 3.10.0-962.3.2.lve1.5.68.el7.x86_64 #1 SMP Wed Apr 6 11:12:23 UTC 2022 x86_64 User : medchoco ( 2906) PHP Version : 8.3.16 Disable Function : mail Directory : /home/medchoco/www/wp-content/plugins/mailchimp-for-wp/includes/ |
Upload File : |
<?php /** * Class MC4WP_Debug_Log_Reader */ class MC4WP_Debug_Log_Reader { /** * @var resource|null */ private $handle; /** * @var string */ private static $regex = '/^(\[[\d \-\:]+\]) (\w+\:) (.*)$/S'; /** * @var string */ private static $html_template = '<span class="time">$1</span> <span class="level">$2</span> <span class="message">$3</span>'; /** * @var string The log file location. */ private $file; /** * MC4WP_Debug_Log_Reader constructor. * * @param $file */ public function __construct( $file ) { $this->file = $file; } /** * @return string */ public function all() { return file_get_contents( $this->file ); } /** * Sets file pointer to $n of lines from the end of file. * * @param int $n */ private function seek_line_from_end( $n ) { $line_count = 0; // get line count while ( ! feof( $this->handle ) ) { fgets( $this->handle ); ++$line_count; } // rewind to beginning rewind( $this->handle ); // calculate target $target = $line_count - $n; $target = $target > 1 ? $target : 1; // always skip first line because oh PHP header $current = 0; // keep reading until we're at target while ( $current < $target ) { fgets( $this->handle ); ++$current; } } /** * @return string|null */ public function read() { // open file if not yet opened if ( ! is_resource( $this->handle ) ) { // doesn't exist? if ( ! file_exists( $this->file ) ) { return null; } $this->handle = @fopen( $this->file, 'r' ); // unable to read? if ( ! is_resource( $this->handle ) ) { return null; } // set pointer to 1000 files from EOF $this->seek_line_from_end( 1000 ); } // stop reading once we're at the end if ( feof( $this->handle ) ) { fclose( $this->handle ); $this->handle = null; return null; } // read line, up to 8kb $text = fgets( $this->handle ); // strip tags & trim $text = strip_tags( $text ); $text = trim( $text ); return $text; } /** * @return string */ public function read_as_html() { $line = $this->read(); // null means end of file if ( is_null( $line ) ) { return null; } // empty string means empty line, but not yet eof if ( empty( $line ) ) { return ''; } $line = preg_replace( self::$regex, self::$html_template, $line ); return $line; } /** * Reads X number of lines. * * If $start is negative, reads from end of log file. * * @param int $start * @param int $number * @return string */ public function lines( $start, $number ) { $handle = fopen( $start, 'r' ); $lines = ''; $current_line = 0; while ( $current_line < $number ) { $lines .= fgets( $handle ); } fclose( $handle ); return $lines; } }