<?php

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

function tilfy_baglanti_saglik_sonuc( $platform, $etiket, $durum, $mesaj, $detay = array() ) {
	return array(
		'platform' => sanitize_key( $platform ),
		'etiket'   => (string) $etiket,
		'durum'    => sanitize_key( $durum ),
		'mesaj'    => (string) $mesaj,
		'detay'    => is_array( $detay ) ? $detay : array(),
	);
}

function tilfy_meta_app_jetonu() {
	$app_id  = tilfy_ayar_al( 'meta_uygulama_id' );
	$app_giz = tilfy_ayar_al( 'meta_uygulama_gizli' );
	if ( $app_id === '' || $app_giz === '' ) {
		return '';
	}
	return $app_id . '|' . $app_giz;
}

function tilfy_meta_app_izinleri() {
	$app_token = tilfy_meta_app_jetonu();
	$app_id    = tilfy_ayar_al( 'meta_uygulama_id' );
	if ( $app_token === '' || $app_id === '' ) {
		return array();
	}
	$yanit = wp_remote_get(
		add_query_arg( 'access_token', $app_token, tilfy_meta_graph_url( rawurlencode( $app_id ) . '/permissions' ) ),
		array( 'timeout' => 20 )
	);
	if ( is_wp_error( $yanit ) ) {
		return array();
	}
	$govde = json_decode( wp_remote_retrieve_body( $yanit ), true );
	$izinler = array();
	foreach ( (array) ( $govde['data'] ?? array() ) as $satir ) {
		$ad = (string) ( $satir['permission'] ?? '' );
		if ( $ad !== '' ) {
			$izinler[] = $ad;
		}
	}
	return $izinler;
}

function tilfy_baglanti_saglik_api_yukle( $platform = '' ) {
	$platform = sanitize_key( (string) $platform );
	$meta     = in_array( $platform, array( 'facebook', 'instagram', 'threads', '' ), true );
	$youtube  = in_array( $platform, array( 'youtube', '' ), true );
	if ( $meta && function_exists( 'tilfy_meta_api_yuklu_mi' ) ) {
		tilfy_meta_api_yuklu_mi();
	} elseif ( $meta && function_exists( 'tilfy_api_dosyalari_yukle' ) ) {
		tilfy_api_dosyalari_yukle();
	}
	if ( $youtube && ! function_exists( 'tilfy_youtube_api_istek' ) ) {
		if ( function_exists( 'tilfy_api_dosyalari_yukle' ) ) {
			tilfy_api_dosyalari_yukle();
		} else {
			$dosya = TILFY_YOL . 'includes/api/youtube.php';
			if ( is_readable( $dosya ) ) {
				require_once $dosya;
			}
		}
	}
	$tiktok = in_array( $platform, array( 'tiktok', '' ), true );
	if ( $tiktok && ! function_exists( 'tilfy_tiktok_api_istek' ) ) {
		if ( function_exists( 'tilfy_api_dosyalari_yukle' ) ) {
			tilfy_api_dosyalari_yukle();
		} else {
			$dosya = TILFY_YOL . 'includes/api/tiktok.php';
			if ( is_readable( $dosya ) ) {
				require_once $dosya;
			}
		}
	}
}

function tilfy_baglanti_saglik_meta_hata() {
	$dosya = TILFY_YOL . 'includes/api/meta.php';
	if ( ! is_readable( $dosya ) ) {
		return 'Meta API dosyasi eksik (includes/api/meta.php FTP ile yukleyin)';
	}
	return 'Meta API dosyasi yuklenemedi (includes/api/meta.php)';
}

