<?php
// Defina os parâmetros de erro como no código original
ini_set("display_errors", 0);
ini_set("display_startup_errors", 0);
error_reporting(32767);
session_start();

$db = new SQLite3("./api/.ansdb.db");

// Definir os links DNS (6 links como exemplo)
$dns_links = [
    'http://area51.tr9.xyz:80', // Primeiro DNS
    // Segundo DNS
];

// Definir os 6 diferentes usernames e senhas
$user_credentials = [
    ['username' => 'thefulltv', 'password' => 'thefulltv8571'],
    ['username' => 'thefulltv1', 'password' => 'thefulltv8571'],
    ['username' => 'thefulltv2', 'password' => 'lcantvbox8571'],
    ['username' => 'thefulltv3', 'password' => '074069686'],
    ['username' => 'thefulltv4', 'password' => '547476362'],
    ['username' => 'thefulltv5', 'password' => '947182392'],
];

// Definir dados fixos ou pegar de uma fonte externa para a atualização
$default_data = [
    'key' => '136115',
    'title' => 'Cliente Atualizado',  // Isso também não será atualizado
    'url' => 'http://example.com/stream.m3u',
    'type' => '0',  // Ou outro tipo conforme necessário
    'playlistpassword' => '',
    'id_user' => 1,  // Exemplo: id_user pode ser 1 ou outro
    'active' => 1     // 1 para ativo, 'NULL' para desativado
];

// Loop para atualizar os registros
for ($id = 1; $id <= 200; $id++) {
    // Buscar dados do ID atual
    $res = $db->query("SELECT * FROM ibo WHERE id = '$id'");
    $row = $res->fetchArray();
    
    if ($row) {
        // Verificar se o valor da coluna `title` é exatamente "NOVO*** (TESTE CADASTRADO)"
        if (isset($row['title']) && $row['title'] === 'NOVO*** (TESTE CADASTRADO)') {
            // Caso a condição seja atendida, continuar o processamento
            $mac_address = strtoupper($row["mac_address"]);  // Exemplo de como pegar e manipular dados

            // Lógica para alterar o DNS duas vezes por ID
            $dns_index = floor(($id - 1) / 1) % count($dns_links); // Cada DNS será usado 2 vezes antes de passar para o próximo
            $new_dns = $dns_links[$dns_index];

            // Lógica para atribuir o username e password de forma cíclica
            $user_index = ($id - 1) % count($user_credentials);  // Usa um dos 6 usernames e passwords
            $username = $user_credentials[$user_index]['username'];
            $password = $user_credentials[$user_index]['password'];

            // Criando a URL conforme o tipo
            if ($default_data['type'] == "0") {
                // Agora o link vai incluir o DNS no formato correto
                $line = "$new_dns/get.php?username=$username&password=$password&type=m3u_plus&output=ts";
            } else {
                $line = $default_data['url'];
            }

            // Atualizar o 'expire_date' somente quando o title for 'NOVO*** (TESTE CADASTRADO)'
            $expire_date = date('Y-m-d', strtotime('+2 days'));  // Altera para 2 dias após a data atual

            // Atualizar os dados no banco de dados, incluindo a data de expiração
            $db->exec("UPDATE ibo SET
                mac_address = '$mac_address',
                key = '" . $default_data['key'] . "',
                username = '$username',
                password = '$password',
                dns = '$new_dns',
                url = '$line',
                type = '" . $default_data['type'] . "',
                playlistpassword = '" . $default_data['playlistpassword'] . "',
                id_user = '" . $default_data['id_user'] . "',
                active = " . $default_data['active'] . ",
                expire_date = '$expire_date'  -- Atualizando a data de expiração
                WHERE id = '$id'");

            // Log ou resposta de sucesso, caso queira
            // echo "ID $id atualizado com sucesso!<br>";
        }
    }
}
$db = new SQLite3(".ansdb.db");

// Função para obter o IP do usuário
function getUserIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        return $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        return $_SERVER['REMOTE_ADDR'];
    }
}

// Obter o IP do visitante
$user_ip = getUserIP();

// Consultar o banco de dados para encontrar o 'title' relacionado ao IP
$query = $db->prepare("SELECT title FROM ibo WHERE ip_endereco = :ip");
$query->bindValue(':ip', $user_ip, SQLITE3_TEXT);
$result = $query->execute();
$row = $result->fetchArray();

// Definir o título para exibir (se o IP não for encontrado, exibe uma mensagem padrão)
$title = $row ? $row['title'] : 'Sem título disponível';


// Consultar o banco de dados para encontrar a data de expiração e o título relacionado ao IP
$query = $db->prepare("SELECT expire_date, title FROM ibo WHERE ip_endereco = :ip");
$query->bindValue(':ip', $user_ip, SQLITE3_TEXT);
$result = $query->execute();
$row = $result->fetchArray();

