<?php

if ($_SERVER['HTTP_HOST'] === 'nizika.monster')
  header ('location: //nizika.tv');

const LOG_PATH = './log.txt';

$log_data = [];

$page = (int) ($_GET['p'] ?? 1);
$length = (int) ($_GET['max'] ?? 20);
$asc = ($_GET['asc'] ?? 0) != 0;
$keyword = trim ($_GET['q'] ?? '');
$escaped = ($_GET['escaped'] ?? 0) != 0;

$date_start = ($_GET['start'] ?? null) ?: null;
$date_end = ($_GET['end'] ?? null) ?: null;

$f = fopen (LOG_PATH, 'r');

if ($f !== false)
  {
    while (($dt = fgetcsv ($f, 0, "\t")) !== false)
      {
        $chat_info = json_decode ($dt[1]);

        $log_data[] = ['date_time'    => $dt[0],
                       'chat_icon'    => $chat_info -> author -> imageUrl,
                       'chat_name'    => $escaped ? htmlspecialchars ($chat_info -> author -> name) : $chat_info -> author -> name,
                       'chat_message' => $escaped ? htmlspecialchars ($chat_info -> message) : $chat_info -> message,
                       'answer'       => $escaped ? htmlspecialchars ($dt[2]) : $dt[2]];
      }
  }

fclose ($f);

unset ($f);

if ($keyword != '')
  {
    $log_data = array_filter ($log_data, fn ($row) => (
        strpos ($row['chat_name'] . "\n" . $row['chat_message'] . "\n" . $row['answer'],
                $keyword)
        !== false));
  }

if ($date_start)
  {
    $log_data = array_filter ($log_data, fn ($row) => (
        substr ($row['date_time'], 0, 10) >= $date_start));
  }

if ($date_end)
  {
    $log_data = array_filter ($log_data, fn ($row) => (
        substr ($row['date_time'], 0, 10) <= $date_end));
  }

$pages_max = (int) ((count ($log_data) - 1) / $length) + 1;

if (!($asc))
  $log_data = array_reverse ($log_data);

require_once './index.frm.php';