<?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, false); echo ('{"data": ' . json_encode ($log_data) . ', "max": ' . $pages_max . ', "page": ' . $page . '}');