<?php
function get_coordinates_from_place($place) {
    // Deinen OpenCage API-Schlüssel hier einfügen
    $api_key = "009af0adef2543018ed58d3f58ef195f";  // Ersetze "DEIN_API_KEY" mit deinem tatsächlichen API-Schlüssel
    $url = "https://api.opencagedata.com/geocode/v1/json?q=" . urlencode($place) . "&key=" . $api_key;

    // API-Anfrage durchführen
    $response = file_get_contents($url);
    $data = json_decode($response, true);

    if ($data && isset($data['results'][0])) {
        // Koordinaten extrahieren
        $lat = $data['results'][0]['geometry']['lat'];
        $lon = $data['results'][0]['geometry']['lng'];
        return array('lat' => $lat, 'lon' => $lon);
    } else {
        return null;
    }
}

function calculate_ascendant($birth_date, $birth_time, $place) {
    // Geocoding durchführen, um den Geburtsort in Koordinaten zu erhalten
    $coordinates = get_coordinates_from_place($place);
    
    if ($coordinates === null) {
        return "Fehler bei der Geocodierung des Ortes.";
    }

    $lat = $coordinates['lat'];
    $lon = $coordinates['lon'];
    
    // Datum und Zeit des Geburtstags
    $datetime = new DateTime("$birth_date $birth_time");
    $timestamp = $datetime->getTimestamp();
    
    // Der Zeitzonen-Offset wird hier manuell gesetzt. Du kannst auch eine API oder andere Methoden verwenden, um dies zu berechnen.
    $tz_offset = 1; // Beispiel: für Mitteleuropäische Zeit (MEZ)
    $datetime->modify("-$tz_offset hours"); // Umwandlung in UTC
    
    // Berechnungen zur Bestimmung des Aszendenten (Beispielcode)
    $julian_day = gregoriantojd($datetime->format('m'), $datetime->format('d'), $datetime->format('Y')) + ($datetime->format('H') + $datetime->format('i') / 60) / 24;
    
    $asc_degree = fmod(($julian_day * 360 / 365.25) + 90, 360);
    $asc_sign = floor($asc_degree / 30);
    $asc_min = fmod($asc_degree, 30);
    
    $signs = ["Widder", "Stier", "Zwillinge", "Krebs", "Löwe", "Jungfrau", "Waage", "Skorpion", "Schütze", "Steinbock", "Wassermann", "Fische"];
    $asc_sign_name = $signs[$asc_sign];
    
    return "$asc_sign_name " . intval($asc_min) . "°" . intval(($asc_min - intval($asc_min)) * 60) . "'";
}

// Beispiel: Geburt in Berlin am 1. Januar 2000 um 12:00
$birth_date = "2000-01-01";
$birth_time = "12:00";
$place = "Berlin";

echo calculate_ascendant($birth_date, $birth_time, $place);
?>