<?php

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

function tilfy_meta_graph_istek( $uc, $args = array(), $metot = 'GET', $govde = null, $jeton = null ) {
	if ( $jeton === null || $jeton === '' ) {
		$jeton = tilfy_ayar_al( 'meta_erisim_jetonu' );
	}
	if ( $jeton === '' ) {
		return new WP_Error( 'tilfy_meta', 'Meta erisim jetonu eksik' );
	}
	$url = tilfy_meta_graph_url( $uc );
	$args['access_token'] = $jeton;
	$secenek = array( 'timeout' => 60 );
	if ( $metot === 'POST' && $govde !== null ) {
		$secenek['body'] = $govde;
		$secenek['body']['access_token'] = $jeton;
		$yanit = wp_remote_post( $url, $secenek );
	} else {
		$yanit = wp_remote_get( add_query_arg( $args, $url ), $secenek );
	}
	if ( is_wp_error( $yanit ) ) {
		if ( function_exists( 'tilfy_api_yanit_wp_kaydet' ) ) {
			tilfy_api_yanit_wp_kaydet( 'meta', $uc, $yanit, array( 'islem' => strtolower( $metot ) ) );
		}
		return $yanit;
	}
	$kod    = (int) wp_remote_retrieve_response_code( $yanit );
	$parsed = json_decode( wp_remote_retrieve_body( $yanit ), true );
	if ( function_exists( 'tilfy_api_yanit_wp_kaydet' ) ) {
		tilfy_api_yanit_wp_kaydet( 'meta', $uc, $yanit, array( 'islem' => strtolower( $metot ) ) );
	}
	if ( ! is_array( $parsed ) ) {
		return new WP_Error( 'tilfy_meta', 'Gecersiz yanit' );
	}
	if ( isset( $parsed['error'] ) ) {
		$hata_mesaj = $parsed['error']['message'] ?? 'Meta hata';
		if ( function_exists( 'tilfy_meta_hiz_limit_hatasi_mi' ) && tilfy_meta_hiz_limit_hatasi_mi( $hata_mesaj ) ) {
			tilfy_meta_hiz_limit_isaretle();
		}
		return new WP_Error( 'tilfy_meta', $hata_mesaj );
	}
	delete_transient( 'tilfy_meta_hiz_limit' );
	return $parsed;
}

function tilfy_meta_hiz_limit_hatasi_mi( $hata ) {
	$mesaj = is_wp_error( $hata ) ? $hata->get_error_message() : (string) $hata;
	$mesaj = strtolower( $mesaj );
	if ( $mesaj === '' ) {
		return false;
	}
	if ( strpos( $mesaj, 'request limit reached' ) !== false ) {
		return true;
	}
	if ( strpos( $mesaj, 'application request limit' ) !== false ) {
		return true;
	}
	if ( strpos( $mesaj, 'user request limit' ) !== false ) {
		return true;
	}
	if ( strpos( $mesaj, 'too many calls' ) !== false ) {
		return true;
	}
	if ( preg_match( '/\(#(4|17|32|613)\)/', $mesaj ) ) {
		return true;
	}
	return false;
}

function tilfy_meta_hiz_limit_isaretle( $dakika = 20 ) {
	$dakika = max( 5, min( 120, (int) $dakika ) );
	set_transient( 'tilfy_meta_hiz_limit', (string) time(), $dakika * MINUTE_IN_SECONDS );
}

function tilfy_meta_hiz_limit_aktif_mi() {
	return (string) get_transient( 'tilfy_meta_hiz_limit' ) !== '';
}

function tilfy_meta_sayfa_jetonu_hata_mesaji( $mesaj ) {
	if ( tilfy_meta_hiz_limit_hatasi_mi( $mesaj ) ) {
		return 'Meta API istek limiti doldu. Kayitli jetonlar kullanilir; 20–60 dakika bekleyip tekrar deneyin. Ayni anda birden fazla senkron baslatmayin.';
	}
	return 'Sayfa jetonu alinamadi: ' . $mesaj . '. Meta ile yeniden baglanin veya Ayarlar → Sayfa jetonu al kullanin.';
}

function tilfy_meta_sayfa_jetonu_al( $sayfa_id = '', $zorla = false ) {
	$sayfa_id = $sayfa_id !== '' ? sanitize_text_field( $sayfa_id ) : tilfy_ayar_al( 'meta_sayfa_id' );
	if ( $sayfa_id === '' ) {
		return new WP_Error( 'tilfy_meta', 'Facebook Sayfa ID eksik' );
	}
	$kayitli = tilfy_ayar_al( 'meta_sayfa_jetonu' );
	if ( tilfy_meta_hiz_limit_aktif_mi() && $kayitli !== '' ) {
		return $kayitli;
	}
	if ( ! $zorla && $kayitli !== '' ) {
		return $kayitli;
	}
	$user_jeton = tilfy_ayar_al( 'meta_erisim_jetonu' );
	if ( $user_jeton === '' ) {
		return new WP_Error( 'tilfy_meta', 'Meta erisim jetonu eksik' );
	}
	$dogrudan = tilfy_meta_graph_istek(
		$sayfa_id,
		array( 'fields' => 'access_token' ),
		'GET',
		null,
		$user_jeton
	);
	if ( ! is_wp_error( $dogrudan ) && ! empty( $dogrudan['access_token'] ) ) {
		$sayfa_jeton = (string) $dogrudan['access_token'];
		tilfy_ayar_kaydet( array( 'meta_sayfa_jetonu' => $sayfa_jeton ) );
		return $sayfa_jeton;
	}
	if ( is_wp_error( $dogrudan ) && tilfy_meta_hiz_limit_hatasi_mi( $dogrudan ) ) {
		tilfy_meta_hiz_limit_isaretle();
		if ( $kayitli !== '' ) {
			return $kayitli;
		}
		return new WP_Error( 'tilfy_meta', tilfy_meta_sayfa_jetonu_hata_mesaji( $dogrudan->get_error_message() ) );
	}
	$yanit = wp_remote_get(
		add_query_arg(
			array(
				'fields'       => 'id,access_token,name',
				'access_token' => $user_jeton,
				'limit'        => 100,
			),
			tilfy_meta_graph_url( 'me/accounts' )
		),
		array( 'timeout' => 30 )
	);
	if ( ! is_wp_error( $yanit ) ) {
		$govde = json_decode( wp_remote_retrieve_body( $yanit ), true );
		if ( is_array( $govde ) && ! isset( $govde['error'] ) ) {
			foreach ( (array) ( $govde['data'] ?? array() ) as $sayfa ) {
				if ( (string) ( $sayfa['id'] ?? '' ) !== (string) $sayfa_id ) {
					continue;
				}
				$sayfa_jeton = (string) ( $sayfa['access_token'] ?? '' );
				if ( $sayfa_jeton !== '' ) {
					tilfy_ayar_kaydet( array( 'meta_sayfa_jetonu' => $sayfa_jeton ) );
					return $sayfa_jeton;
				}
			}
		} elseif ( is_array( $govde ) && isset( $govde['error']['message'] ) && tilfy_meta_hiz_limit_hatasi_mi( (string) $govde['error']['message'] ) ) {
			tilfy_meta_hiz_limit_isaretle();
			if ( $kayitli !== '' ) {
				return $kayitli;
			}
			return new WP_Error( 'tilfy_meta', tilfy_meta_sayfa_jetonu_hata_mesaji( (string) $govde['error']['message'] ) );
		}
	}
	$mesaj = is_wp_error( $dogrudan ) ? $dogrudan->get_error_message() : 'Sayfa listesi bos';
	if ( tilfy_meta_hiz_limit_hatasi_mi( $mesaj ) ) {
		tilfy_meta_hiz_limit_isaretle();
		if ( $kayitli !== '' ) {
			return $kayitli;
		}
	}
	return new WP_Error(
		'tilfy_meta',
		tilfy_meta_sayfa_jetonu_hata_mesaji( $mesaj )
	);
}

function tilfy_meta_sayfa_jetonu_sifirla() {
	tilfy_ayar_kaydet( array( 'meta_sayfa_jetonu' => '' ) );
}