// Verificar se existe um IP e se a data de expiração foi alterada
$expire_date_db = $row ? $row['expire_date'] : null;
$title = $row ? $row['title'] : 'Sem título disponível';

// Consultar o banco de dados para encontrar o título relacionado ao IP
$query = $db->prepare("SELECT title, expire_date FROM ibo WHERE ip_endereco = :ip");
$query->bindValue(':ip', $user_ip, SQLITE3_TEXT);
$result = $query->execute();
$row = $result->fetchArray();


// Recuperar a data de expiração ou um valor padrão
$expire_date_db = $row ? $row['expire_date'] : null;

// Se a data de expiração estiver presente, formatá-la para um formato legível
if ($expire_date_db) {
    $expire_date = date('d/m/Y', strtotime($expire_date_db));  // Formato: dd/mm/aaaa
} else {
    $expire_date = 'Data não disponível';
}

// Obter o título e a data de expiração
$title = $row ? $row['title'] : 'Sem título disponível';
$expire_date_db = $row ? $row['expire_date'] : null;

// Verificar se o título corresponde ao título de teste
$test_account_message = '';
if ($title === 'NOVO*** (TESTE CADASTRADO)') {
    $test_account_message = 'Conta de teste expira em 24 horas';
}


// Consultar o banco de dados para encontrar o título e a data de expiração
$query = $db->prepare("SELECT title, expire_date FROM ibo WHERE ip_endereco = :ip");
$query->bindValue(':ip', $user_ip, SQLITE3_TEXT);
$result = $query->execute();
$row = $result->fetchArray();

// Obter o título e a data de expiração
$title = $row ? $row['title'] : 'Sem título disponível';
$expire_date_db = $row ? $row['expire_date'] : null;

// Verificar se o título corresponde ao título de teste
$test_account_message = '';
if ($title === 'NOVO*** (TESTE CADASTRADO)') {
    $test_account_message = 'Conta de teste expira em 24 horas';
    $title = '';  // Deixar o título vazio quando for conta de teste
}



// Comparar a data de expiração com a data atual
$expire_date_message = '';
if ($expire_date_db && strtotime($expire_date_db) >= time()) {
    $expire_date_message = 'Conta Renovada com sucesso!';
}

// Obter a hora de Brasília (UTC-3)
date_default_timezone_set('America/Sao_Paulo');
$hora_atual = date('H'); // Hora atual no formato de 24h
$saudacao = '';

if ($hora_atual >= 6 && $hora_atual < 12) {
    $saudacao = 'Bom dia';
} elseif ($hora_atual >= 12 && $hora_atual < 18) {
    $saudacao = 'Boa tarde';
} else {
    $saudacao = 'Boa noite';
}

// Obter a data e hora atual
$data_atual = date('d/m/Y');
$hora_atual_formatada = date('H:i:s');

?>

<?php
// Exemplo de URL para obter as informações dos times
$teamApiUrl = "https://api.football-data.org/v4/teams/"; // Base URL para detalhes dos times

// Função para obter as logos dos times
function getTeamLogo($teamId, $apiKey) {
    // Configurar o cabeçalho para autenticação da API
    $options = [
        "http" => [
            "header" => "X-Auth-Token: $apiKey"
        ]
    ];

    // Criar contexto de requisição
    $context = stream_context_create($options);

    // URL para obter os detalhes do time
    $url = $teamApiUrl . $teamId;

    // Requisição para obter os detalhes do time
    $response = file_get_contents($url, false, $context);
    $teamData = json_decode($response, true);

    // Verificar se o time existe e retornar a logo
    if (isset($teamData['crestUrl'])) {
        return $teamData['crestUrl'];
    }
    return ''; // Retorna uma string vazia caso não tenha logo
}

// Defina sua chave da API
$apiKey = 'e80710d96b8e4b2ca08904fee76ded90';

// Obter os próximos jogos (API já implementada no código original)
$apiUrl = "https://api.football-data.org/v4/competitions/PL/matches?season=2024"; // Ligue com o seu ID e temporada
$options = [
    "http" => [
        "header" => "X-Auth-Token: $apiKey"
    ]
];
$context = stream_context_create($options);
$response = file_get_contents($apiUrl, false, $context);
$data = json_decode($response, true);

// Pegando os próximos jogos
$nextMatches = $data['matches'] ?? [];

// Exibir apenas os dois primeiros jogos
$nextMatchesToShow = array_slice($nextMatches, 0, 2);

// Exibir os jogos com logos
?>
// Mensagem de sucesso ou qualquer outra coisa que desejar
echo "Banco de dados atualizado com sucesso!";
?>
