<?php

namespace Pixalia\ImageAssistant\Service;

use WP_Error;

/**
 * ImageAttacher Class
 */
class ImageAttacher {

	/**
	 * URLから画像をダウンロードし、指定された投稿のアイキャッチ画像として設定します。
	 *
	 * @param string $image_url ダウンロードする画像のURL
	 * @param int    $post_id   アイキャッチ画像を設定する投稿のID
	 * @return int|\WP_Error 成功した場合は新しい添付ファイルのID、失敗した場合はWP_Errorオブジェクト
	 */
	public function attach_from_url( string $image_url, int $post_id ) {
		// WordPressのメディア関連関数を読み込む
		require_once ABSPATH . 'wp-admin/includes/file.php';
		require_once ABSPATH . 'wp-admin/includes/media.php';
		require_once ABSPATH . 'wp-admin/includes/image.php';

		// URLから画像をダウンロードし、メディアライブラリに追加
		$attachment_id = media_sideload_image( $image_url, 0, null, 'id' );

		// エラーチェック
		if ( is_wp_error( $attachment_id ) ) {
//			error_log( 'Pixalia Image Sideload Error: ' . $attachment_id->get_error_message() );
			return $attachment_id;
		}

		// アイキャッチ画像として設定
		$result = set_post_thumbnail( $post_id, $attachment_id );

		if ( false === $result ) {
			return new \WP_Error(
				'set_thumbnail_failed',
				'ダウンロードした画像をアイキャッチとして設定できませんでした。'
			);
		}

		return $attachment_id;
	}
}