function tilfy_meta_jeton_gonderi_erisim_probu( $jeton ) {
	$sayfa = tilfy_ayar_al( 'meta_sayfa_id' );
	if ( $sayfa === '' || $jeton === '' ) {
		return false;
	}
	$veri = tilfy_meta_graph_istek(
		$sayfa . '/published_posts',
		array(
			'limit'  => 1,
			'fields' => 'id',
		),
		'GET',
		null,
		$jeton
	);
	if ( ! is_wp_error( $veri ) ) {
		return true;
	}
	if ( tilfy_meta_hata_sayfa_jetonu_gerekli( $veri ) ) {
		return false;
	}
	if ( tilfy_meta_hiz_limit_hatasi_mi( $veri ) ) {
		return true;
	}
	return null;
}

function tilfy_meta_jeton_sayfa_mi( $jeton ) {
	if ( $jeton === '' ) {
		return false;
	}
	$cache_key = 'tilfy_meta_sjt_' . md5( $jeton );
	$cached    = get_transient( $cache_key );
	if ( $cached === '1' ) {
		return true;
	}
	if ( $cached === '0' ) {
		return false;
	}
	if ( tilfy_meta_hiz_limit_aktif_mi() ) {
		return true;
	}
	if ( ! function_exists( 'tilfy_meta_app_jetonu' ) && is_readable( TILFY_YOL . 'includes/baglanti-saglik.php' ) ) {
		require_once TILFY_YOL . 'includes/baglanti-saglik.php';
	}
	$app = function_exists( 'tilfy_meta_app_jetonu' ) ? tilfy_meta_app_jetonu() : '';
	if ( $app === '' ) {
		return tilfy_meta_jeton_gonderi_erisim_probu( $jeton );
	}
	$yanit = wp_remote_get(
		add_query_arg(
			array(
				'input_token'  => $jeton,
				'access_token' => $app,
			),
			tilfy_meta_graph_url( 'debug_token' )
		),
		array( 'timeout' => 15 )
	);
	if ( is_wp_error( $yanit ) ) {
		$probe = tilfy_meta_jeton_gonderi_erisim_probu( $jeton );
		if ( $probe === true ) {
			set_transient( $cache_key, '1', 45 * MINUTE_IN_SECONDS );
		} elseif ( $probe === false ) {
			set_transient( $cache_key, '0', 10 * MINUTE_IN_SECONDS );
		}
		return $probe === null ? true : $probe;
	}
	$govde = json_decode( wp_remote_retrieve_body( $yanit ), true );
	if ( ! is_array( $govde ) || empty( $govde['data'] ) || ! empty( $govde['data']['error'] ) ) {
		$probe = tilfy_meta_jeton_gonderi_erisim_probu( $jeton );
		if ( $probe === true ) {
			set_transient( $cache_key, '1', 45 * MINUTE_IN_SECONDS );
		} elseif ( $probe === false ) {
			set_transient( $cache_key, '0', 10 * MINUTE_IN_SECONDS );
		}
		return $probe === null ? true : $probe;
	}
	$tip   = strtoupper( (string) ( $govde['data']['type'] ?? '' ) );
	$gecer = ! empty( $govde['data']['is_valid'] );
	if ( $tip === 'PAGE' && $gecer ) {
		set_transient( $cache_key, '1', 45 * MINUTE_IN_SECONDS );
		return true;
	}
	if ( $tip !== 'PAGE' || ! $gecer ) {
		set_transient( $cache_key, '0', 10 * MINUTE_IN_SECONDS );
		return false;
	}
	$probe = tilfy_meta_jeton_gonderi_erisim_probu( $jeton );
	if ( $probe === true ) {
		set_transient( $cache_key, '1', 45 * MINUTE_IN_SECONDS );
	} elseif ( $probe === false ) {
		set_transient( $cache_key, '0', 10 * MINUTE_IN_SECONDS );
	}
	return $probe === null ? true : $probe;
}

function tilfy_meta_hata_sayfa_jetonu_gerekli( $hata ) {
	if ( ! is_wp_error( $hata ) ) {
		return false;
	}
	$mesaj = $hata->get_error_message();
	return stripos( $mesaj, 'page access token' ) !== false || strpos( $mesaj, '(#210)' ) !== false;
}

function tilfy_meta_yayin_jetonu_al( $zorla = false ) {
	$kayitli = tilfy_ayar_al( 'meta_sayfa_jetonu' );
	if ( tilfy_meta_hiz_limit_aktif_mi() && $kayitli !== '' ) {
		return $kayitli;
	}
	if ( $zorla ) {
		tilfy_meta_sayfa_jetonu_sifirla();
		return tilfy_meta_sayfa_jetonu_al( '', true );
	}
	if ( $kayitli !== '' ) {
		return $kayitli;
	}
	$sayfa_jeton = tilfy_meta_sayfa_jetonu_al( '', false );
	if ( ! is_wp_error( $sayfa_jeton ) && $sayfa_jeton !== '' ) {
		return $sayfa_jeton;
	}
	return is_wp_error( $sayfa_jeton ) ? $sayfa_jeton : new WP_Error( 'tilfy_meta', 'Sayfa jetonu eksik' );
}

function tilfy_meta_graph_sayfa_istek( $uc, $args = array(), $metot = 'GET', $govde = null ) {
	$jeton = tilfy_meta_yayin_jetonu_al( false );
	if ( is_wp_error( $jeton ) ) {
		return $jeton;
	}
	$veri = tilfy_meta_graph_istek( $uc, $args, $metot, $govde, $jeton );
	if ( tilfy_meta_hiz_limit_hatasi_mi( $veri ) ) {
		tilfy_meta_hiz_limit_isaretle();
	}
	if ( tilfy_meta_hata_sayfa_jetonu_gerekli( $veri ) && ! tilfy_meta_hiz_limit_hatasi_mi( $veri ) ) {
		tilfy_meta_sayfa_jetonu_sifirla();
		$jeton = tilfy_meta_yayin_jetonu_al( true );
		if ( is_wp_error( $jeton ) ) {
			return $jeton;
		}
		$veri = tilfy_meta_graph_istek( $uc, $args, $metot, $govde, $jeton );
		if ( tilfy_meta_hiz_limit_hatasi_mi( $veri ) ) {
			tilfy_meta_hiz_limit_isaretle();
		}
	}
	return $veri;
}

function tilfy_meta_jeton_teshis() {
	$user_jeton = tilfy_ayar_al( 'meta_erisim_jetonu' );
	$sayfa_id   = tilfy_ayar_al( 'meta_sayfa_id' );
	$sonuc      = array(
		'sayfa_id'       => $sayfa_id,
		'izinler'        => array(),
		'sayfa_sayisi'   => 0,
		'sayfa_adlari'   => array(),
		'dogrudan_hata'  => '',
	);
	if ( $user_jeton === '' ) {
		$sonuc['dogrudan_hata'] = 'User access token missing';
		return $sonuc;
	}
	$app_id  = tilfy_ayar_al( 'meta_uygulama_id' );
	$app_giz = tilfy_ayar_al( 'meta_uygulama_gizli' );
	if ( $app_id !== '' && $app_giz !== '' ) {
		$debug = wp_remote_get(
			add_query_arg(
				array(
					'input_token'  => $user_jeton,
					'access_token' => $app_id . '|' . $app_giz,
				),
				tilfy_meta_graph_url( 'debug_token' )
			),
			array( 'timeout' => 20 )
		);
		if ( ! is_wp_error( $debug ) ) {
			$debug_govde = json_decode( wp_remote_retrieve_body( $debug ), true );
			$sonuc['izinler'] = (array) ( $debug_govde['data']['scopes'] ?? array() );
		}
	}
	$hesaplar = wp_remote_get(
		add_query_arg(
			array(
				'fields'       => 'id,name,access_token',
				'access_token' => $user_jeton,
				'limit'        => 100,
			),
			tilfy_meta_graph_url( 'me/accounts' )
		),
		array( 'timeout' => 20 )
	);
	if ( ! is_wp_error( $hesaplar ) ) {
		$hesap_govde = json_decode( wp_remote_retrieve_body( $hesaplar ), true );
		foreach ( (array) ( $hesap_govde['data'] ?? array() ) as $sayfa ) {
			$sonuc['sayfa_adlari'][] = (string) ( $sayfa['name'] ?? $sayfa['id'] ?? '' );
		}
		$sonuc['sayfa_sayisi'] = count( $sonuc['sayfa_adlari'] );
	}
	if ( $sayfa_id !== '' ) {
		$dogrudan = tilfy_meta_graph_istek( $sayfa_id, array( 'fields' => 'access_token,name' ), 'GET', null, $user_jeton );
		if ( is_wp_error( $dogrudan ) ) {
			$sonuc['dogrudan_hata'] = $dogrudan->get_error_message();
		}
	}
	return $sonuc;
}

