<?php

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

function tilfy_temizlik_paylasimlar_tumu() {
	if ( ! function_exists( 'tilfy_paylasim_toplu_sil' ) ) {
		return array( 'ok' => false, 'mesaj' => 'Silme modulu yok' );
	}
	$adet = (int) tilfy_paylasim_toplu_sil( 'tumu' );
	return array(
		'ok'    => true,
		'mesaj' => $adet . ' paylasim kaydi silindi. Sosyal medyadaki gonderiler kalir.',
		'adet'  => $adet,
	);
}

function tilfy_temizlik_takvim() {
	global $wpdb;
	$pt    = tilfy_tablo( 'paylasim' );
	$idler = array_map( 'intval', (array) $wpdb->get_col(
		"SELECT id FROM {$pt} WHERE durum = 'zamanlandi' OR zamanlama IS NOT NULL"
	) );
	$sayac = 0;
	foreach ( $idler as $pid ) {
		if ( function_exists( 'tilfy_kuyruk_paylasim_iptal' ) ) {
			tilfy_kuyruk_paylasim_iptal( (int) $pid );
		}
		if ( function_exists( 'tilfy_paylasim_sil' ) ) {
			$sayac += (int) tilfy_paylasim_sil( (int) $pid );
		}
	}
	return array(
		'ok'    => true,
		'mesaj' => $sayac . ' zamanlanmis paylasim silindi.',
		'adet'  => $sayac,
	);
}

function tilfy_temizlik_otomasyon_tumu() {
	global $wpdb;
	$batch = tilfy_tablo( 'otomasyon_batch' );
	if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $batch ) ) === $batch ) {
		$wpdb->query( "DELETE FROM {$batch}" );
	}
	$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'otomasyon_kayit' ) );
	$kurallar = (int) $wpdb->get_var( 'SELECT COUNT(*) FROM ' . tilfy_tablo( 'otomasyon' ) );
	$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'otomasyon' ) );
	return array(
		'ok'    => true,
		'mesaj' => $kurallar . ' otomasyon kurali ve iliskili kayitlar silindi.',
		'adet'  => $kurallar,
	);
}

function tilfy_temizlik_platform_icerik( $platform ) {
	global $wpdb;
	$platform = sanitize_key( (string) $platform );
	if ( $platform === '' || ! tilfy_platform_aktif_mi( $platform ) ) {
		return array( 'ok' => false, 'mesaj' => 'Gecersiz platform' );
	}
	$idler = array_map(
		'intval',
		(array) $wpdb->get_col(
			$wpdb->prepare(
				'SELECT id FROM ' . tilfy_tablo( 'icerik' ) . ' WHERE kaynak_platform = %s',
				$platform
			)
		)
	);
	if ( empty( $idler ) ) {
		return array(
			'ok'    => true,
			'mesaj' => tilfy_platform_etiket( $platform ) . ' kaynakli icerik yok.',
			'adet'  => 0,
		);
	}
	if ( function_exists( 'tilfy_icerik_toplu_sifirla' ) ) {
		$sonuc = tilfy_icerik_toplu_sifirla( $idler );
		return array(
			'ok'    => ! empty( $sonuc['ok'] ),
			'mesaj' => (int) ( $sonuc['adet'] ?? count( $idler ) ) . ' ' . tilfy_platform_etiket( $platform ) . ' icerigi ve bagli kayitlar silindi.',
			'adet'  => (int) ( $sonuc['adet'] ?? 0 ),
		);
	}
	return array( 'ok' => false, 'mesaj' => 'Icerik silme modulu yok' );
}