function tilfy_baglanti_saglik_facebook() {
	tilfy_baglanti_saglik_api_yukle( 'facebook' );
	$etiket = tilfy_platform_etiket( 'facebook' );
	$sayfa  = tilfy_ayar_al( 'meta_sayfa_id' );
	if ( $sayfa === '' || tilfy_ayar_al( 'meta_erisim_jetonu' ) === '' ) {
		return tilfy_baglanti_saglik_sonuc( 'facebook', $etiket, 'eksik', 'Sayfa ID veya Meta erisim jetonu eksik' );
	}
	if ( ! function_exists( 'tilfy_meta_api_yuklu_mi' ) || ! tilfy_meta_api_yuklu_mi() ) {
		return tilfy_baglanti_saglik_sonuc( 'facebook', $etiket, 'hata', tilfy_baglanti_saglik_meta_hata() );
	}
	$jeton = tilfy_meta_yayin_jetonu_al();
	if ( is_wp_error( $jeton ) ) {
		return tilfy_baglanti_saglik_sonuc( 'facebook', $etiket, 'hata', $jeton->get_error_message() );
	}
	$gonderi = function_exists( 'tilfy_meta_facebook_gonderi_istek' )
		? tilfy_meta_facebook_gonderi_istek(
			$sayfa . '/published_posts',
			array(
				'limit'  => 1,
				'fields' => 'id',
			)
		)
		: tilfy_meta_graph_sayfa_istek(
			$sayfa . '/published_posts',
			array(
				'limit'  => 1,
				'fields' => 'id',
			)
		);
	if ( is_wp_error( $gonderi ) ) {
		$mesaj = $gonderi->get_error_message();
		if ( function_exists( 'tilfy_meta_hata_sayfa_jetonu_gerekli' ) && tilfy_meta_hata_sayfa_jetonu_gerekli( $gonderi ) ) {
			$mesaj .= ' Ayarlar → Sayfa jetonu al veya Meta ile yeniden baglanin.';
		}
		return tilfy_baglanti_saglik_sonuc( 'facebook', $etiket, 'hata', $mesaj );
	}
	return tilfy_baglanti_saglik_sonuc(
		'facebook',
		$etiket,
		'saglikli',
		'Facebook baglantisi aktif',
		array( 'sayfa_id' => $sayfa )
	);
}

function tilfy_baglanti_saglik_instagram() {
	tilfy_baglanti_saglik_api_yukle( 'instagram' );
	$etiket = tilfy_platform_etiket( 'instagram' );
	$ig_id  = tilfy_ayar_al( 'meta_instagram_id' );
	if ( $ig_id === '' || tilfy_ayar_al( 'meta_erisim_jetonu' ) === '' ) {
		return tilfy_baglanti_saglik_sonuc( 'instagram', $etiket, 'eksik', 'Instagram isletme ID veya Meta erisim jetonu eksik' );
	}
	if ( ! function_exists( 'tilfy_meta_api_yuklu_mi' ) || ! tilfy_meta_api_yuklu_mi() ) {
		return tilfy_baglanti_saglik_sonuc( 'instagram', $etiket, 'hata', tilfy_baglanti_saglik_meta_hata() );
	}
	$jeton = tilfy_meta_yayin_jetonu_al();
	if ( is_wp_error( $jeton ) ) {
		return tilfy_baglanti_saglik_sonuc( 'instagram', $etiket, 'hata', $jeton->get_error_message() );
	}
	if ( ! function_exists( 'tilfy_meta_graph_istek' ) ) {
		return tilfy_baglanti_saglik_sonuc( 'instagram', $etiket, 'hata', tilfy_baglanti_saglik_meta_hata() );
	}
	$veri = tilfy_meta_graph_istek(
		$ig_id . '/media',
		array(
			'fields' => 'id,caption',
			'limit'  => 1,
		),
		'GET',
		null,
		$jeton
	);
	if ( is_wp_error( $veri ) ) {
		return tilfy_baglanti_saglik_sonuc( 'instagram', $etiket, 'hata', $veri->get_error_message() );
	}
	$kullanici = '';
	$profil    = tilfy_meta_graph_istek( $ig_id, array( 'fields' => 'username' ), 'GET', null, $jeton );
	if ( ! is_wp_error( $profil ) ) {
		$kullanici = (string) ( $profil['username'] ?? '' );
	}
	$mesaj = $kullanici !== '' ? 'Instagram baglantisi aktif (@' . $kullanici . ')' : 'Instagram baglantisi aktif';
	return tilfy_baglanti_saglik_sonuc(
		'instagram',
		$etiket,
		'saglikli',
		$mesaj,
		array( 'instagram_id' => $ig_id, 'username' => $kullanici )
	);
}

