<?php
/**
 * Callback-Funktion für die Metabox „Vor- und Nachteile“.
 *
 * @package Boxyfy
 * @param WP_Post $post Aktueller Post.
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Safety first.
}

function boxyfy_vor_nachteile_metabox_callback( $post ) {

	// Nonce.
	wp_nonce_field( 'boxyfy_vor_nachteile_nonce', 'boxyfy_vor_nachteile_nonce' );

	// Bestehende Daten holen.
	$vorteile  = get_post_meta( $post->ID, 'boxyfy_produkt_vorteile', true );
	$nachteile = get_post_meta( $post->ID, 'boxyfy_produkt_nachteile', true );

	$vorteile  = is_array( $vorteile )  ? $vorteile  : array();
	$nachteile = is_array( $nachteile ) ? $nachteile : array();
	?>
	<div id="vorteil-felder-wrapper">
		<h3><?php esc_html_e( 'Vorteile anlegen', 'boxyfy' ); ?></h3>

		<?php foreach ( $vorteile as $index => $vorteil ) : ?>
			<div class="vor-nachteil-felder">
				<div class="vor-nachteil-felder-header">
					<span class="feld-title">
						<?php
							printf(
								/* translators: %d = running number */
								esc_html__( 'Vorteil %d', 'boxyfy' ),
								absint( $index + 1 )
							);
						?>
					</span>
					<span class="icon">+</span>
				</div>

				<div class="vor-nachteil-felder-content">
					<label for="boxyfy_produkt_vorteil_<?php echo absint( $index ); ?>">
						<?php esc_html_e( 'Vorteil:', 'boxyfy' ); ?>
					</label><br>
					<input type="text"
						id="boxyfy_produkt_vorteil_<?php echo absint( $index ); ?>"
						name="boxyfy_produkt_vorteile[<?php echo absint( $index ); ?>]"
						value="<?php echo esc_attr( $vorteil ); ?>" />

					<button type="button" class="remove-feld-btn">
						<?php esc_html_e( 'Vorteil entfernen', 'boxyfy' ); ?>
					</button>
				</div>
			</div>
		<?php endforeach; ?>
	</div>

	<button type="button" id="add-vorteil-btn" class="add-vorteil-btn">
		<?php esc_html_e( 'Weiteren Vorteil hinzufügen', 'boxyfy' ); ?>
	</button>

	<hr />

	<div id="nachteil-felder-wrapper">
		<h3><?php esc_html_e( 'Nachteile anlegen', 'boxyfy' ); ?></h3>

		<?php foreach ( $nachteile as $index => $nachteil ) : ?>
			<div class="vor-nachteil-felder">
				<div class="vor-nachteil-felder-header">
					<span class="feld-title">
						<?php
							printf(
								/* translators: %d = running number */
								esc_html__( 'Nachteil %d', 'boxyfy' ),
								absint( $index + 1 )
							);
						?>
					</span>
					<span class="icon">+</span>
				</div>

				<div class="vor-nachteil-felder-content">
					<label for="boxyfy_produkt_nachteil_<?php echo absint( $index ); ?>">
						<?php esc_html_e( 'Nachteil:', 'boxyfy' ); ?>
					</label><br>
					<input type="text"
						id="boxyfy_produkt_nachteil_<?php echo absint( $index ); ?>"
						name="boxyfy_produkt_nachteile[<?php echo absint( $index ); ?>]"
						value="<?php echo esc_attr( $nachteil ); ?>" />

					<button type="button" class="remove-feld-btn">
						<?php esc_html_e( 'Nachteil entfernen', 'boxyfy' ); ?>
					</button>
				</div>
			</div>
		<?php endforeach; ?>
	</div>

	<button type="button" id="add-nachteil-btn" class="add-nachteil-btn">
		<?php esc_html_e( 'Weiteren Nachteil hinzufügen', 'boxyfy' ); ?>
	</button>
	<?php
}

/**
 * Speichert Vor- und Nachteile.
 *
 * @param int $post_id Post-ID.
 * @return int
 */
function boxyfy_save_vor_nachteile( $post_id ) {

	// Nonce-Prüfung.
	if (
		! isset( $_POST['boxyfy_vor_nachteile_nonce'] ) ||
		! wp_verify_nonce(
			sanitize_text_field( wp_unslash( $_POST['boxyfy_vor_nachteile_nonce'] ) ),
			'boxyfy_vor_nachteile_nonce'
		)
	) {
		return $post_id;
	}

	// Autosave & Rechte-Checks.
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
		return $post_id;
	}
	if ( 'boxyfy_tsprodukte' === ( $_POST['post_type'] ?? '' ) && ! current_user_can( 'edit_post', $post_id ) ) {
		return $post_id;
	}

	// Vorteile.
	$vorteile_raw = isset( $_POST['boxyfy_produkt_vorteile'] ) && is_array( $_POST['boxyfy_produkt_vorteile'] )
		? array_map( 'sanitize_text_field', wp_unslash( $_POST['boxyfy_produkt_vorteile'] ) )
		: array();

	$vorteile = array_filter( $vorteile_raw, static function ( $item ) {
		return ! empty( trim( $item ) );
	});

	if ( empty( $vorteile ) ) {
		delete_post_meta( $post_id, 'boxyfy_produkt_vorteile' );
	} else {
		update_post_meta( $post_id, 'boxyfy_produkt_vorteile', $vorteile );
	}

	// Nachteile.
	$nachteile_raw = isset( $_POST['boxyfy_produkt_nachteile'] ) && is_array( $_POST['boxyfy_produkt_nachteile'] )
		? array_map( 'sanitize_text_field', wp_unslash( $_POST['boxyfy_produkt_nachteile'] ) )
		: array();

	$nachteile = array_filter( $nachteile_raw, static function ( $item ) {
		return ! empty( trim( $item ) );
	});

	if ( empty( $nachteile ) ) {
		delete_post_meta( $post_id, 'boxyfy_produkt_nachteile' );
	} else {
		update_post_meta( $post_id, 'boxyfy_produkt_nachteile', $nachteile );
	}

	return $post_id;
}
add_action( 'save_post', 'boxyfy_save_vor_nachteile' );