LogDAO.php 1.1 KB

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