<?php
// Adspect + TikTok Events API Integration
// osmohor.shop - Germany TikTok Campaign - ViewContent Event

// TikTok Credentials (Germany Account)
$TIKTOK_PIXEL_ID = getenv('TIKTOK_PIXEL_ID') ?: 'D4CGBCJC77U4DODN3Q7G';
$TIKTOK_ACCESS_TOKEN = getenv('TIKTOK_ACCESS_TOKEN') ?: '2415146326cb44063136fb8ad0446670d502c00f';

// LOG FILE для отладки
$log_file = __DIR__ . '/tiktok-log.txt';

// ДИАГНОСТИКА: Всегда пишем в лог
$diag = "=== TIKTOK EVENTS API ДИАГНОСТИКА (GERMANY) ===\n";
$diag .= date('Y-m-d H:i:s') . " | Скрипт запущен\n";
$diag .= "IP: " . $_SERVER['REMOTE_ADDR'] . "\n";
$diag .= "URL: " . $_SERVER['REQUEST_URI'] . "\n";

// Извлекаем ttclid из URL (TikTok автоматически добавляет его)
$ttclid = $_GET['ttclid'] ?? '';
$diag .= "ttclid: " . ($ttclid ?: "НЕ НАЙДЕН") . "\n";

// ✅ РЕШЕНИЕ: Регистрируем функцию ДО filter.php
// Она проверит заголовки ПЕРЕД выходом из скрипта
register_shutdown_function(function() use ($TIKTOK_PIXEL_ID, $TIKTOK_ACCESS_TOKEN, $log_file, $diag, $ttclid) {
    
    // Проверяем заголовки на наличие Location (редирект)
    $headers = headers_list();
    $is_redirect = false;
    $redirect_url = '';
    
    foreach ($headers as $header) {
        if (stripos($header, 'Location:') === 0) {
            $is_redirect = true;
            $redirect_url = trim(substr($header, 9));
            break;
        }
    }
    
    // Дополняем диагностику
    $diag_complete = $diag;
    $diag_complete .= "Redirect: " . ($is_redirect ? "YES → $redirect_url" : "NO") . "\n";
    $diag_complete .= "==================\n\n";
    @file_put_contents($log_file, $diag_complete, FILE_APPEND);
    
    // Если есть редирект = реальный пользователь! Отправляем TikTok Events API
    if ($is_redirect) {
        
        // Prepare TikTok Events API payload
        $event_data = [
            'event_source' => 'web',
            'event_source_id' => $TIKTOK_PIXEL_ID,
            'data' => [[
                'event' => 'ViewContent',
                'event_time' => time(),
                'event_id' => 'view_' . uniqid(),
                'user' => [
                    'ttclid' => $ttclid ?: null,
                    'ip' => $_SERVER['REMOTE_ADDR'],
                    'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '',
                ],
                'page' => [
                    'url' => 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
                ],
                'properties' => [
                    'content_type' => 'product',
                    'content_name' => 'Gesundheit News Deutschland',
                ],
            ]],
        ];
        
        // Логируем попытку отправки
        $log_entry = date('Y-m-d H:i:s') . " | REDIRECT DETECTED! SENDING ViewContent | IP: " . $_SERVER['REMOTE_ADDR'] . " | Money Page: $redirect_url\n";
        $log_entry .= "ttclid: " . ($ttclid ?: "MISSING") . "\n";
        @file_put_contents($log_file, $log_entry, FILE_APPEND);
        
        // Отправляем TikTok Events API асинхронно
        $ch = curl_init("https://business-api.tiktok.com/open_api/v1.3/event/track/");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($event_data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/json',
            'Access-Token: ' . $TIKTOK_ACCESS_TOKEN,
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 2); // 2 секунды - быстро!
        curl_setopt($ch, CURLOPT_NOSIGNAL, 1); // Асинхронно
        
        $response = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $curl_error = curl_error($ch);
        curl_close($ch);
        
        // Логируем результат
        if ($http_code == 200) {
            $result = json_decode($response, true);
            $code = $result['code'] ?? -1;
            $message = $result['message'] ?? 'Unknown';
            
            if ($code === 0) {
                $log_entry = date('Y-m-d H:i:s') . " | TIKTOK SUCCESS ✅ | Message: $message | Response: " . $response . "\n\n";
            } else {
                $log_entry = date('Y-m-d H:i:s') . " | TIKTOK ERROR ❌ | Code: $code | Message: $message | Response: " . $response . "\n\n";
            }
        } else {
            $log_entry = date('Y-m-d H:i:s') . " | TIKTOK HTTP ERROR ❌ | HTTP: $http_code | cURL Error: $curl_error | Response: " . $response . "\n\n";
        }
        @file_put_contents($log_file, $log_entry, FILE_APPEND);
    }
});

// Load Adspect filter (будет делать редирект если реальный пользователь)
$filter_file = __DIR__ . '/filter.php';
if (!file_exists($filter_file)) {
    die('ERROR: filter.php not found');
}

require_once $filter_file;

// Если дошли сюда = бот, показываем safe page
$safe_page = __DIR__ . '/index.html';
if (file_exists($safe_page)) {
    header('Content-Type: text/html; charset=UTF-8');
    header('Cache-Control: no-cache, no-store, must-revalidate');
    header('Pragma: no-cache');
    header('Expires: 0');
    readfile($safe_page);
    exit;
}
?>