function tilfy_meta_sayfalama_after_al( $veri ) {
	if ( ! is_array( $veri ) ) {
		return '';
	}
	$after = (string) ( $veri['paging']['cursors']['after'] ?? '' );
	if ( $after !== '' || empty( $veri['paging']['next'] ) ) {
		return $after;
	}
	$parsed = wp_parse_url( (string) $veri['paging']['next'] );
	if ( empty( $parsed['query'] ) ) {
		return '';
	}
	$qs = array();
	parse_str( $parsed['query'], $qs );
	return (string) ( $qs['after'] ?? '' );
}

function tilfy_meta_icerikleri_cek() {
	$sayac = 0;
	$ig    = tilfy_meta_instagram_cek();
	if ( ! empty( $ig['ok'] ) ) {
		$sayac += (int) ( $ig['adet'] ?? 0 );
	}
	$fb = tilfy_meta_facebook_cek();
	if ( ! empty( $fb['ok'] ) ) {
		$sayac += (int) ( $fb['adet'] ?? 0 );
	}
	return array( 'ok' => true, 'mesaj' => $sayac . ' Meta icerigi cekildi' );
}

function tilfy_meta_instagram_cek( $opts = array() ) {
	@set_time_limit( 300 );
	$opts = is_array( $opts ) ? $opts : array();
	$ig_id = tilfy_ayar_al( 'meta_instagram_id' );
	if ( $ig_id === '' ) {
		return array( 'ok' => false, 'mesaj' => 'Instagram ID eksik' );
	}
	$mod           = ! empty( $opts['mod'] ) ? (string) $opts['mod'] : ( function_exists( 'tilfy_senkron_modu' ) ? tilfy_senkron_modu() : 'yeni' );
	$mod           = function_exists( 'tilfy_senkron_mod_normalize' ) ? tilfy_senkron_mod_normalize( $mod ) : ( $mod === 'tam' ? 'tam' : 'yeni' );
	$adet          = 0;
	$after         = sanitize_text_field( (string) ( $opts['after'] ?? '' ) );
	$max_api_sayfa = $mod === 'yeni' ? 6 : 12;
	$api_sayfa     = 0;
	do {
		$args = array(
			'fields' => 'id,caption,media_type,media_url,thumbnail_url,permalink,timestamp',
			'limit'  => 100,
		);
		if ( $after !== '' ) {
			$args['after'] = $after;
		}
		$veri = tilfy_meta_graph_sayfa_istek( $ig_id . '/media', $args );
		if ( is_wp_error( $veri ) ) {
			if ( $adet > 0 ) {
				return array( 'ok' => true, 'adet' => $adet, 'mesaj' => $adet . ' Instagram icerigi cekildi (kismi)' );
			}
			return array( 'ok' => false, 'mesaj' => $veri->get_error_message() );
		}
		$bilinen_bulundu = false;
		foreach ( (array) ( $veri['data'] ?? array() ) as $oge ) {
			$kaynak_id = (string) ( $oge['id'] ?? '' );
			if ( $mod === 'yeni' && $kaynak_id !== '' && function_exists( 'tilfy_icerik_kaynak_mevcut_mu' ) && tilfy_icerik_kaynak_mevcut_mu( 'instagram', $kaynak_id ) ) {
				$bilinen_bulundu = true;
				break;
			}
			$medya_tipi = sanitize_key( $oge['media_type'] ?? 'video' );
			if ( function_exists( 'tilfy_senkron_medya_uygun_mu' ) && ! tilfy_senkron_medya_uygun_mu( $medya_tipi ) ) {
				continue;
			}
			tilfy_icerik_upsert(
				array(
					'kaynak_platform' => 'instagram',
					'kaynak_id'       => $kaynak_id,
					'aciklama'        => (string) ( $oge['caption'] ?? '' ),
					'medya_tipi'      => $medya_tipi,
					'medya_url'       => '',
					'kapak_url'       => (string) ( $oge['thumbnail_url'] ?? '' ),
					'kaynak_url'      => (string) ( $oge['permalink'] ?? '' ),
					'kaynak_tarihi'   => (string) ( $oge['timestamp'] ?? '' ),
					'durum'           => 'senkron',
				)
			);
			++$adet;
		}
		if ( $bilinen_bulundu ) {
			if ( function_exists( 'tilfy_senkron_son_zaman_kaydet' ) ) {
				tilfy_senkron_son_zaman_kaydet( 'instagram' );
			}
			return array( 'ok' => true, 'adet' => $adet, 'mesaj' => $adet . ' Instagram yeni icerik (artimli)' );
		}
		$has_next  = ! empty( $veri['paging']['next'] );
		$after     = tilfy_meta_sayfalama_after_al( $veri );
		$api_sayfa = $api_sayfa + 1;
		if ( $api_sayfa >= $max_api_sayfa && $has_next && $after !== '' ) {
			return array(
				'ok'    => true,
				'adet'  => $adet,
				'devam' => true,
				'after' => $after,
				'mod'   => $mod,
				'mesaj' => $adet . ' Instagram icerigi cekildi (devam kuyrukta)',
			);
		}
	} while ( $has_next && $after !== '' );
	if ( function_exists( 'tilfy_senkron_son_zaman_kaydet' ) ) {
		tilfy_senkron_son_zaman_kaydet( 'instagram' );
	}
	return array( 'ok' => true, 'adet' => $adet, 'mesaj' => $adet . ' Instagram icerigi cekildi' );
}

function tilfy_meta_facebook_gonderi_istek( $uc, $args ) {
	$veri = tilfy_meta_graph_sayfa_istek( $uc, $args );
	if ( ! is_wp_error( $veri ) ) {
		return $veri;
	}
	if ( strpos( $uc, '/published_posts' ) === false ) {
		return $veri;
	}
	$feed_uc = preg_replace( '#/published_posts$#', '/feed', $uc );
	if ( $feed_uc === $uc ) {
		return $veri;
	}
	$feed = tilfy_meta_graph_sayfa_istek( $feed_uc, $args );
	if ( ! is_wp_error( $feed ) ) {
		return $feed;
	}
	return $veri;
}

function tilfy_meta_facebook_medya_cevir( $ekler, $medya ) {
	$tip = strtolower( sanitize_key( (string) ( $ekler['media_type'] ?? '' ) ) );
	if ( in_array( $tip, array( 'photo', 'image', 'album' ), true ) ) {
		return 'image';
	}
	if ( $tip === 'video' ) {
		return 'video';
	}
	return $medya !== '' ? 'video' : 'gorsel';
}

function tilfy_meta_facebook_oge_kaydet( $oge ) {
	$medya = '';
	$ekler = $oge['attachments']['data'][0] ?? array();
	if ( ! empty( $ekler['media']['image']['src'] ) ) {
		$medya = $ekler['media']['image']['src'];
	} elseif ( ! empty( $ekler['media']['source'] ) ) {
		$medya = (string) $ekler['media']['source'];
	} elseif ( ! empty( $ekler['url'] ) ) {
		$medya = $ekler['url'];
	} elseif ( ! empty( $oge['source'] ) ) {
		$medya = (string) $oge['source'];
	} elseif ( ! empty( $oge['picture'] ) ) {
		$medya = (string) $oge['picture'];
	}
	$mesaj = (string) ( $oge['message'] ?? $oge['description'] ?? $oge['title'] ?? '' );
	$medya_tipi = tilfy_meta_facebook_medya_cevir( $ekler, $medya );
	if ( function_exists( 'tilfy_senkron_medya_uygun_mu' ) && ! tilfy_senkron_medya_uygun_mu( $medya_tipi ) ) {
		return;
	}
	tilfy_icerik_upsert(
		array(
			'kaynak_platform' => 'facebook',
			'kaynak_id'       => (string) ( $oge['id'] ?? '' ),
			'aciklama'        => $mesaj,
			'medya_tipi'      => $medya_tipi,
			'medya_url'       => '',
			'kapak_url'       => ! empty( $oge['picture'] ) ? (string) $oge['picture'] : $medya,
			'kaynak_url'      => (string) ( $oge['permalink_url'] ?? '' ),
			'kaynak_tarihi'   => (string) ( $oge['created_time'] ?? '' ),
			'durum'           => 'senkron',
		)
	);
}

