<?php

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

function tilfy_kapak_eksik_hata_mesaji() {
	return tilfy__( 'Kapak yok - İçerikler veya Paylaşımlar’dan kapak atayın.' );
}

function tilfy_kapak_eksik_hatasi_mi( $mesaj ) {
	$mesaj = (string) $mesaj;
	return $mesaj !== '' && (
		strpos( $mesaj, 'Kapak yok' ) !== false
		|| strpos( $mesaj, 'kapak atayın' ) !== false
	);
}

function tilfy_kapak_havuzu_normalize( $ids ) {
	if ( is_string( $ids ) ) {
		$decoded = json_decode( $ids, true );
		if ( is_array( $decoded ) ) {
			$ids = $decoded;
		} else {
			$ids = preg_split( '/[\s,]+/', $ids );
		}
	}
	if ( ! is_array( $ids ) ) {
		return array();
	}
	$ids = array_values( array_unique( array_filter( array_map( 'intval', $ids ) ) ) );
	$gecerli = array();
	foreach ( $ids as $id ) {
		if ( $id <= 0 ) {
			continue;
		}
		if ( get_post_type( $id ) !== 'attachment' ) {
			continue;
		}
		$mime = (string) get_post_mime_type( $id );
		if ( strpos( $mime, 'image/' ) !== 0 ) {
			continue;
		}
		$gecerli[] = $id;
	}
	return $gecerli;
}

function tilfy_kapak_havuzu_al() {
	$ham = tilfy_ayar_al( 'varsayilan_kapak_havuzu', '[]' );
	return tilfy_kapak_havuzu_normalize( $ham );
}

function tilfy_kapak_havuzu_kaydet( $ids ) {
	$ids = tilfy_kapak_havuzu_normalize( $ids );
	tilfy_ayar_kaydet( array( 'varsayilan_kapak_havuzu' => wp_json_encode( $ids ) ) );
	return $ids;
}

function tilfy_kapak_havuzu_ogeleri() {
	$cikti = array();
	foreach ( tilfy_kapak_havuzu_al() as $id ) {
		$url = wp_get_attachment_image_url( $id, 'medium' );
		if ( ! $url ) {
			$url = wp_get_attachment_url( $id );
		}
		$full = wp_get_attachment_image_url( $id, 'large' );
		if ( ! $full ) {
			$full = (string) wp_get_attachment_url( $id );
		}
		if ( ! $url && ! $full ) {
			continue;
		}
		$cikti[] = array(
			'id'   => (int) $id,
			'url'  => esc_url_raw( (string) ( $full ?: $url ) ),
			'thumb'=> esc_url_raw( (string) ( $url ?: $full ) ),
		);
	}
	return $cikti;
}

function tilfy_icerik_url_gecerli_mi( $url ) {
	$url = trim( (string) $url );
	if ( $url === '' || strpos( $url, 'tilfy://' ) === 0 ) {
		return false;
	}
	return true;
}

function tilfy_icerik_paylasim_medya_eksik_mi( $icerik, $platform = '' ) {
	if ( ! $icerik ) {
		return true;
	}
	$platform = sanitize_key( (string) $platform );
	$video_zorunlu = in_array( $platform, array( 'youtube', 'tiktok' ), true );
	if ( (int) ( $icerik->medya_dosya_id ?? 0 ) > 0 ) {
		if ( function_exists( 'tilfy_medya_dosya_gecerli_mi' ) && tilfy_medya_dosya_gecerli_mi( (int) $icerik->medya_dosya_id ) ) {
			if ( ! $video_zorunlu || ! function_exists( 'tilfy_medya_tipi_belirle' ) || tilfy_medya_tipi_belirle( (int) $icerik->medya_dosya_id ) === 'video' ) {
				return false;
			}
		} else {
			$url = wp_get_attachment_url( (int) $icerik->medya_dosya_id );
			if ( $url && ! $video_zorunlu ) {
				return false;
			}
		}
	}
	$medya = trim( (string) ( $icerik->medya_url ?? '' ) );
	$kapak = trim( (string) ( $icerik->kapak_url ?? '' ) );
	if ( tilfy_icerik_url_gecerli_mi( $medya ) ) {
		return false;
	}
	if ( ! $video_zorunlu && tilfy_icerik_url_gecerli_mi( $kapak ) ) {
		return false;
	}
	if ( function_exists( 'tilfy_icerik_meta_uzaktan_medya_mi' ) && tilfy_icerik_meta_uzaktan_medya_mi( $icerik ) ) {
		return false;
	}
	return true;
}

