| @@ -0,0 +1,66 @@ | |||||
| <?php | |||||
| const LOG_PATH = '../log.txt'; | |||||
| header ('Content-Type: application/json; charset=UTF-8'); | |||||
| $log_data = []; | |||||
| $page = (int) (filter_input (INPUT_POST, 'p') ?? 1); | |||||
| $length = (int) (filter_input (INPUT_POST, 'max') ?? 20); | |||||
| $asc = (int) (filter_input (INPUT_POST, 'asc') ?? 0) !== 0; | |||||
| $keyword = trim (filter_input (INPUT_POST, 'q') ?? ''); | |||||
| $date_start = filter_input (INPUT_POST, 'start'); | |||||
| $date_end = filter_input (INPUT_POST, 'end'); | |||||
| $f = fopen (LOG_PATH, 'r'); | |||||
| if ($f !== false) | |||||
| { | |||||
| while (($dt = fgetcsv ($f, 0, "\t")) !== false) | |||||
| { | |||||
| $chat_info = json_decode ($dt[1]); | |||||
| $log_data[] = ['dateTime' => $dt[0], | |||||
| 'chatIcon' => $chat_info -> author -> imageUrl, | |||||
| 'chatName' => htmlspecialchars ($chat_info -> author -> name), | |||||
| 'chatMessage' => htmlspecialchars ($chat_info -> message), | |||||
| 'answer' => htmlspecialchars ($dt[2])]; | |||||
| } | |||||
| } | |||||
| fclose ($f); | |||||
| unset ($f); | |||||
| if ($keyword !== '') | |||||
| { | |||||
| $log_data = array_filter ($log_data, fn ($row) => ( | |||||
| strpos (($row['chatName'] . "\n" . $row['chatMessage'] . "\n" | |||||
| . $row['answer']), | |||||
| $keyword) | |||||
| !== false)); | |||||
| } | |||||
| if ($date_start) | |||||
| { | |||||
| $log_data = array_filter ($log_data, fn ($row) => ( | |||||
| substr ($row['dateTime'], 0, 10) >= $date_start)); | |||||
| } | |||||
| if ($date_end) | |||||
| { | |||||
| $log_data = array_filter ($log_data, fn ($row) => ( | |||||
| substr ($row['dateTime'], 0, 10) <= $date_end)); | |||||
| } | |||||
| $pages_max = (int) ((count ($log_data) - 1) / $length) + 1; | |||||
| if (!($asc)) | |||||
| $log_data = array_reverse ($log_data); | |||||
| $log_data = array_slice ($log_data, ($page - 1) * $length, $length, true); | |||||
| echo json_encode ($log_data); | |||||