function tilfy_meta_facebook_videolari_cek( $sayfa ) {
	$adet  = 0;
	$after = '';
	do {
		$args = array(
			'fields' => 'id,description,title,created_time,permalink_url,source,picture',
			'limit'  => 50,
		);
		if ( $after !== '' ) {
			$args['after'] = $after;
		}
		$veri = tilfy_meta_graph_sayfa_istek( $sayfa . '/videos', $args );
		if ( is_wp_error( $veri ) ) {
			return array( 'ok' => false, 'mesaj' => $veri->get_error_message(), 'adet' => $adet );
		}
		foreach ( (array) ( $veri['data'] ?? array() ) as $oge ) {
			tilfy_meta_facebook_oge_kaydet( $oge );
			++$adet;
		}
		$after    = (string) ( $veri['paging']['cursors']['after'] ?? '' );
		$has_next = ! empty( $veri['paging']['next'] );
	} while ( $has_next && $after !== '' );
	return array( 'ok' => true, 'adet' => $adet );
}

function tilfy_meta_instagram_medya_url_yenile( $icerik ) {
	if ( ! $icerik || sanitize_key( (string) $icerik->kaynak_platform ) !== 'instagram' ) {
		return false;
	}
	$kaynak_id = sanitize_text_field( (string) ( $icerik->kaynak_id ?? '' ) );
	$icerik_id = (int) ( $icerik->id ?? 0 );
	$eski_url  = trim( (string) ( $icerik->medya_url ?? '' ) );
	$eski_host = wp_parse_url( $eski_url, PHP_URL_HOST );
	$eski_host = is_string( $eski_host ) ? $eski_host : '';
	if ( $kaynak_id === '' || ! function_exists( 'tilfy_meta_yayin_jetonu_al' ) ) {
		if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
			tilfy_islem_log( 'hata', 'IG yenile: kaynak_id veya jeton modulu yok', array( 'icerik_id' => $icerik_id ) );
		}
		return false;
	}
	$jeton = tilfy_meta_yayin_jetonu_al();
	if ( is_wp_error( $jeton ) || $jeton === '' ) {
		if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
			$mesaj = is_wp_error( $jeton ) ? $jeton->get_error_message() : 'eksik';
			tilfy_islem_log( 'hata', 'IG yenile jeton: ' . $mesaj, array( 'icerik_id' => $icerik_id ) );
		}
		return false;
	}
	$veri = tilfy_meta_graph_istek(
		$kaynak_id,
		array( 'fields' => 'media_url,thumbnail_url,media_type' ),
		'GET',
		null,
		$jeton
	);
	if ( is_wp_error( $veri ) ) {
		if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
			tilfy_islem_log( 'hata', 'IG yenile API: ' . $veri->get_error_message() . ' kaynak_id=' . $kaynak_id, array( 'icerik_id' => $icerik_id ) );
		}
		return false;
	}
	$api_tip   = sanitize_key( (string) ( $veri['media_type'] ?? ( $icerik->medya_tipi ?? 'video' ) ) );
	$api_medya = trim( (string) ( $veri['media_url'] ?? '' ) );
	$api_kapak = trim( (string) ( $veri['thumbnail_url'] ?? '' ) );
	$video_mu  = ! function_exists( 'tilfy_icerik_medya_grup' ) || tilfy_icerik_medya_grup( $api_tip ) === 'video';
	if ( $video_mu ) {
		$medya_url = $api_medya;
		if ( $medya_url === '' ) {
			if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
				tilfy_islem_log( 'hata', 'IG yenile: video media_url bos (kapak kullanilmaz) kaynak_id=' . $kaynak_id . ' tip=' . $api_tip, array( 'icerik_id' => $icerik_id ) );
			}
			return false;
		}
	} else {
		$medya_url = $api_medya !== '' ? $api_medya : $api_kapak;
	}
	if ( $medya_url === '' ) {
		if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
			tilfy_islem_log( 'hata', 'IG yenile: API media_url bos kaynak_id=' . $kaynak_id, array( 'icerik_id' => $icerik_id ) );
		}
		return false;
	}
	$yeni_host = wp_parse_url( $medya_url, PHP_URL_HOST );
	$yeni_host = is_string( $yeni_host ) ? $yeni_host : '';
	$kapak_url = $api_kapak !== '' ? $api_kapak : ( $video_mu ? '' : $medya_url );
	global $wpdb;
	$guncelle = array(
		'kapak_url'  => esc_url_raw( $kapak_url ),
		'medya_url'  => '',
		'guncelleme' => current_time( 'mysql' ),
	);
	if ( $api_tip !== '' ) {
		$guncelle['medya_tipi'] = $api_tip;
	}
	$wpdb->update(
		tilfy_tablo( 'icerik' ),
		$guncelle,
		array( 'id' => (int) $icerik->id )
	);
	if ( $api_tip !== '' ) {
		$icerik->medya_tipi = $api_tip;
	}
	if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
		$degisim = 'IG yenile host ' . ( $eski_host !== '' ? $eski_host : '-' ) . ' -> ' . ( $yeni_host !== '' ? $yeni_host : '-' );
		if ( $eski_url !== '' && $eski_url !== $medya_url ) {
			$degisim .= ' (url degisti)';
		} elseif ( $eski_url === $medya_url ) {
			$degisim .= ' (url ayni)';
		}
		tilfy_islem_log( 'indirme', $degisim, array( 'icerik_id' => $icerik_id ) );
		if ( $eski_url !== '' && $eski_url !== $medya_url ) {
			tilfy_islem_log( 'indirme', 'eski_medya_url host=' . ( $eski_host !== '' ? $eski_host : '?' ) . ' url=' . $eski_url, array( 'icerik_id' => $icerik_id ) );
		}
		tilfy_islem_log( 'indirme', 'yeni_medya_url host=' . ( $yeni_host !== '' ? $yeni_host : '?' ) . ' surum=' . tilfy_meta_graph_surum() . ' jeton=page', array( 'icerik_id' => $icerik_id ) );
	}
	if ( function_exists( 'tilfy_kuyruk_icerik_indirme_url_kaydet' ) ) {
		tilfy_kuyruk_icerik_indirme_url_kaydet( $icerik_id, $medya_url );
	} elseif ( function_exists( 'tilfy_icerik_son_api_medya_url_kaydet' ) ) {
		tilfy_icerik_son_api_medya_url_kaydet( $icerik_id, $medya_url );
	}
	return $medya_url;
}

function tilfy_meta_facebook_medya_url_yenile( $icerik ) {
	if ( ! $icerik || sanitize_key( (string) $icerik->kaynak_platform ) !== 'facebook' ) {
		return false;
	}
	$kaynak_id = sanitize_text_field( (string) ( $icerik->kaynak_id ?? '' ) );
	$icerik_id = (int) ( $icerik->id ?? 0 );
	if ( $kaynak_id === '' || ! function_exists( 'tilfy_meta_graph_sayfa_istek' ) ) {
		return false;
	}
	$veri = tilfy_meta_graph_sayfa_istek(
		$kaynak_id,
		array( 'fields' => 'source,attachments{media{source,image{src}}}' )
	);
	if ( is_wp_error( $veri ) ) {
		if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
			tilfy_islem_log( 'hata', 'FB yenile API: ' . $veri->get_error_message(), array( 'icerik_id' => $icerik_id ) );
		}
		return false;
	}
	$medya_url = (string) ( $veri['source'] ?? '' );
	if ( $medya_url === '' ) {
		$ek = $veri['attachments']['data'][0] ?? array();
		$medya_url = (string) ( $ek['media']['source'] ?? ( $ek['media']['image']['src'] ?? '' ) );
	}
	if ( $medya_url === '' ) {
		return false;
	}
	global $wpdb;
	$wpdb->update(
		tilfy_tablo( 'icerik' ),
		array(
			'kapak_url'  => esc_url_raw( (string) ( $veri['picture'] ?? $medya_url ) ),
			'medya_url'  => '',
			'guncelleme' => current_time( 'mysql' ),
		),
		array( 'id' => (int) $icerik->id )
	);
	if ( function_exists( 'tilfy_islem_log' ) && $icerik_id > 0 ) {
		$yeni_host = wp_parse_url( $medya_url, PHP_URL_HOST );
		$yeni_host = is_string( $yeni_host ) ? $yeni_host : '';
		tilfy_islem_log( 'indirme', 'FB yenile host=' . ( $yeni_host !== '' ? $yeni_host : '?' ), array( 'icerik_id' => $icerik_id ) );
	}
	if ( function_exists( 'tilfy_kuyruk_icerik_indirme_url_kaydet' ) ) {
		tilfy_kuyruk_icerik_indirme_url_kaydet( $icerik_id, $medya_url );
	} elseif ( function_exists( 'tilfy_icerik_son_api_medya_url_kaydet' ) ) {
		tilfy_icerik_son_api_medya_url_kaydet( $icerik_id, $medya_url );
	}
	return $medya_url;
}