function tilfy_temizlik_plugin_sifirla() {
	global $wpdb;
	$paylasim_ids = array_map( 'intval', (array) $wpdb->get_col( 'SELECT id FROM ' . tilfy_tablo( 'paylasim' ) ) );
	foreach ( $paylasim_ids as $pid ) {
		if ( function_exists( 'tilfy_kuyruk_paylasim_iptal' ) ) {
			tilfy_kuyruk_paylasim_iptal( $pid );
		}
	}
	$icerik_ids = array_map( 'intval', (array) $wpdb->get_col( 'SELECT id FROM ' . tilfy_tablo( 'icerik' ) ) );
	if ( function_exists( 'tilfy_icerik_toplu_sifirla' ) && ! empty( $icerik_ids ) ) {
		tilfy_icerik_toplu_sifirla( $icerik_ids );
	} else {
		$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'paylasim' ) );
		$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'icerik' ) );
	}
	$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'istatistik' ) );
	$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'kuyruk' ) );
	$batch = tilfy_tablo( 'otomasyon_batch' );
	if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $batch ) ) === $batch ) {
		$wpdb->query( "DELETE FROM {$batch}" );
	}
	$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'otomasyon_kayit' ) );
	$wpdb->query( 'DELETE FROM ' . tilfy_tablo( 'otomasyon' ) );
	if ( function_exists( 'tilfy_medya_onbellek_temizle' ) ) {
		tilfy_medya_onbellek_temizle();
	}
	$wpdb->query(
		$wpdb->prepare(
			"DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s OR option_name LIKE %s",
			$wpdb->esc_like( 'tilfy_paylasim_log_' ) . '%',
			$wpdb->esc_like( 'tilfy_manuel_paket_' ) . '%',
			$wpdb->esc_like( '_transient_tilfy_' ) . '%'
		)
	);
	return array(
		'ok'    => true,
		'mesaj' => 'Icerik, paylasim, kuyruk, otomasyon ve istatistik silindi. API ayarlari korundu.',
	);
}

function tilfy_temizlik_calistir( $islem, $platform = '' ) {
	$islem = sanitize_key( (string) $islem );
	switch ( $islem ) {
		case 'medya_onbellek':
			if ( ! function_exists( 'tilfy_medya_onbellek_temizle' ) ) {
				return array( 'ok' => false, 'mesaj' => 'Medya modulu yok' );
			}
			$sonuc = tilfy_medya_onbellek_temizle();
			return array(
				'ok'    => true,
				'mesaj' => sprintf(
					'%d dosya silindi, %d dosya korundu.',
					(int) ( $sonuc['silinen'] ?? 0 ),
					(int) ( $sonuc['atlanan'] ?? 0 )
				),
				'sonuc' => $sonuc,
			);
		case 'medya_klasor_video':
		case 'medya_klasor_image':
		case 'medya_klasor_thumbnails':
			if ( ! function_exists( 'tilfy_medya_klasor_temizle' ) ) {
				return array( 'ok' => false, 'mesaj' => 'Medya modulu yok' );
			}
			$tip_map = array(
				'medya_klasor_video'      => 'video',
				'medya_klasor_image'      => 'image',
				'medya_klasor_thumbnails' => 'thumbnail',
			);
			$sonuc = tilfy_medya_klasor_temizle( $tip_map[ $islem ] );
			$etiket = array(
				'video'     => 'Video',
				'image'     => 'Image',
				'thumbnail' => 'Thumbnails',
			);
			return array(
				'ok'    => ! empty( $sonuc['ok'] ),
				'mesaj' => sprintf(
					'%s: %d dosya silindi, %d korundu.',
					$etiket[ $tip_map[ $islem ] ] ?? 'Klasor',
					(int) ( $sonuc['silinen'] ?? 0 ),
					(int) ( $sonuc['atlanan'] ?? 0 )
				),
				'sonuc' => $sonuc,
			);
		case 'paylasimlar':
			return tilfy_temizlik_paylasimlar_tumu();
		case 'takvim':
			return tilfy_temizlik_takvim();
		case 'otomasyon':
			return tilfy_temizlik_otomasyon_tumu();
		case 'platform_icerik':
			return tilfy_temizlik_platform_icerik( $platform );
		case 'plugin_sifirla':
			return tilfy_temizlik_plugin_sifirla();
		default:
			return array( 'ok' => false, 'mesaj' => 'Bilinmeyen islem' );
	}
}
