<?php
if (session_status() !== PHP_SESSION_ACTIVE) {
    session_start();
}
// Cihaz tipini tespit eden fonksiyon
function getDeviceType() {
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    if (strpos($userAgent, 'Mobile') !== false || strpos($userAgent, 'Tablet') !== false) {
        return 'Mobile';
    }
    return 'Desktop';
}
// Kullanıcı IP adresini tespit eden fonksiyon
function getVisitorIP() {
    return $_SERVER['REMOTE_ADDR'] ?? 'UNKNOWN';
}
// JSON dosyasından veri alır
function loadData($file) {
    if (!file_exists($file)) {
        return [
            'daily' => [], // Günlük veriler
            'urls' => [], // URL'lere göre hitler
            'devices' => ['Mobile' => ['total' => 0, 'unique' => 0], 'Desktop' => ['total' => 0, 'unique' => 0]], // Cihaz türleri
        ];
    }
    return json_decode(file_get_contents($file), true);
}
// Veriyi JSON dosyasına yazar
function saveData($file, $data) {
    file_put_contents($file, json_encode($data, JSON_PRETTY_PRINT));
}
// Eski günlük verileri temizler (1 hafta öncesini siler)
function removeOldDailyData(&$data) {
    $oneWeekAgo = new DateTime(date('Y-m-d', strtotime('-7 days')));
    foreach ($data['daily'] as $date => $stats) {
        $entryDate = new DateTime($date);
        if ($entryDate < $oneWeekAgo) { // Tarih kıyaslamasını DateTime ile yap
            unset($data['daily'][$date]);
        }
    }
}
// Günlük verileri günceller
function updateDailyVisits(&$data) {
    $currentDate = date('Y-m-d');
    if (!isset($data['daily'][$currentDate])) {
        $data['daily'][$currentDate] = ['total' => 0, 'unique' => 0];
    }
    $data['daily'][$currentDate]['total'] += 1;
    if (!isset($_SESSION['visited_daily'][$currentDate])) {
        $data['daily'][$currentDate]['unique'] += 1;
        $_SESSION['visited_daily'][$currentDate] = true; // Unique hit kontrolü
    }
}
// URL hitlerini günceller
function updatePageVisits(&$data, $currentPage) {
    if (!isset($data['urls'][$currentPage])) {
        $data['urls'][$currentPage] = ['total' => 0, 'unique' => 0];
    }
    $data['urls'][$currentPage]['total'] += 1;
    if (!isset($_SESSION['visited_urls'][$currentPage])) {
        $data['urls'][$currentPage]['unique'] += 1;
        $_SESSION['visited_urls'][$currentPage] = true; // Unique hit kontrolü
    }
}
// Cihaz türü verilerini günceller
function updateDeviceVisits(&$data, $deviceType) {
    if (!isset($data['devices'][$deviceType])) {
        $data['devices'][$deviceType] = ['total' => 0, 'unique' => 0];
    }
    $data['devices'][$deviceType]['total'] += 1;
    if (!isset($_SESSION['visited_devices'][$deviceType])) {
        $data['devices'][$deviceType]['unique'] += 1;
        $_SESSION['visited_devices'][$deviceType] = true; // Unique hit kontrolü
    }
}
// JSON dosyası adı
$dataFile = $_SERVER['DOCUMENT_ROOT'] . "/deppo/analytics.json";
// Veriyi yükle
$data = loadData($dataFile);
// Cihaz tipini tespit et
$deviceType = getDeviceType();
// Geçerli sayfa URL'si
$currentPage = $_SERVER['QUERY_STRING'];
if (empty($currentPage)) {
    $currentPage = "anasayfa";
}
// İzleme işlemi yapılıyorsa
if (empty($notrack)) {
    // Eski günlük verileri temizle
    removeOldDailyData($data);
    // Günlük verileri güncelle
    updateDailyVisits($data);
    // URL hitlerini güncelle
    updatePageVisits($data, $currentPage);
    // Cihaz verilerini güncelle
    updateDeviceVisits($data, $deviceType);
    // Veriyi kaydet
    saveData($dataFile, $data);
}
?>