<?php
/**
 * Callback function for "Upload Additional Images" metabox.
 * 
 * @package Boxyfy
 * @param WP_Post $post The current post.
 */

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

function boxyfy_add_more_images_metabox_callback( $post ) {
	wp_nonce_field( 'boxyfy_add_more_images_metabox_nonce', 'boxyfy_add_more_images_metabox_nonce' );

	// Bild-IDs abrufen und sicherstellen, dass es sich um ein Array handelt.
	$image_ids = get_post_meta( $post->ID, '_tsprodukt_image_ids', true );
	if ( ! is_array( $image_ids ) ) {
		$image_ids = array();
	}
	?>
	<div id="tsprodukt_images_wrapper">
		<?php foreach ( $image_ids as $image_id ) : 
			$image_url = wp_get_attachment_thumb_url( $image_id );
		?>
			<div class="tsprodukt_image">
				<img src="<?php echo esc_url( $image_url ); ?>" alt="" />
				<input type="hidden" name="tsprodukt_image_ids[]" value="<?php echo esc_attr( $image_id ); ?>" />
				<a href="#" class="button tsprodukt_remove_image_button">
					<?php esc_html_e( 'Bild entfernen', 'boxyfy' ); ?>
				</a>
			</div>
		<?php endforeach; ?>
	</div>
	<p>
		<a href="#" id="tsprodukt_image_upload_button" class="button">
			<?php esc_html_e( 'Bilder hinzufügen', 'boxyfy' ); ?>
		</a>
	</p>
	<?php
}

/**
 * Speichert die Metadaten beim Speichern des Posts.
 *
 * @param int $post_id Die ID des Posts.
 * @return int Post-ID, falls kein Speichern erfolgen soll.
 */
function boxyfy_add_more_images_metabox_save( $post_id ) {
	// Überprüfung des Nonce.
	if ( ! isset( $_POST['boxyfy_add_more_images_metabox_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['boxyfy_add_more_images_metabox_nonce'] ) ), 'boxyfy_add_more_images_metabox_nonce' ) ) {
		return $post_id;
	}

	// Verhindert das Speichern während eines Autosaves.
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
		return $post_id;
	}

	// Überprüft die Benutzerberechtigung.
	if ( isset( $_POST['post_type'] ) && 'boxyfy_tsprodukte' === $_POST['post_type'] ) {
		if ( ! current_user_can( 'edit_post', $post_id ) ) {
			return $post_id;
		}
	}

	// Speichert die Bild-IDs, wenn vorhanden.
	if ( isset( $_POST['tsprodukt_image_ids'] ) && is_array( $_POST['tsprodukt_image_ids'] ) ) {
		$image_ids = array_map( 'intval', $_POST['tsprodukt_image_ids'] );
		update_post_meta( $post_id, '_tsprodukt_image_ids', $image_ids );
	} else {
		delete_post_meta( $post_id, '_tsprodukt_image_ids' );
	}

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

/**
 * Lädt die erforderlichen Media Library Skripte im Admin-Bereich.
 *
 * @param string $hook Der aktuelle Admin-Hook.
 */
function boxyfy_add_more_images_metabox_scripts( $hook ) {
	global $post;
	if ( ( 'post.php' === $hook || 'post-new.php' === $hook ) && isset( $post ) && 'boxyfy_tsprodukte' === $post->post_type ) {
		wp_enqueue_media();
	}
}
add_action( 'admin_enqueue_scripts', 'boxyfy_add_more_images_metabox_scripts' );