function tilfy_attachment_kapak_url_al( $attachment_id ) {
	$attachment_id = (int) $attachment_id;
	if ( $attachment_id <= 0 || get_post_type( $attachment_id ) !== 'attachment' ) {
		return '';
	}
	$mime = (string) get_post_mime_type( $attachment_id );
	if ( strpos( $mime, 'image/' ) !== 0 ) {
		return '';
	}
	$url = wp_get_attachment_image_url( $attachment_id, 'large' );
	if ( ! $url ) {
		$url = wp_get_attachment_url( $attachment_id );
	}
	return $url ? esc_url_raw( (string) $url ) : '';
}

function tilfy_icerik_kapak_ata( $icerik_idler, $attachment_id ) {
	global $wpdb;
	$url = tilfy_attachment_kapak_url_al( $attachment_id );
	if ( $url === '' ) {
		return array( 'ok' => false, 'mesaj' => tilfy__( 'Geçerli bir görsel seçin' ), 'adet' => 0 );
	}
	$idler = array_values( array_unique( array_filter( array_map( 'intval', (array) $icerik_idler ) ) ) );
	if ( empty( $idler ) ) {
		return array( 'ok' => false, 'mesaj' => tilfy__( 'İçerik seçilmedi' ), 'adet' => 0 );
	}
	$adet = 0;
	$it   = tilfy_tablo( 'icerik' );
	foreach ( $idler as $id ) {
		$mevcut = $wpdb->get_row( $wpdb->prepare( 'SELECT medya_dosya_id FROM ' . $it . ' WHERE id = %d', $id ) );
		$alan   = array(
			'kapak_url'      => $url,
			'kapak_dosya_id' => (int) $attachment_id,
			'guncelleme'     => current_time( 'mysql' ),
		);
		if ( ! $mevcut || (int) ( $mevcut->medya_dosya_id ?? 0 ) <= 0 ) {
			$alan['medya_url']  = $url;
			$alan['medya_tipi'] = 'image';
		}
		$guncelle = $wpdb->update( $it, $alan, array( 'id' => $id ) );
		if ( false !== $guncelle ) {
			++$adet;
		}
	}
	return array(
		'ok'    => true,
		'adet'  => $adet,
		'url'   => $url,
		'mesaj' => $adet . ' içeriğe kapak atandı',
	);
}

function tilfy_paylasimlardan_icerik_idler( $paylasim_idler ) {
	global $wpdb;
	$idler = array_values( array_unique( array_filter( array_map( 'intval', (array) $paylasim_idler ) ) ) );
	if ( empty( $idler ) ) {
		return array();
	}
	$ph = implode( ',', array_fill( 0, count( $idler ), '%d' ) );
	$cols = $wpdb->get_col(
		$wpdb->prepare(
			'SELECT DISTINCT icerik_id FROM ' . tilfy_tablo( 'paylasim' ) . " WHERE id IN ($ph)",
			$idler
		)
	);
	return array_values( array_unique( array_filter( array_map( 'intval', (array) $cols ) ) ) );
}

function tilfy_attachment_medya_bilgi( $attachment_id ) {
	$attachment_id = (int) $attachment_id;
	if ( $attachment_id <= 0 || get_post_type( $attachment_id ) !== 'attachment' ) {
		return null;
	}
	$mime = (string) get_post_mime_type( $attachment_id );
	$url  = (string) wp_get_attachment_url( $attachment_id );
	if ( $url === '' ) {
		return null;
	}
	$gorsel = strpos( $mime, 'image/' ) === 0;
	$video  = strpos( $mime, 'video/' ) === 0;
	if ( ! $gorsel && ! $video ) {
		return null;
	}
	$onizleme = $url;
	if ( $gorsel ) {
		$buyuk = wp_get_attachment_image_url( $attachment_id, 'large' );
		if ( $buyuk ) {
			$onizleme = $buyuk;
		}
	}
	return array(
		'id'         => $attachment_id,
		'url'        => esc_url_raw( $url ),
		'onizleme'   => esc_url_raw( $onizleme ),
		'medya_tipi' => $video ? 'video' : 'image',
		'gorsel'     => $gorsel,
		'video'      => $video,
	);
}