function tilfy_baglanti_saglik_threads() {
	$threads_dosya = TILFY_YOL . 'includes/api/threads.php';
	if ( is_readable( $threads_dosya ) ) {
		require_once $threads_dosya;
	}
	tilfy_baglanti_saglik_api_yukle( 'threads' );
	$etiket = tilfy_platform_etiket( 'threads' );
	if ( ! function_exists( 'tilfy_threads_api_aktif_mi' ) || ! tilfy_threads_api_aktif_mi() ) {
		if ( ! function_exists( 'tilfy_threads_uygulama_hazir_mi' ) || ! tilfy_threads_uygulama_hazir_mi() ) {
			return tilfy_baglanti_saglik_sonuc( 'threads', $etiket, 'eksik', 'Threads uygulama ID/gizli eksik; Meta Developer Threads API ayarlarindan girin' );
		}
		return tilfy_baglanti_saglik_sonuc(
			'threads',
			$etiket,
			'eksik',
			'Threads ile baglanin'
		);
	}
	$profil = tilfy_threads_profil_dogrula();
	if ( is_wp_error( $profil ) ) {
		return tilfy_baglanti_saglik_sonuc( 'threads', $etiket, 'hata', $profil->get_error_message() );
	}
	$ad = (string) ( $profil['username'] ?? $profil['name'] ?? tilfy_ayar_al( 'threads_kullanici_id' ) );
	return tilfy_baglanti_saglik_sonuc(
		'threads',
		$etiket,
		'saglikli',
		'Threads baglantisi aktif (@' . $ad . ')',
		array( 'profil' => $profil )
	);
}

function tilfy_baglanti_saglik_youtube() {
	tilfy_baglanti_saglik_api_yukle( 'youtube' );
	$etiket = tilfy_platform_etiket( 'youtube' );
	$kanal  = tilfy_ayar_al( 'youtube_kanal_id' );
	if ( $kanal === '' ) {
		return tilfy_baglanti_saglik_sonuc( 'youtube', $etiket, 'eksik', 'Kanal ID eksik' );
	}
	if ( tilfy_ayar_al( 'youtube_yenileme_jetonu' ) === '' && tilfy_ayar_al( 'youtube_erisim_jetonu' ) === '' ) {
		return tilfy_baglanti_saglik_sonuc( 'youtube', $etiket, 'eksik', 'YouTube ile baglanin veya Jetonlari sifirlayip yeniden baglanin' );
	}
	if ( ! function_exists( 'tilfy_youtube_api_istek' ) ) {
		return tilfy_baglanti_saglik_sonuc( 'youtube', $etiket, 'hata', 'YouTube modulu yuklu degil' );
	}
	$veri = tilfy_youtube_api_istek(
		'channels',
		array(
			'part' => 'snippet',
			'id'   => $kanal,
		)
	);
	if ( is_wp_error( $veri ) ) {
		return tilfy_baglanti_saglik_sonuc( 'youtube', $etiket, 'hata', $veri->get_error_message() );
	}
	$item = (array) ( $veri['items'][0] ?? array() );
	if ( empty( $item ) ) {
		return tilfy_baglanti_saglik_sonuc( 'youtube', $etiket, 'hata', 'Kanal bulunamadi veya jeton yetkisiz' );
	}
	$ad = (string) ( $item['snippet']['title'] ?? $kanal );
	return tilfy_baglanti_saglik_sonuc(
		'youtube',
		$etiket,
		'saglikli',
		'Kanal erisimi calisiyor: ' . $ad,
		array( 'kanal_id' => $kanal, 'kanal_adi' => $ad )
	);
}