function tilfy_meta_facebook_cek( $opts = array() ) {
	@set_time_limit( 300 );
	$opts = is_array( $opts ) ? $opts : array();
	$sayfa = tilfy_ayar_al( 'meta_sayfa_id' );
	if ( $sayfa === '' ) {
		return array( 'ok' => false, 'mesaj' => 'Facebook Sayfa ID eksik' );
	}
	$jeton = tilfy_meta_yayin_jetonu_al( true );
	if ( is_wp_error( $jeton ) ) {
		return array( 'ok' => false, 'mesaj' => $jeton->get_error_message() );
	}
	$mod           = ! empty( $opts['mod'] ) ? (string) $opts['mod'] : ( function_exists( 'tilfy_senkron_modu' ) ? tilfy_senkron_modu() : 'yeni' );
	$mod           = function_exists( 'tilfy_senkron_mod_normalize' ) ? tilfy_senkron_mod_normalize( $mod ) : ( $mod === 'tam' ? 'tam' : 'yeni' );
	$adet          = 0;
	$after         = sanitize_text_field( (string) ( $opts['after'] ?? '' ) );
	$max_api_sayfa = $mod === 'yeni' ? 6 : 12;
	$api_sayfa     = 0;
	$uc            = $sayfa . '/published_posts';
	do {
		$args = array(
			'fields' => 'id,message,permalink_url,created_time,attachments{media_type,media,url}',
			'limit'  => 100,
		);
		if ( $after !== '' ) {
			$args['after'] = $after;
		}
		$veri = tilfy_meta_facebook_gonderi_istek( $uc, $args );
		if ( is_wp_error( $veri ) ) {
			if ( $adet > 0 ) {
				return array( 'ok' => true, 'adet' => $adet, 'mesaj' => $adet . ' Facebook icerigi cekildi (kismi)' );
			}
			$mesaj = $veri->get_error_message();
			if ( tilfy_meta_hata_sayfa_jetonu_gerekli( $veri ) ) {
				$mesaj .= ' Ayarlar → Meta ile yeniden baglanin veya Sayfa jetonu al butonunu kullanin.';
			}
			return array( 'ok' => false, 'mesaj' => $mesaj );
		}
		$bilinen_bulundu = false;
		foreach ( (array) ( $veri['data'] ?? array() ) as $oge ) {
			$kaynak_id = (string) ( $oge['id'] ?? '' );
			if ( $mod === 'yeni' && $kaynak_id !== '' && function_exists( 'tilfy_icerik_kaynak_mevcut_mu' ) && tilfy_icerik_kaynak_mevcut_mu( 'facebook', $kaynak_id ) ) {
				$bilinen_bulundu = true;
				break;
			}
			tilfy_meta_facebook_oge_kaydet( $oge );
			++$adet;
		}
		if ( $bilinen_bulundu ) {
			if ( function_exists( 'tilfy_senkron_son_zaman_kaydet' ) ) {
				tilfy_senkron_son_zaman_kaydet( 'facebook' );
			}
			return array( 'ok' => true, 'adet' => $adet, 'mesaj' => $adet . ' Facebook yeni icerik (artimli)' );
		}
		$has_next  = ! empty( $veri['paging']['next'] );
		$after     = tilfy_meta_sayfalama_after_al( $veri );
		$api_sayfa = $api_sayfa + 1;
		if ( $api_sayfa >= $max_api_sayfa && $has_next && $after !== '' ) {
			return array(
				'ok'    => true,
				'adet'  => $adet,
				'devam' => true,
				'after' => $after,
				'mod'   => $mod,
				'mesaj' => $adet . ' Facebook icerigi cekildi (devam kuyrukta)',
			);
		}
	} while ( $has_next && $after !== '' );
	if ( $adet === 0 && sanitize_text_field( (string) ( $opts['after'] ?? '' ) ) === '' && $mod === 'tam' ) {
		$video = tilfy_meta_facebook_videolari_cek( $sayfa );
		if ( ! empty( $video['adet'] ) ) {
			$adet = (int) $video['adet'];
		} elseif ( is_wp_error( $video ) || ( isset( $video['ok'] ) && empty( $video['ok'] ) ) ) {
			return array(
				'ok'    => true,
				'adet'  => 0,
				'mesaj' => 'Facebook gonderi bulunamadi. Sayfa jetonu ve pages_read_engagement iznini kontrol edin.',
			);
		}
	}
	if ( function_exists( 'tilfy_senkron_son_zaman_kaydet' ) ) {
		tilfy_senkron_son_zaman_kaydet( 'facebook' );
	}
	if ( $adet === 0 ) {
		return array(
			'ok'    => true,
			'adet'  => 0,
			'mesaj' => 'Facebook gonderi bulunamadi (bos veya API erisimi yok).',
		);
	}
	return array( 'ok' => true, 'adet' => $adet, 'mesaj' => $adet . ' Facebook icerigi cekildi' );
}

function tilfy_meta_istatistikleri_cek( $platform ) {
	if ( $platform === 'instagram' ) {
		return tilfy_meta_instagram_istatistik();
	}
	if ( $platform === 'facebook' ) {
		return array( 'ok' => true, 'mesaj' => 'Facebook gonderi istatistikleri Instagram ile senkron' );
	}
	return array( 'ok' => false, 'mesaj' => 'Platform desteklenmiyor' );
}

function tilfy_meta_instagram_istatistik() {
	$ig_id = tilfy_ayar_al( 'meta_instagram_id' );
	if ( $ig_id === '' ) {
		return array( 'ok' => false, 'mesaj' => 'Instagram ID eksik' );
	}
	$jeton = tilfy_meta_yayin_jetonu_al();
	if ( is_wp_error( $jeton ) ) {
		return array( 'ok' => false, 'mesaj' => $jeton->get_error_message() );
	}
	$veri = tilfy_meta_graph_istek(
		$ig_id . '/media',
		array( 'fields' => 'id,like_count,comments_count,insights.metric(impressions,reach,saved)', 'limit' => 50 ),
		'GET',
		null,
		$jeton
	);
	if ( is_wp_error( $veri ) ) {
		$veri = tilfy_meta_graph_istek(
			$ig_id . '/media',
			array( 'fields' => 'id,like_count,comments_count', 'limit' => 50 ),
			'GET',
			null,
			$jeton
		);
	}
	if ( is_wp_error( $veri ) ) {
		return array( 'ok' => false, 'mesaj' => $veri->get_error_message() );
	}
	global $wpdb;
	foreach ( (array) ( $veri['data'] ?? array() ) as $oge ) {
		$goruntulenme = 0;
		$kaydetme     = 0;
		if ( ! empty( $oge['insights']['data'] ) ) {
			foreach ( $oge['insights']['data'] as $metrik ) {
				$ad = $metrik['name'] ?? '';
				$deger = (int) ( $metrik['values'][0]['value'] ?? 0 );
				if ( $ad === 'impressions' || $ad === 'reach' ) {
					$goruntulenme = max( $goruntulenme, $deger );
				}
				if ( $ad === 'saved' ) {
					$kaydetme = $deger;
				}
			}
		}
		$icerik_id = (int) $wpdb->get_var(
			$wpdb->prepare(
				'SELECT id FROM ' . tilfy_tablo( 'icerik' ) . ' WHERE kaynak_platform = %s AND kaynak_id = %s',
				'instagram',
				(string) ( $oge['id'] ?? '' )
			)
		);
		tilfy_istatistik_guncelle(
			array(
				'icerik_id'          => $icerik_id,
				'platform'           => 'instagram',
				'platform_icerik_id' => (string) ( $oge['id'] ?? '' ),
				'goruntulenme'       => $goruntulenme,
				'begeni'             => (int) ( $oge['like_count'] ?? 0 ),
				'yorum'              => (int) ( $oge['comments_count'] ?? 0 ),
				'kaydetme'           => $kaydetme,
			)
		);
	}
	return array( 'ok' => true, 'mesaj' => 'Instagram istatistik guncellendi' );
}

