Server IP : 104.21.14.48 / Your IP : 3.135.185.44 [ Web Server : Apache System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64 User : root ( 0) PHP Version : 8.0.30.2 Disable Function : NONE Domains : 0 Domains MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/wp-content/plugins/defender-security/src/component/logger/ |
Upload File : |
<?php /** * The log rotation class. * * @package WP_Defender\Component\Logger */ namespace WP_Defender\Component\Logger; use GlobIterator; use WP_Defender\Traits\IO; /** * Deals rotation log file naming & purging old logs. */ class Rotation_Logger implements Rotation_Logger_Interface { use IO; public const ROTATION_FREQUENCY = 7; public const ROTATION_UNIT = 'day'; /** * Class constructor to clear file status cache. */ public function __construct() { clearstatcache(); } /** * Generate a new filename with date suffix. * * @param string $filename Filename which requires date suffix. * * @return string Formatted date suffixed file name. */ public function generate_file_name( $filename ) { $file_parts = pathinfo( $filename ); $file_name = $file_parts['filename'] . wp_date( '-Y-m-d' ); $directory_path = $this->get_tmp_path(); $iterator = new GlobIterator( $directory_path . '/' . $file_name . '*' ); if ( file_exists( $iterator->getPathname() ) ) { $file_name = $iterator->getBasename(); } else { $file_name = uniqid( $file_name . '-' ); if ( ! empty( $file_parts['extension'] ) ) { $file_name .= '.' . $file_parts['extension']; } } return $file_name; } /** * Purge logs whose modified time exceeded the threshold limit. * * @param string $directory_path Pathname of the directory. * @param int $count A period as integer value. * @param string $unit A standard datetime relative format unit, like days or months. */ public function purge_old_log( $directory_path = '', $count = self::ROTATION_FREQUENCY, $unit = self::ROTATION_UNIT ) { $threshold_timestamp = strtotime( '-' . $count . $unit ); if ( empty( $directory_path ) ) { $directory_path = $this->get_tmp_path(); } $iterator = new GlobIterator( $directory_path . '/*.log' ); while ( $iterator->valid() ) { if ( $iterator->getMTime() < $threshold_timestamp ) { wp_delete_file( $iterator->getPathname() ); } $iterator->next(); } } /** * Invoke all init methods. */ public function init() { /** * Delete old logs rotationally. */ if ( ! wp_next_scheduled( 'wpdef_log_rotational_delete' ) ) { wp_schedule_event( time(), 'daily', 'wpdef_log_rotational_delete' ); } add_action( 'wpdef_log_rotational_delete', array( &$this, 'purge_old_log' ) ); } }