function tilfy_baglanti_saglik_linkedin() {
	$etiket = tilfy_platform_etiket( 'linkedin' );
	$jeton  = tilfy_ayar_al( 'linkedin_erisim_jetonu' );
	if ( $jeton === '' ) {
		return tilfy_baglanti_saglik_sonuc( 'linkedin', $etiket, 'eksik', 'LinkedIn erisim jetonu eksik' );
	}
	$yanit = wp_remote_get(
		'https://api.linkedin.com/v2/userinfo',
		array(
			'timeout' => 20,
			'headers' => array(
				'Authorization' => 'Bearer ' . $jeton,
			),
		)
	);
	if ( is_wp_error( $yanit ) ) {
		return tilfy_baglanti_saglik_sonuc( 'linkedin', $etiket, 'hata', $yanit->get_error_message() );
	}
	$kod = (int) wp_remote_retrieve_response_code( $yanit );
	if ( $kod < 200 || $kod >= 300 ) {
		return tilfy_baglanti_saglik_sonuc( 'linkedin', $etiket, 'hata', 'LinkedIn HTTP ' . $kod );
	}
	$govde = json_decode( wp_remote_retrieve_body( $yanit ), true );
	$ad = (string) ( $govde['name'] ?? $govde['email'] ?? '' );
	if ( ! empty( $govde['sub'] ) ) {
		$kayit = array( 'linkedin_uye_id' => sanitize_text_field( (string) $govde['sub'] ) );
		if ( $ad !== '' ) {
			$kayit['linkedin_profil_adi'] = sanitize_text_field( $ad );
		}
		tilfy_ayar_kaydet( $kayit );
	}
	$hedef = 'Paylasim hedefi: kisisel profil';
	$mesaj = $ad !== '' ? 'Jeton gecerli: ' . $ad . '. ' . $hedef : 'LinkedIn jetonu gecerli. ' . $hedef;
	return tilfy_baglanti_saglik_sonuc( 'linkedin', $etiket, 'saglikli', $mesaj, array( 'profil' => $ad ) );
}

function tilfy_baglanti_saglik_tiktok() {
	tilfy_baglanti_saglik_api_yukle( 'tiktok' );
	$etiket  = tilfy_platform_etiket( 'tiktok' );
	$anahtar = tilfy_ayar_al( 'tiktok_istemci_anahtar' );
	$jeton   = tilfy_ayar_al( 'tiktok_erisim_jetonu' );
	$open_id = tilfy_ayar_al( 'tiktok_open_id' );
	if ( $jeton === '' || $open_id === '' ) {
		if ( $anahtar === '' ) {
			return tilfy_baglanti_saglik_sonuc( 'tiktok', $etiket, 'manuel', 'Manuel paylasim; API anahtari girilmedi' );
		}
		return tilfy_baglanti_saglik_sonuc( 'tiktok', $etiket, 'eksik', 'Anahtarlar kayitli; TikTok ile baglan ile OAuth tamamlayin' );
	}
	if ( ! function_exists( 'tilfy_tiktok_profil_dogrula' ) ) {
		return tilfy_baglanti_saglik_sonuc( 'tiktok', $etiket, 'hata', 'TikTok modulu yuklu degil' );
	}
	$profil = tilfy_tiktok_profil_dogrula();
	if ( is_wp_error( $profil ) ) {
		return tilfy_baglanti_saglik_sonuc( 'tiktok', $etiket, 'hata', $profil->get_error_message() );
	}
	$ad = (string) ( $profil['creator_username'] ?? $profil['creator_nickname'] ?? $open_id );
	return tilfy_baglanti_saglik_sonuc( 'tiktok', $etiket, 'saglikli', 'API aktif: @' . $ad );
}

function tilfy_baglanti_saglik_tumu() {
	tilfy_baglanti_saglik_api_yukle( '' );
	$sonuclar = array();
	$kontrol  = array(
		'facebook'  => 'tilfy_baglanti_saglik_facebook',
		'instagram' => 'tilfy_baglanti_saglik_instagram',
		'threads'   => 'tilfy_baglanti_saglik_threads',
		'youtube'   => 'tilfy_baglanti_saglik_youtube',
		'linkedin'  => 'tilfy_baglanti_saglik_linkedin',
		'tiktok'    => 'tilfy_baglanti_saglik_tiktok',
	);
	foreach ( $kontrol as $platform => $fonksiyon ) {
		if ( function_exists( $fonksiyon ) ) {
			$sonuclar[] = call_user_func( $fonksiyon );
		}
	}
	return $sonuclar;
}