function tilfy_meta_kapak_url_al( $thumbnail_id ) {
	$thumbnail_id = (int) $thumbnail_id;
	if ( $thumbnail_id <= 0 ) {
		return '';
	}
	if ( ! function_exists( 'tilfy_medya_herkese_acik_url' ) ) {
		return (string) wp_get_attachment_url( $thumbnail_id );
	}
	return tilfy_medya_herkese_acik_url( $thumbnail_id );
}

function tilfy_meta_kapak_dosya_al( $thumbnail_id ) {
	$thumbnail_id = (int) $thumbnail_id;
	if ( $thumbnail_id <= 0 ) {
		return new WP_Error( 'tilfy_meta', 'Kapak ID eksik' );
	}
	$dosya = get_attached_file( $thumbnail_id );
	if ( ! $dosya || ! is_readable( $dosya ) ) {
		return new WP_Error( 'tilfy_meta', 'Kapak dosyasi okunamadi' );
	}
	$boyut = (int) filesize( $dosya );
	if ( $boyut <= 0 ) {
		return new WP_Error( 'tilfy_meta', 'Kapak dosyasi bos' );
	}
	if ( $boyut > 8 * 1024 * 1024 ) {
		return new WP_Error( 'tilfy_meta', 'Kapak en fazla 8 MB olmali' );
	}
	$mime = get_post_mime_type( $thumbnail_id );
	if ( ! is_string( $mime ) || strpos( $mime, 'image/' ) !== 0 ) {
		return new WP_Error( 'tilfy_meta', 'Kapak gorsel dosyasi olmali' );
	}
	return array(
		'path' => $dosya,
		'mime' => $mime,
	);
}

function tilfy_meta_facebook_kapak_ekle( $video_id, $jeton, $thumbnail_id ) {
	$video_id = sanitize_text_field( $video_id );
	if ( $video_id === '' ) {
		return new WP_Error( 'tilfy_meta', 'Video ID eksik' );
	}
	$kapak = tilfy_meta_kapak_dosya_al( $thumbnail_id );
	if ( is_wp_error( $kapak ) ) {
		return $kapak;
	}
	$uc = tilfy_meta_graph_url( rawurlencode( $video_id ) . '/thumbnails' );
	$yanit = tilfy_http_multipart_post(
		$uc,
		array(
			'access_token' => $jeton,
			'is_preferred' => 'true',
		),
		'source',
		$kapak['path'],
		(string) $kapak['mime'],
		120
	);
	if ( is_wp_error( $yanit ) ) {
		return new WP_Error( 'tilfy_meta', 'Facebook kapak: ' . $yanit->get_error_message() );
	}
	$ham    = (string) wp_remote_retrieve_body( $yanit );
	$kod    = (int) wp_remote_retrieve_response_code( $yanit );
	$parsed = json_decode( $ham, true );
	if ( ! is_array( $parsed ) ) {
		return new WP_Error( 'tilfy_meta', 'Facebook kapak yaniti gecersiz (HTTP ' . $kod . ')' );
	}
	if ( isset( $parsed['error'] ) ) {
		return new WP_Error( 'tilfy_meta', tilfy_meta_facebook_hata_mesaji( $parsed['error'] ) );
	}
	return $parsed;
}

