From 4a122927dc845da27b90a85dc28af4895a0e8348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Fri, 20 Jun 2014 16:51:08 +0200 Subject: [PATCH] improved mc logs folder cleaning --- application/core/Files/FileUtil.php | 32 +++++++++++++++++++---------- application/core/Logger.php | 13 ++++++++++++ 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/application/core/Files/FileUtil.php b/application/core/Files/FileUtil.php index ec27a9f5..0a376e02 100644 --- a/application/core/Files/FileUtil.php +++ b/application/core/Files/FileUtil.php @@ -161,30 +161,40 @@ abstract class FileUtil { } /** - * Delete old ManiaControl Log Files + * Clean the given directory by deleting old files * - * @param float $maxFileAgeInDays + * @param string $directory + * @param float $maxFileAgeInDays + * @param bool $recursive * @return bool */ - public static function deleteOldLogFiles($maxFileAgeInDays = 10.) { - $logsFolderPath = Logger::getLogsFolder(); - if (!is_readable($logsFolderPath)) { + public static function cleanDirectory($directory, $maxFileAgeInDays = 10., $recursive = false) { + if (!is_dir($directory) || !is_readable($directory)) { return false; } - $dirHandle = opendir($logsFolderPath); + $dirHandle = opendir($directory); if (!is_resource($dirHandle)) { return false; } $time = time(); while ($fileName = readdir($dirHandle)) { - $filePath = $logsFolderPath . $fileName; + $filePath = $directory . $fileName; if (!is_readable($filePath)) { continue; } - $fileModTime = filemtime($filePath); - $timeDeltaDays = ($time - $fileModTime) / (24. * 3600.); - if ($timeDeltaDays > $maxFileAgeInDays) { - unlink($filePath); + if (is_dir($filePath) && $recursive) { + // Directory + self::cleanDirectory($filePath . DIRECTORY_SEPARATOR, $maxFileAgeInDays, $recursive); + } else if (is_file($filePath)) { + // File + if (!is_writable($filePath)) { + continue; + } + $fileModTime = filemtime($filePath); + $timeDeltaDays = ($time - $fileModTime) / (24. * 3600.); + if ($timeDeltaDays > $maxFileAgeInDays) { + unlink($filePath); + } } } closedir($dirHandle); diff --git a/application/core/Logger.php b/application/core/Logger.php index 547a9a10..54fd179c 100644 --- a/application/core/Logger.php +++ b/application/core/Logger.php @@ -2,6 +2,8 @@ namespace ManiaControl; +use ManiaControl\Files\FileUtil; + /** * ManiaControl Logger Class * @@ -16,6 +18,7 @@ class Logger { */ public static function setup() { self::setupErrorLogFileName(); + self::cleanLogsFolder(); } /** @@ -54,6 +57,16 @@ class Logger { return $logsFolder; } + /** + * Delete old ManiaControl Log Files + * + * @return bool + */ + private static function cleanLogsFolder() { + $logsFolderPath = self::getLogsFolder(); + return FileUtil::cleanDirectory($logsFolderPath); + } + /** * Log and echo the given Error Message *