LogDAO.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. declare(strict_types=1);
  3. final class FreshRSS_LogDAO {
  4. public static function logPath(?string $logFileName = null): string {
  5. if ($logFileName === null || $logFileName === '') {
  6. $logFileName = LOG_FILENAME;
  7. }
  8. return USERS_PATH . '/' . (Minz_User::name() ?? Minz_User::INTERNAL_USER) . '/' . $logFileName;
  9. }
  10. /** @return array<FreshRSS_Log> */
  11. public static function lines(?string $logFileName = null): array {
  12. $logs = [];
  13. $handle = @fopen(self::logPath($logFileName), 'r');
  14. if ($handle) {
  15. while (($line = fgets($handle)) !== false) {
  16. if (preg_match('/^\[([^\[]+)\] \[([^\[]+)\] --- (.*)$/', $line, $matches)) {
  17. $myLog = new FreshRSS_Log();
  18. $myLog->_date($matches[1]);
  19. $myLog->_level($matches[2]);
  20. $myLog->_info($matches[3]);
  21. $logs[] = $myLog;
  22. }
  23. }
  24. fclose($handle);
  25. }
  26. return array_reverse($logs);
  27. }
  28. public static function truncate(?string $logFileName = null): void {
  29. file_put_contents(self::logPath($logFileName), '');
  30. if (FreshRSS_Auth::hasAccess('admin')) {
  31. file_put_contents(ADMIN_LOG, '');
  32. file_put_contents(API_LOG, '');
  33. file_put_contents(PSHB_LOG, '');
  34. }
  35. }
  36. }