function tilfy_meta_paylasim_gonder( $icerik, $paylasim, $platform ) {
	$medya = '';
	if ( (int) $icerik->medya_dosya_id > 0 ) {
		$dosya_id = (int) $icerik->medya_dosya_id;
		if ( function_exists( 'tilfy_medya_dosya_gecerli_mi' ) && ! tilfy_medya_dosya_gecerli_mi( $dosya_id ) ) {
			global $wpdb;
			$wpdb->update(
				tilfy_tablo( 'icerik' ),
				array(
					'medya_dosya_id' => 0,
					'guncelleme'     => current_time( 'mysql' ),
				),
				array( 'id' => (int) $icerik->id )
			);
			$icerik->medya_dosya_id = 0;
		} else {
			$medya = tilfy_medya_herkese_acik_url( $dosya_id );
		}
	}
	if ( $medya === '' && function_exists( 'tilfy_icerik_uzaktan_medya_gerekli_mi' ) && tilfy_icerik_uzaktan_medya_gerekli_mi( $icerik ) ) {
		return array( 'ok' => false, 'mesaj' => 'Medya henuz indirilmedi' );
	}
	if ( $medya === '' ) {
		$medya = (string) $icerik->medya_url;
	}
	if ( $medya === '' ) {
		return array( 'ok' => false, 'mesaj' => 'Medya URL eksik' );
	}

	$aciklama  = (string) ( $paylasim->ozel_aciklama ?: $icerik->aciklama );
	$etiketler = (string) ( $paylasim->ozel_etiketler ?: $icerik->etiketler );
	if ( $etiketler !== '' ) {
		$aciklama .= "\n\n" . $etiketler;
	}

	$hedef_id = $platform === 'instagram' ? tilfy_ayar_al( 'meta_instagram_id' ) : tilfy_ayar_al( 'meta_sayfa_id' );
	if ( $hedef_id === '' ) {
		return array( 'ok' => false, 'mesaj' => 'Hedef hesap ID eksik' );
	}

	$jeton = tilfy_meta_yayin_jetonu_al();
	if ( is_wp_error( $jeton ) ) {
		return array( 'ok' => false, 'mesaj' => $jeton->get_error_message() );
	}

	$ayar   = function_exists( 'tilfy_paylasim_ayar_al' ) ? tilfy_paylasim_ayar_al( $paylasim ) : array();
	$format = sanitize_key( (string) ( $ayar['format'] ?? 'reels' ) );
	if ( ! in_array( $format, array( 'reels', 'story' ), true ) ) {
		$format = 'reels';
	}
	$kapak_id = $format === 'reels' ? (int) ( $ayar['thumbnail_id'] ?? 0 ) : 0;

	if ( $platform === 'instagram' ) {
		$tip = 'REELS';
		$ham_tip = strtoupper( (string) $icerik->medya_tipi );
		if ( in_array( $ham_tip, array( 'IMAGE', 'PHOTO' ), true ) ) {
			$tip = 'IMAGE';
		} elseif ( (int) $icerik->medya_dosya_id > 0 && function_exists( 'tilfy_medya_tipi_belirle' ) ) {
			$tip = tilfy_medya_tipi_belirle( (int) $icerik->medya_dosya_id ) === 'image' ? 'IMAGE' : 'REELS';
		}
		if ( $format === 'story' ) {
			$tip = 'STORIES';
		}
		$govde = array(
			'media_type' => $tip,
		);
		if ( $format !== 'story' ) {
			$govde['caption'] = $aciklama;
		}
		$gorsel = $tip === 'IMAGE';
		if ( $tip === 'STORIES' ) {
			$gorsel = in_array( strtoupper( (string) $icerik->medya_tipi ), array( 'IMAGE', 'PHOTO' ), true );
			if ( ! $gorsel && (int) $icerik->medya_dosya_id > 0 && function_exists( 'tilfy_medya_tipi_belirle' ) ) {
				$gorsel = tilfy_medya_tipi_belirle( (int) $icerik->medya_dosya_id ) === 'image';
			}
		}
		if ( $gorsel ) {
			$govde['image_url'] = $medya;
		} else {
			$govde['video_url'] = $medya;
			if ( $kapak_id > 0 && $tip === 'REELS' ) {
				$kapak_url = tilfy_meta_kapak_url_al( $kapak_id );
				if ( $kapak_url !== '' ) {
					$govde['cover_url'] = $kapak_url;
				}
			}
		}
		$konteyner = tilfy_meta_graph_istek( $hedef_id . '/media', array(), 'POST', $govde, $jeton );
		if ( is_wp_error( $konteyner ) ) {
			return array( 'ok' => false, 'mesaj' => $konteyner->get_error_message() );
		}
		$olusturma_id = $konteyner['id'] ?? '';
		if ( $olusturma_id === '' ) {
			return array( 'ok' => false, 'mesaj' => 'Konteyner olusturulamadi' );
		}
		$bekle = tilfy_meta_konteyner_hazir_mi( $olusturma_id, 30, $jeton );
		if ( is_wp_error( $bekle ) ) {
			return array( 'ok' => false, 'mesaj' => $bekle->get_error_message() );
		}
		$yayin = tilfy_meta_graph_istek(
			$hedef_id . '/media_publish',
			array(),
			'POST',
			array( 'creation_id' => $olusturma_id ),
			$jeton
		);
		if ( is_wp_error( $yayin ) ) {
			return array( 'ok' => false, 'mesaj' => $yayin->get_error_message() );
		}
		$yayin_id = (string) ( $yayin['id'] ?? $olusturma_id );
		return array(
			'ok'        => true,
			'hedef_id'  => $yayin_id,
			'hedef_url' => 'https://www.instagram.com/',
		);
	}

	$medya_tip = 'video';
	if ( (int) $icerik->medya_dosya_id > 0 && function_exists( 'tilfy_medya_tipi_belirle' ) ) {
		$medya_tip = tilfy_medya_tipi_belirle( (int) $icerik->medya_dosya_id );
	} elseif ( in_array( strtoupper( (string) $icerik->medya_tipi ), array( 'IMAGE', 'PHOTO' ), true ) ) {
		$medya_tip = 'image';
	}
	if ( $format === 'story' ) {
		if ( $medya_tip === 'image' ) {
			$fb = tilfy_meta_facebook_story_foto_gonder( $hedef_id, $jeton, $medya );
		} else {
			$dosya_yolu = '';
			$dosya_id   = (int) $icerik->medya_dosya_id;
			if ( $dosya_id > 0 ) {
				$yerel = get_attached_file( $dosya_id );
				if ( is_string( $yerel ) && $yerel !== '' && is_readable( $yerel ) ) {
					$dosya_yolu = $yerel;
				}
			}
			$fb = tilfy_meta_facebook_story_video_gonder( $hedef_id, $jeton, $dosya_yolu, $medya );
		}
	} elseif ( $medya_tip === 'image' ) {
		$fb = tilfy_meta_graph_istek(
			$hedef_id . '/photos',
			array(),
			'POST',
			array(
				'message' => $aciklama,
				'url'     => $medya,
			),
			$jeton
		);
	} else {
		$dosya_yolu = '';
		$dosya_id   = (int) $icerik->medya_dosya_id;
		if ( $dosya_id > 0 ) {
			$yerel = get_attached_file( $dosya_id );
			if ( is_string( $yerel ) && $yerel !== '' && is_readable( $yerel ) ) {
				$dosya_yolu = $yerel;
			}
		}
		$baslik = (string) ( $paylasim->ozel_baslik ?: $icerik->baslik );
		if ( $baslik === '' ) {
			$baslik = wp_trim_words( wp_strip_all_tags( $aciklama ), 8, '' );
		}
		$fb = tilfy_meta_facebook_video_yukle( $hedef_id, $aciklama, $jeton, $dosya_yolu, $medya, $baslik );
	}
	if ( is_wp_error( $fb ) ) {
		return array( 'ok' => false, 'mesaj' => $fb->get_error_message() );
	}
	$hedef_id_fb = (string) ( $fb['id'] ?? '' );
	if ( $kapak_id > 0 && $hedef_id_fb !== '' && $format === 'reels' && $medya_tip === 'video' ) {
		$kapak = tilfy_meta_facebook_kapak_ekle( $hedef_id_fb, $jeton, $kapak_id );
		if ( is_wp_error( $kapak ) && function_exists( 'tilfy_diag_log' ) ) {
			tilfy_diag_log( 'Facebook kapak: ' . $kapak->get_error_message() );
		}
	}
	return array(
		'ok'        => true,
		'hedef_id'  => $hedef_id_fb,
		'hedef_url' => 'https://www.facebook.com/' . rawurlencode( $hedef_id_fb ),
	);
}

function tilfy_meta_facebook_story_video_gonder( $sayfa_id, $jeton, $dosya_yolu = '', $dosya_url = '' ) {
	$sayfa_id = sanitize_text_field( $sayfa_id );
	if ( $sayfa_id === '' ) {
		return new WP_Error( 'tilfy_meta', 'Sayfa ID eksik' );
	}
	$uc = tilfy_meta_graph_url( $sayfa_id . '/video_stories' );
	$govde = array( 'access_token' => $jeton );
	if ( is_string( $dosya_yolu ) && $dosya_yolu !== '' && is_readable( $dosya_yolu ) ) {
		$mime  = wp_check_filetype( $dosya_yolu )['type'] ?: 'video/mp4';
		$yanit = tilfy_http_multipart_post( $uc, $govde, 'source', $dosya_yolu, $mime, 600 );
		if ( is_wp_error( $yanit ) ) {
			return new WP_Error( 'tilfy_meta', 'Facebook Story: ' . $yanit->get_error_message() );
		}
		$ham    = (string) wp_remote_retrieve_body( $yanit );
		$kod    = (int) wp_remote_retrieve_response_code( $yanit );
		$parsed = json_decode( $ham, true );
		if ( ! is_array( $parsed ) ) {
			return new WP_Error( 'tilfy_meta', 'Facebook Story yaniti gecersiz (HTTP ' . $kod . ')' );
		}
		if ( isset( $parsed['error'] ) ) {
			return new WP_Error( 'tilfy_meta', 'Facebook Story desteklenmiyor veya yetki eksik: ' . tilfy_meta_facebook_hata_mesaji( $parsed['error'] ) );
		}
		return $parsed;
	}
	if ( $dosya_url !== '' ) {
		$yanit = wp_remote_post(
			$uc,
			array(
				'timeout' => 600,
				'body'    => array(
					'access_token' => $jeton,
					'video_url'    => $dosya_url,
				),
			)
		);
		if ( is_wp_error( $yanit ) ) {
			return $yanit;
		}
		$parsed = json_decode( (string) wp_remote_retrieve_body( $yanit ), true );
		if ( ! is_array( $parsed ) ) {
			return new WP_Error( 'tilfy_meta', 'Facebook Story yaniti gecersiz' );
		}
		if ( isset( $parsed['error'] ) ) {
			return new WP_Error( 'tilfy_meta', 'Facebook Story desteklenmiyor veya yetki eksik: ' . tilfy_meta_facebook_hata_mesaji( $parsed['error'] ) );
		}
		return $parsed;
	}
	return new WP_Error( 'tilfy_meta', 'Story video dosyasi bulunamadi' );
}

function tilfy_meta_facebook_story_foto_gonder( $sayfa_id, $jeton, $foto_url ) {
	$sayfa_id = sanitize_text_field( $sayfa_id );
	$foto_url = esc_url_raw( $foto_url );
	if ( $sayfa_id === '' || $foto_url === '' ) {
		return new WP_Error( 'tilfy_meta', 'Story foto URL eksik' );
	}
	$yanit = tilfy_meta_graph_istek(
		$sayfa_id . '/photo_stories',
		array(),
		'POST',
		array( 'photo_url' => $foto_url ),
		$jeton
	);
	if ( is_wp_error( $yanit ) ) {
		$mesaj = $yanit->get_error_message();
		if ( stripos( $mesaj, 'photo_stories' ) !== false || stripos( $mesaj, 'Unsupported' ) !== false ) {
			return new WP_Error( 'tilfy_meta', 'Facebook Story foto desteklenmiyor veya yetki eksik: ' . $mesaj );
		}
		return $yanit;
	}
	return $yanit;
}

