Files
FreshRSS/app/Models/LogDAO.php
Luc SANCHEZ 0317683155 Add test and type hinting (#5087)
* - Add test and type hinting
- pass PhpStan Level 9

* fix dump

* fix style

* fix visibility

* fix style

* add test

* add test

* add test

* add test

* add test

* Simplify

* cleaning after test

* remove space

* fix style

* use specific log file for test

* Remarque's from Alkarex

* A few more details

---------

Co-authored-by: Luc <sanchezluc+freshrss@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2023-03-27 00:36:21 +02:00

39 lines
1.1 KiB
PHP

<?php
final class FreshRSS_LogDAO {
public static function logPath(?string $logFileName = null): string {
if ($logFileName === null || $logFileName === '') {
$logFileName = LOG_FILENAME;
}
return USERS_PATH . '/' . (Minz_User::name() ?? Minz_User::INTERNAL_USER) . '/' . $logFileName;
}
/** @return array<FreshRSS_Log> */
public static function lines(?string $logFileName = null): array {
$logs = [];
$handle = @fopen(self::logPath($logFileName), 'r');
if ($handle) {
while (($line = fgets($handle)) !== false) {
if (preg_match('/^\[([^\[]+)\] \[([^\[]+)\] --- (.*)$/', $line, $matches)) {
$myLog = new FreshRSS_Log();
$myLog->_date($matches[1]);
$myLog->_level($matches[2]);
$myLog->_info($matches[3]);
$logs[] = $myLog;
}
}
fclose($handle);
}
return array_reverse($logs);
}
public static function truncate(?string $logFileName = null): void {
file_put_contents(self::logPath($logFileName), '');
if (FreshRSS_Auth::hasAccess('admin')) {
file_put_contents(ADMIN_LOG, '');
file_put_contents(API_LOG, '');
file_put_contents(PSHB_LOG, '');
}
}
}