function tilfy_icerik_medya_ata( $icerik_idler, $attachment_id ) {
	global $wpdb;
	$bilgi = tilfy_attachment_medya_bilgi( $attachment_id );
	if ( ! $bilgi ) {
		return array( 'ok' => false, 'mesaj' => tilfy__( 'Geçerli bir görsel veya video seçin' ), 'adet' => 0 );
	}
	$idler = array_values( array_unique( array_filter( array_map( 'intval', (array) $icerik_idler ) ) ) );
	if ( empty( $idler ) ) {
		return array( 'ok' => false, 'mesaj' => tilfy__( 'İçerik seçilmedi' ), 'adet' => 0 );
	}
	$adet = 0;
	$it   = tilfy_tablo( 'icerik' );
	foreach ( $idler as $id ) {
		$alanlar = array(
			'medya_dosya_id' => (int) $bilgi['id'],
			'medya_tipi'     => $bilgi['medya_tipi'],
			'medya_url'      => $bilgi['url'],
			'guncelleme'     => current_time( 'mysql' ),
		);
		if ( $bilgi['gorsel'] ) {
			$alanlar['kapak_url'] = $bilgi['onizleme'];
		}
		$guncelle = $wpdb->update( $it, $alanlar, array( 'id' => $id ) );
		if ( false !== $guncelle ) {
			++$adet;
		}
	}
	return array(
		'ok'    => true,
		'adet'  => $adet,
		'url'   => $bilgi['onizleme'],
		'mesaj' => $adet . ' içeriğe medya atandı',
	);
}

function tilfy_icerik_one_cikani_kullan( $icerik_idler ) {
	global $wpdb;
	$idler = array_values( array_unique( array_filter( array_map( 'intval', (array) $icerik_idler ) ) ) );
	if ( empty( $idler ) ) {
		return array( 'ok' => false, 'mesaj' => tilfy__( 'İçerik seçilmedi' ), 'adet' => 0, 'atlandi' => 0 );
	}
	if ( ! function_exists( 'tilfy_wordpress_post_medya' ) && function_exists( 'tilfy_api_dosyalari_yukle' ) ) {
		tilfy_api_dosyalari_yukle();
	}
	$adet    = 0;
	$atlandi = 0;
	$it      = tilfy_tablo( 'icerik' );
	foreach ( $idler as $id ) {
		$icerik = $wpdb->get_row( $wpdb->prepare( 'SELECT * FROM ' . $it . ' WHERE id = %d', $id ) );
		if ( ! $icerik || sanitize_key( (string) ( $icerik->kaynak_platform ?? '' ) ) !== 'wordpress' ) {
			++$atlandi;
			continue;
		}
		$post_id = (int) ( $icerik->kaynak_id ?? 0 );
		if ( $post_id <= 0 || ! function_exists( 'tilfy_wordpress_post_medya' ) ) {
			++$atlandi;
			continue;
		}
		$medya = tilfy_wordpress_post_medya( $post_id );
		$kapak = trim( (string) ( $medya['kapak_url'] ?? '' ) );
		if ( $kapak === '' ) {
			++$atlandi;
			continue;
		}
		$guncelle = $wpdb->update(
			$it,
			array(
				'kapak_url'      => $kapak,
				'medya_url'      => $kapak,
				'medya_tipi'     => 'image',
				'medya_dosya_id' => 0,
				'kapak_dosya_id' => 0,
				'guncelleme'     => current_time( 'mysql' ),
			),
			array( 'id' => $id )
		);
		if ( false !== $guncelle ) {
			++$adet;
		} else {
			++$atlandi;
		}
	}
	if ( $adet <= 0 ) {
		return array(
			'ok'      => false,
			'mesaj'   => tilfy__( 'Öne çıkan uygulanamadı (WordPress kaynağı veya kapak yok)' ),
			'adet'    => 0,
			'atlandi' => $atlandi,
		);
	}
	$mesaj = $adet . ' içerikte öne çıkan kullanıldı';
	if ( $atlandi > 0 ) {
		$mesaj .= ' · ' . $atlandi . ' atlandı';
	}
	return array(
		'ok'      => true,
		'adet'    => $adet,
		'atlandi' => $atlandi,
		'mesaj'   => $mesaj,
	);
}