function tilfy_meta_facebook_video_yukle( $sayfa_id, $aciklama, $jeton, $dosya_yolu = '', $dosya_url = '', $baslik = '' ) {
	$sayfa_id = sanitize_text_field( $sayfa_id );
	if ( $sayfa_id === '' ) {
		return new WP_Error( 'tilfy_meta', 'Sayfa ID eksik' );
	}
	$uc = tilfy_meta_graph_video_url( $sayfa_id . '/videos' );
	$alanlar = array(
		'access_token' => $jeton,
		'description'  => function_exists( 'tilfy_metin_kisalt' ) ? tilfy_metin_kisalt( $aciklama, 5000 ) : $aciklama,
		'published'    => 'true',
	);
	$baslik = trim( (string) $baslik );
	if ( $baslik !== '' ) {
		$alanlar['title'] = function_exists( 'tilfy_metin_kisalt' ) ? tilfy_metin_kisalt( $baslik, 100 ) : $baslik;
	}
	$yerel_var = is_string( $dosya_yolu ) && $dosya_yolu !== '' && is_readable( $dosya_yolu );
	if ( $yerel_var ) {
		$sonuc = tilfy_meta_facebook_video_dosya_yukle( $uc, $dosya_yolu, $alanlar );
		if ( ! is_wp_error( $sonuc ) ) {
			return $sonuc;
		}
		return $sonuc;
	}
	if ( $dosya_url !== '' ) {
		$yanit = wp_remote_post(
			$uc,
			array(
				'timeout' => 600,
				'body'    => array_merge( $alanlar, array( 'file_url' => $dosya_url ) ),
			)
		);
		return tilfy_meta_facebook_video_yanit_coz( $yanit, 'file_url' );
	}
	return new WP_Error( 'tilfy_meta', 'Video dosyasi bulunamadi' );
}

function tilfy_meta_facebook_video_yanit_coz( $yanit, $yontem = '' ) {
	if ( is_wp_error( $yanit ) ) {
		return $yanit;
	}
	$govde_ham = (string) wp_remote_retrieve_body( $yanit );
	$parsed    = json_decode( $govde_ham, true );
	if ( ! is_array( $parsed ) ) {
		$kod = (int) wp_remote_retrieve_response_code( $yanit );
		if ( function_exists( 'tilfy_diag_log' ) ) {
			tilfy_diag_log( 'Facebook video ' . $yontem . ' HTTP ' . $kod . ' ' . substr( $govde_ham, 0, 800 ) );
		}
		return new WP_Error( 'tilfy_meta', 'Facebook video yaniti gecersiz (HTTP ' . $kod . ')' );
	}
	if ( isset( $parsed['error'] ) ) {
		$mesaj = tilfy_meta_facebook_hata_mesaji( $parsed['error'] );
		if ( function_exists( 'tilfy_diag_log' ) ) {
			tilfy_diag_log( 'Facebook video ' . $yontem . ': ' . $mesaj . ' ' . substr( $govde_ham, 0, 800 ) );
		}
		return new WP_Error( 'tilfy_meta', $mesaj );
	}
	if ( empty( $parsed['id'] ) ) {
		return new WP_Error( 'tilfy_meta', 'Facebook video ID donmedi' );
	}
	if ( function_exists( 'tilfy_diag_log' ) ) {
		tilfy_diag_log( 'Facebook video ' . $yontem . ' yuklendi id=' . $parsed['id'] );
	}
	return $parsed;
}

function tilfy_meta_facebook_hata_mesaji( $error ) {
	$error = is_array( $error ) ? $error : array();
	$mesaj = (string) ( $error['error_user_msg'] ?? $error['message'] ?? 'Facebook video hatasi' );
	$kod   = $error['code'] ?? '';
	$sub   = $error['error_subcode'] ?? '';
	if ( $kod !== '' ) {
		$mesaj .= ' (#' . $kod;
		if ( $sub !== '' ) {
			$mesaj .= '/' . $sub;
		}
		$mesaj .= ')';
	}
	return $mesaj;
}

function tilfy_meta_facebook_video_dosya_yukle( $uc, $dosya_yolu, $alanlar ) {
	$mime  = wp_check_filetype( $dosya_yolu )['type'] ?: 'video/mp4';
	$yanit = tilfy_http_multipart_post( $uc, $alanlar, 'source', $dosya_yolu, $mime, 600 );
	return tilfy_meta_facebook_video_yanit_coz( $yanit, 'source' );
}

function tilfy_meta_konteyner_hazir_mi( $konteyner_id, $max_deneme = 30, $jeton = null ) {
	$konteyner_id = sanitize_text_field( $konteyner_id );
	if ( $konteyner_id === '' ) {
		return new WP_Error( 'tilfy_meta', 'Konteyner ID bos' );
	}
	for ( $i = 0; $i < $max_deneme; $i++ ) {
		$durum = tilfy_meta_graph_istek(
			$konteyner_id,
			array( 'fields' => 'status_code,status' ),
			'GET',
			null,
			$jeton
		);
		if ( is_wp_error( $durum ) ) {
			return $durum;
		}
		$kod = strtoupper( (string) ( $durum['status_code'] ?? '' ) );
		if ( $kod === 'FINISHED' ) {
			return true;
		}
		if ( $kod === 'ERROR' || $kod === 'EXPIRED' ) {
			$detay = (string) ( $durum['status'] ?? $kod );
			return new WP_Error( 'tilfy_meta', 'Medya islenemedi: ' . $detay );
		}
		sleep( 2 );
	}
	return new WP_Error( 'tilfy_meta', 'Medya hazir degil; lutfen bir dakika sonra tekrar deneyin' );
}

function tilfy_meta_sayfalari_bul() {
	$veri = tilfy_meta_graph_istek(
		'me/accounts',
		array(
			'fields' => 'id,name,instagram_business_account',
			'limit'  => 50,
		)
	);
	if ( is_wp_error( $veri ) ) {
		return $veri;
	}
	$liste = array();
	foreach ( (array) ( $veri['data'] ?? array() ) as $sayfa ) {
		$ig = $sayfa['instagram_business_account']['id'] ?? '';
		if ( $ig === '' && is_array( $sayfa['instagram_business_account'] ?? null ) ) {
			$ig = (string) ( $sayfa['instagram_business_account']['id'] ?? '' );
		}
		$liste[] = array(
			'sayfa_id'     => (string) ( $sayfa['id'] ?? '' ),
			'ad'           => (string) ( $sayfa['name'] ?? '' ),
			'instagram_id' => (string) $ig,
		);
	}
	return $liste;
}

function tilfy_meta_sayfa_instagram_id_al( $sayfa_id ) {
	$sayfa_id = sanitize_text_field( $sayfa_id );
	if ( $sayfa_id === '' ) {
		return new WP_Error( 'tilfy_meta', 'Sayfa ID bos' );
	}
	$jeton = tilfy_meta_yayin_jetonu_al();
	if ( is_wp_error( $jeton ) || $jeton === '' ) {
		$jeton = tilfy_ayar_al( 'meta_erisim_jetonu' );
	}
	if ( $jeton === '' ) {
		return new WP_Error( 'tilfy_meta', 'Meta erisim jetonu eksik' );
	}
	return tilfy_meta_graph_istek(
		$sayfa_id,
		array( 'fields' => 'name,instagram_business_account' ),
		'GET',
		null,
		$jeton
	);
}

function tilfy_meta_ilk_sayfayi_kaydet() {
	if ( ! function_exists( 'tilfy_meta_sayfalari_bul' ) ) {
		return false;
	}
	$liste = tilfy_meta_sayfalari_bul();
	if ( is_wp_error( $liste ) || empty( $liste ) ) {
		return false;
	}
	$ilk = $liste[0];
	$kayit = array();
	if ( ! empty( $ilk['sayfa_id'] ) ) {
		$kayit['meta_sayfa_id'] = $ilk['sayfa_id'];
	}
	if ( ! empty( $ilk['instagram_id'] ) ) {
		$kayit['meta_instagram_id'] = $ilk['instagram_id'];
	}
	if ( empty( $kayit ) ) {
		return false;
	}
	tilfy_ayar_kaydet( $kayit );
	return true;
}
