<?php
/**
 * Callback-Funktion für die Metabox „Weitere Preise“.
 *
 * @package Boxyfy
 */

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

function boxyfy_weitere_preise_metabox_callback( $post ) {

	$preise = get_post_meta( $post->ID, 'boxyfy_weitere_preise', true );
	if ( ! is_array( $preise ) ) {
		$preise = array();
	}

	wp_nonce_field( 'boxyfy_weitere_preise_action', 'boxyfy_weitere_preise_nonce' );
	?>
	<div id="preis-felder-wrapper">
		<?php foreach ( $preise as $index => $preis_feld ) : ?>
			<div class="preis-felder">
				<div class="preis-felder-header">
					<span>
						<?php
						echo ! empty( $preis_feld['shop'] )
							? esc_html( $preis_feld['shop'] )
							: sprintf(
								/* translators: %d is the price index (e.g. 1, 2, 3...) */
								esc_html__( 'Preis %d', 'boxyfy' ),
								absint( $index + 1 )
							);
						?>
					</span>
					<span class="icon">+</span>
				</div>

				<div class="preis-felder-content">
					<p>
						<strong><?php esc_html_e( 'Eingabeformat für Preise mit Komma:', 'boxyfy' ); ?></strong>
						<i><?php esc_html_e( 'z. B.: 0,89 | 4,79 | 469,99 | 1259,95', 'boxyfy' ); ?><br><br>
						<?php esc_html_e( 'Bitte keine Punkte eingeben. Lediglich das Komma für Nachkommastellen. Ganze Preise wie 4 € können z. B. mit 4 oder 4,00 eingegeben werden.', 'boxyfy' ); ?></i>
					</p>

					<label><?php esc_html_e( 'Preis:', 'boxyfy' ); ?></label><br>
					<input type="text"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][preis]"
						value="<?php echo esc_attr( $preis_feld['preis'] ); ?>" /><br>

					<label><?php esc_html_e( 'Shop:', 'boxyfy' ); ?></label><br>
					<input type="text"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][shop]"
						value="<?php echo esc_attr( $preis_feld['shop'] ); ?>" /><br>

					<label><?php esc_html_e( 'Link:', 'boxyfy' ); ?></label><br>
					<input type="text"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][link]"
						value="<?php echo esc_attr( $preis_feld['link'] ); ?>" /><br>

					<label><?php esc_html_e( 'Logo:', 'boxyfy' ); ?></label><br>
					<input type="hidden"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][logo]"
						class="logo-field"
						value="<?php echo esc_attr( $preis_feld['logo'] ); ?>" />
					<button type="button" class="button upload-logo-button">
						<?php esc_html_e( 'Logo auswählen', 'boxyfy' ); ?>
					</button><br>
					<img src="<?php echo esc_url( $preis_feld['logo'] ); ?>"
						class="logo-preview <?php echo $preis_feld['logo'] ? '' : 'hidden'; ?>" /><br><br>

					<label><?php esc_html_e( 'Rabatt / Coupon-Angaben:', 'boxyfy' ); ?></label><br>
					<input type="text"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][rabatt]"
						value="<?php echo esc_attr( $preis_feld['rabatt'] ); ?>" /><br>

					<label><?php esc_html_e( 'Versandkosten (inkl.):', 'boxyfy' ); ?></label><br>
					<input type="text"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][inkl_versandkosten]"
						value="<?php echo esc_attr( $preis_feld['inkl_versandkosten'] ?? '' ); ?>"
						placeholder="<?php esc_attr_e( 'z. B. 4,99', 'boxyfy' ); ?>" /><br>

					<label><?php esc_html_e( 'Versandkosten (zzgl.):', 'boxyfy' ); ?></label><br>
					<input type="text"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][zzgl_versandkosten]"
						value="<?php echo esc_attr( $preis_feld['zzgl_versandkosten'] ?? '' ); ?>"
						placeholder="<?php esc_attr_e( 'z. B. 4,99', 'boxyfy' ); ?>" /><br>

					<input type="checkbox"
						name="boxyfy_weitere_preise[<?php echo absint( $index ); ?>][versandkosten_kostenfrei]"
						value="1"
						<?php checked( isset( $preis_feld['versandkosten_kostenfrei'] ) ? $preis_feld['versandkosten_kostenfrei'] : '', '1' ); ?> />
					<label><?php esc_html_e( 'Kostenfreie Lieferung', 'boxyfy' ); ?></label><br>

					<button type="button" class="save-preis-btn">
						<?php esc_html_e( 'Preis speichern', 'boxyfy' ); ?>
					</button>
					<button type="button" class="remove-preis-btn">
						<?php esc_html_e( 'Preis entfernen', 'boxyfy' ); ?>
					</button>
				</div>
			</div>
		<?php endforeach; ?>
	</div>

	<button type="button" id="add-preis-btn">
		<?php esc_html_e( 'Weiteren Preis anlegen', 'boxyfy' ); ?>
	</button>
	<?php
}

/**
 * Speichert die Metadaten der „Weitere Preise“-Metabox.
 *
 * @param int $post_id Post-ID.
 */
function boxyfy_save_weitere_preise_metabox( $post_id ) {

	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
		return $post_id;
	}
	if ( ! current_user_can( 'edit_post', $post_id ) ) {
		return $post_id;
	}
	if ( 'boxyfy_tsprodukte' !== get_post_type( $post_id ) ) {
		return $post_id;
	}
	if (
		! isset( $_POST['boxyfy_weitere_preise_nonce'] )
		|| ! wp_verify_nonce(
			sanitize_text_field( wp_unslash( $_POST['boxyfy_weitere_preise_nonce'] ) ),
			'boxyfy_weitere_preise_action'
		)
	) {
		return $post_id;
	}

	$preise_sanitized = array();

	if ( isset( $_POST['boxyfy_weitere_preise'] ) && is_array( $_POST['boxyfy_weitere_preise'] ) ) {

		$raw_preise = map_deep( wp_unslash( $_POST['boxyfy_weitere_preise'] ), 'sanitize_text_field' );

		foreach ( $raw_preise as $preis ) {
			$preise_sanitized[] = array(
				'preis'                    => $preis['preis'] ?? '',
				'shop'                     => $preis['shop'] ?? '',
				'link'                     => esc_url_raw( $preis['link'] ?? '' ),
				'logo'                     => esc_url_raw( $preis['logo'] ?? '' ),
				'rabatt'                   => $preis['rabatt'] ?? '',
				'inkl_versandkosten'       => $preis['inkl_versandkosten'] ?? '',
				'zzgl_versandkosten'       => $preis['zzgl_versandkosten'] ?? '',
				'versandkosten_kostenfrei' => ! empty( $preis['versandkosten_kostenfrei'] ) ? '1' : '',
			);
		}

		update_post_meta( $post_id, 'boxyfy_weitere_preise', $preise_sanitized );

	} else {
		delete_post_meta( $post_id, 'boxyfy_weitere_preise' );
	}

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