<?php
/**
 * Callback für die Bewertung-Metabox.
 *
 * @param WP_Post $post Der aktuelle Post.
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

function boxyfy_bewertung_callback( $post ) {
    // Sicherheits-Nonce
    wp_nonce_field( 'boxyfy_save_bewertung', 'boxyfy_bewertung_nonce' );

    // Bisher gespeicherte Bewertung abrufen
    $bewertung = get_post_meta( $post->ID, '_tsprodukt_bewertung', true );

    // Min-/Max-Werte für grün, gelb, rot
    $green_min  = get_option( 'boxyfy_green_rating_min', 80 );
    $green_max  = get_option( 'boxyfy_green_rating_max', 100 );
    $yellow_min = get_option( 'boxyfy_yellow_rating_min', 55 );
    $yellow_max = get_option( 'boxyfy_yellow_rating_max', 79 );
    $red_min    = get_option( 'boxyfy_red_rating_min', 0 );
    $red_max    = get_option( 'boxyfy_red_rating_max', 54 );

    echo '<p>' . esc_html__( 'Geben Sie die Bewertung (0 bis 100) ein:', 'boxyfy' ) . '</p>';
    echo '<input
            type="number"
            id="boxyfy_bewertung"
            name="boxyfy_bewertung"
            value="' . esc_attr( $bewertung ) . '"
            min="0"
            max="100"
            class="boxyfy-bewertung-input"
        >';

    // Link zur Einstellungsseite
    $settings_url = admin_url( 'edit.php?post_type=boxyfy_tsprodukte&page=boxyfy-settings' );
    /* translators: %s ist der Link zur Boxyfy-Einstellungsseite */
    echo '<p><strong>' . sprintf(
        esc_html__( 'Bewertungsskala: Boxyfy-Produkte → Einstellungen → Bewertung', 'boxyfy' ),
        esc_url( $settings_url )
    ) . '</strong></p>';

    echo '<p class="boxyfy-rating-scale boxyfy-rating-green">' . sprintf(
		/* translators: %1$s ist der Mindestwert, %2$s ist der Höchstwert für die grüne Bewertung */
        esc_html__( 'Grüne Bewertung: %1$s bis %2$s', 'boxyfy' ),
        esc_html( $green_min ),
        esc_html( $green_max )
    ) . '</p>';

    echo '<p class="boxyfy-rating-scale boxyfy-rating-yellow">' . sprintf(
		/* translators: %1$s ist der Mindestwert, %2$s ist der Höchstwert für die gelbe Bewertung */
        esc_html__( 'Gelbe Bewertung: %1$s bis %2$s', 'boxyfy' ),
        esc_html( $yellow_min ),
        esc_html( $yellow_max )
    ) . '</p>';

    echo '<p class="boxyfy-rating-scale boxyfy-rating-red">' . sprintf(
		/* translators: %1$s ist der Mindestwert, %2$s ist der Höchstwert für die rote Bewertung */
        esc_html__( 'Rote Bewertung: %1$s bis %2$s', 'boxyfy' ),
        esc_html( $red_min ),
        esc_html( $red_max )
    ) . '</p>';
}

/**
 * Speichert die Bewertung.
 *
 * @param int $post_id Die Post-ID.
 */
function boxyfy_save_bewertung( $post_id ) {
    // Verhindere unbeabsichtigte Speichervorgänge bei Autosaves.
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }

    // Überprüfe Benutzerberechtigung.
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }

    // Nonce-Überprüfung.
    if (
        ! isset( $_POST['boxyfy_bewertung_nonce'] ) ||
        ! wp_verify_nonce(
            sanitize_text_field( wp_unslash( $_POST['boxyfy_bewertung_nonce'] ) ),
            'boxyfy_save_bewertung'
        )
    ) {
        return;
    }

    // Bewertung speichern (nur wenn vorhanden)
    if ( isset( $_POST['boxyfy_bewertung'] ) ) {
        // Unsanitized holen und Integer erzeugen
        $bewertung = intval( wp_unslash( $_POST['boxyfy_bewertung'] ) );

        // Begrenzen auf Werte zwischen 0 und 100
        $bewertung = max( 0, min( 100, $bewertung ) );

        // Speichern
        update_post_meta( $post_id, '_tsprodukt_bewertung', $bewertung );
    } else {
        // Falls nichts eingegeben wurde, Meta-Feld löschen
        delete_post_meta( $post_id, '_tsprodukt_bewertung' );
    }
}
add_action( 'save_post', 'boxyfy_save_bewertung' );