﻿<?php
// Estructura del menú en array (igual al JSON dado)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$menu = [
	"menu0" => [
		"titulo" => "menu 0",
		"submenus" => [
			"menu1" => [
				"titulo" => "📝 Escribir crónica",
				"submenus" => [
					"menu11" => [
						"titulo" => "🤾 partido A",
						"submenus" => []
					],
					"menu12" => [
						"titulo" => "🤾 partido B",
						"submenus" => []
					]
				]
			],
			"menu2" => [
				"titulo" => "📖 Ver y editar crónicas",
				"submenus" => [
					"menu21" => [
						"titulo" => "🤾 partido C",
						"submenus" => []
					],
					"menu22" => [
						"titulo" => "🤾 partido D",
						"submenus" => []
					]
				]
			],
			"menu3" => [
				"titulo" => "🔗 Ver y editar Link a Gdrive Fotos",
				"submenus" => [
					"menu31" => [
						"titulo" => "🤾 partido E",
						"submenus" => []
					],
					"menu32" => [
						"titulo" => "🤾 partido F",
						"submenus" => []
					]
				]
			],
			"menu4" => [
				"titulo" => "📷 Subir Fotos desde el móvil",
				"submenus" => [
					"menu41" => [
						"titulo" => "🤾 partido G",
						"submenus" => []
					],
					"menu42" => [
						"titulo" => "🤾 partido H",
						"submenus" => []
					]
				]
			],
			"menu5" => [
				"titulo" => "🎥 Ver y editar URL video de partido",
				"submenus" => [
					"menu51" => [
						"titulo" => "🤾 partido I",
						"submenus" => []
					],
					"menu52" => [
						"titulo" => "🤾 partido J",
						"submenus" => []
					]
				]
			],
			"menu7" => [
				"titulo" => "Salir",
				"submenus" => []
			]
		]
	]
];


$fecha = date('Y-m-d H:i:s');
$update = file_get_contents("php://input");

file_put_contents("registro_de_actualizaciones.log",PHP_EOL. $fecha.' - '.$update, FILE_APPEND);
$update = json_decode($update,true); 

$token = "8247068089:AAHjz5QagsQ4EpbL3EtlFHIJrJz890Erg5M";
$url = "https://api.telegram.org/bot{$token}"; 

$idChatPermitidos = ["226274471","689944644","8132667238","514170513","8364277447","7399597445","646071924","1410971746","7802875608","952132475","1416557147","6706787844","796259903"];

#yo, Abel, Mónica, Elisa, Zas, Toño, Dacio, Mateo, Marcos,Lito (Lia y Sara), Maria Sou, Mateo Negreira, Papá Anibal Alevin 5

$usuario = "admin1579";
$app_password = "LryB Rqsq SJu7 dbgF ojGV AfxY";



function resizeImageMaxDimensions($filePath, $maxWidth = 860, $maxHeight = 860) {
    $info = getimagesize($filePath);
    if (!$info) {
        throw new Exception('Archivo no es una imagen válida.');
    }
    $mime = $info['mime'];
    switch ($mime) {
        case 'image/jpeg':
            $src = imagecreatefromjpeg($filePath);
            break;
        case 'image/png':
            $src = imagecreatefrompng($filePath);
            break;
        default:
            throw new Exception('Formato no permitido: solo JPG o PNG.');
    }

    $width = $info[0];
    $height = $info[1];

    // Verificar si redimensionar es necesario
    if ($width <= $maxWidth && $height <= $maxHeight) {
        return $filePath; // No necesita redimensionar
    }

    // Calcular escala respetando proporción para max ancho y max alto
    $scaleWidth = $maxWidth / $width;
    $scaleHeight = $maxHeight / $height;
    $scale = min($scaleWidth, $scaleHeight);

    $newW = max(1, intval($width * $scale));
    $newH = max(1, intval($height * $scale));

    $dst = imagecreatetruecolor($newW, $newH);

    // Para PNG mantener transparencia
    if ($mime == 'image/png') {
        imagealphablending($dst, false);
        imagesavealpha($dst, true);
    }

    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newW, $newH, $width, $height);

    $outFile = tempnam(sys_get_temp_dir(), 'resize');

    if ($mime == 'image/jpeg') {
        imagejpeg($dst, $outFile, 85); // calidad 70 para JPEG
    } else {
        imagepng($dst, $outFile, 8); // compresión media para PNG
    }

    imagedestroy($src);
    imagedestroy($dst);

    return $outFile;
}


// Funci¨®n para crear botones inline_keyboard a partir del men¨²
// A?ade bot¨®n 'Volver' si no estamos en el men¨² principal (pasamos $parentKey)
function crearBotones($menu, $parentKey = null) {
    $botones = [];
	$primeraClave="";
	reset($menu); // posiciona el puntero al primer elemento
	$primeraClave = key($menu); 
	
	if ($primeraClave!= null && ($primeraClave=="menu11" || $primeraClave=="menu21" || $primeraClave=="menu31" || $primeraClave=="menu41" || $primeraClave=="menu51")){ //es escribir crónica, muestro los partidos que recojo de la base de datos
	
		//sendMessage("226274471","primera Clave->".$primeraClave);
		$partidos=obtener_partidos($primeraClave=="menu11" ? 'cronica' : ($primeraClave=="menu21" ? 'todos' : ($primeraClave=="menu31" ? 'fotos' : ($primeraClave=="menu41" ? 'fotos_individual' : ($primeraClave=="menu51" ? 'video' : 'ninguno')))));


		
		foreach ($partidos as $partido) {
	
			$botones[] = [["text" => (($primeraClave=="menu31" && $partido["fotos"]!='') || ($primeraClave=="menu41" && $partido["fotos_individual"]!='') ? '📷 ':(($primeraClave=="menu51" && $partido["video"]!='') ? '🎥 ':'')).$partido["title"], "callback_data" => ($primeraClave=="menu11"?'n':($primeraClave=="menu21"?'c':($primeraClave=="menu31"?'f':($primeraClave=="menu41"?'i':($primeraClave=="menu51"?'v':''))))).$partido["id"]]];
		}
		$botones[] = [["text" => "Volver", "callback_data" => $parentKey]];
	} else {
		foreach ($menu as $clave => $item) {
			$botones[] = [["text" => $item['titulo'], "callback_data" => $clave]];
		}
		// Si hay men¨² padre, a?adimos bot¨®n para volver al padre
		if ($parentKey !== null) {
			$botones[] = [["text" => "Volver", "callback_data" => $parentKey]];
		}
	}
    return $botones;
	
}

// Funci¨®n para navegar en el men¨² dado callback_data y retornar submenu y padre
function obtenerMenuActualYPadre($id,$menu, $callbackData, $parentKey = null) {
	
	

    //$keys = explode('.', $callbackData);
	foreach ($menu as $k => $item) {
        if ($k === $callbackData) {
			// Encontrado, devolvemos la estructura desde aqu¨ª
			return ['menu' => $item["submenus"],'parentKey' => $parentKey];
        }
        // Buscar recursivamente en submenus
        if (!empty($item['submenus'])) {
           $resultado = obtenerMenuActualYPadre($id,$item['submenus'], $callbackData, $k);
            if ($resultado != null) {
                return $resultado;
            }
        } 
    }
    // No encontrado en este nivel
    return null;
}
/*

    $menuActual = $menu;
    $parentKey = null;
    foreach ($keys as $index => $k) {
        
		if (!isset($menuActual[$k])) {
            // Clave no encontrada, salir
			
            return [[], null];
        }
		sendMessage($chatId,"si".$index);
        $parentKey = $index > 0 ? implode('.', array_slice($keys, 0, $index)) : null;
		
        $menuActual = !empty($menuActual[$k]['submenus']) ? $menuActual[$k]['submenus'] : [$k => $menuActual[$k]];
    }
    return [$menuActual, $parentKey];
}
*/
// Funci¨®n para enviar petici¨®n POST con curl
function sendCurl($metodo, $postFields) {
	global $url;
    $ch = curl_init($url."/".$metodo);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

function sendMessage($chatId,$texto,$force_reply=false){
	
    $postFields = [
        'chat_id' => $chatId,
        'text' => $texto,
		'parse_mode'=> 'Markdown'
		
    ];
	if ($force_reply) {
		 $postFields['reply_markup']= json_encode(['force_reply' => true,'input_field_placeholder' => 'Tu crónica' ]);
		 
	}
	sendCurl("sendMessage", $postFields);
	
}

function extraerIdPost($cadena) {
    if ($cadena === null) return null;
    if (preg_match('/\((\d+)\)$/', $cadena, $matches)) {
        return $matches[1];
    }
    return null;
}

function  extraerNombrePartido($cadena) {
	if ($cadena === null) return null;
    if (preg_match('/:(.*?)\(/', $cadena, $matches)) {
        return $matches[1];
    }
    return null;
}

function obtener_partidos($opcion='ninguno') {
	global $usuario;
	global $app_password;
    $url = 'https://bmlinea21.es/wp-json/wp/v2/portfolio?per_page=20';

    // Inicializar cURL
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_USERPWD, $usuario . ':' . $app_password);
    // Ejecutar la petición
    $response = curl_exec($ch);
    // Manejar errores
	
	$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	if ($http_status !== 200) {
		sendMessage("226274471", $response);	
		return[];
	}
		
    if(curl_errno($ch)) {
        curl_close($ch);
        return [];
    }
    curl_close($ch);

    $data = json_decode($response, true);
    if (!is_array($data)) {
        return [];
    }

	$j=1;
	$resultados=[];
	
			usort($data, function($a, $b) {
			return strtotime(str_replace('T', ' ', $a['date'])) - strtotime(str_replace('T', ' ', $b['date']));
		});	
	
	$hoy = new DateTime(); // Fecha actual
	
	$hoyDia = (int)$hoy->format('N'); // día de la semana, lunes=1, domingo=7
	//sendMessage("226274471",$opcion);
    foreach ($data as $partido) {
		
		//busco los últimos 7 días de partido
		
		//sendMessage("226274471", $partido["date"]);
		//$date = new DateTime($partido["date"]);
		$dateString = $partido["acf"]["fecha_y_hora"];

		// Intentar crear objeto DateTime desde $dateString
		$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateString);
		
		// Verificar errores de parsing o si la fecha es inválida
		$errors = DateTime::getLastErrors();

		if ($date === false || $errors['warning_count'] > 0 || $errors['error_count'] > 0) {
			// Fecha no válida, asignar fecha de mañana (con hora 00:00:00 o al gusto)
			$date = new DateTime('tomorrow');
		}		
		
		
		
		//sendMessage("226274471", $date->format('Y-m-d H:i:s')) ;
		// Fecha actual
		$hoy = new DateTime();
		
		// Fecha límite, 7 días desde hoy
		$sieteDiasAntes = (clone $hoy)->modify('-7 days');
		//sendMessage("226274471", $sieteDiasAntes->format('Y-m-d H:i:s')) ;
		
	//	sendMessage("226274471", $partido["date"]);
	//	sendMessage("226274471", $sieteDiasAntes->format('Y-m-d H:i:s');) ;
		
 
		// vamos a mostrar:
		// L,M: semana pasada
		// X,J,V,S,D: Semana posterior
		// Condicional: si la fecha es posterior a 7 días desde hoy, y la hora no es 00:00:00 y hay goles!
		
		

		if ($hoyDia == 1 || $hoyDia == 2) { // lunes o martes
			$miercolesSemanaPasada = (clone $hoy)->modify('last Wednesday');
			$fechaLimite = (clone $hoy); // hoy (lunes o martes)
			$resultado = ($date >= $miercolesSemanaPasada && $date <= $fechaLimite);
		} else { // miércoles a domingo (3 a 7)
			$miercolesEstaSemana = (clone $hoy)->modify('Wednesday this week');
			$miercolesSiguienteSemana = (clone $miercolesEstaSemana)->modify('+7 days');
			$resultado = ($date >= $miercolesEstaSemana && $date < $miercolesSiguienteSemana);
		}


		if ($resultado && $date->format('H:i:s') !== '00:00:00') {
			/*sendMessage("226274471", $date->format('Y-m-d H:i:s')); 
			sendMessage("226274471", $hoyDia);
			sendMessage("226274471", $miercolesSemanaPasada->format('Y-m-d H:i:s'));
			sendMessage("226274471", $fechaLimite->format('Y-m-d H:i:s'));
			sendMessage("226274471", $resultado ? 'true':'false');*/
			
			// Aquí va tu código
			
		
			if ($opcion == 'cronica' && isset($partido['acf']['cronica']) && !($partido['acf']['cronica'] != '' ||$partido['acf']['cronica'] != null) && $partido['acf']['temporada'] == '2526' ) {
			
	//		if (isset($partido['acf']['cronica']) && (($conCronica && $partido['acf']['cronica'] != '') || (!$conCronica && $partido['acf']['cronica'] == ''))  && $partido['acf']['temporada'] == '2526' ) {
				$resultados[] = [
					'id' => $partido['id'],
					'title' => htmlspecialchars_decode($partido['title']['rendered']) ?? '',
					'excerpt' => $partido['excerpt']['rendered'] ?? '',
					'cronica' => $partido['acf']['cronica'],
					'fotos' => $partido['acf']['gdrive_fotos'],
					'fotos_individual'=> $partido["acf"]["foto_portada"],
					'video'=> $partido["acf"]["video"]
				];
			} elseif ($opcion == 'fotos' && $partido['acf']['temporada'] == '2526' ) {
				
				$resultados[] = [
					'id' => $partido['id'],
					'title' => htmlspecialchars_decode($partido['title']['rendered']) ?? '',
					'excerpt' => $partido['excerpt']['rendered'] ?? '',
					'cronica' => $partido['acf']['cronica'],
					'fotos' => $partido["acf"]["gdrive_fotos"],
					'fotos_individual'=> $partido["acf"]["foto_portada"],
					'video'=> $partido["acf"]["video"]
				];
			}elseif ($opcion == 'fotos_individual' && $partido['acf']['temporada'] == '2526' ) {
				
				$resultados[] = [
					'id' => $partido['id'],
					'title' => htmlspecialchars_decode($partido['title']['rendered']) ?? '',
					'excerpt' => $partido['excerpt']['rendered'] ?? '',
					'cronica' => $partido['acf']['cronica'],
					'fotos' => $partido["acf"]["gdrive_fotos"],
					'fotos_individual'=> $partido["acf"]["foto_portada"],
					'video'=> $partido["acf"]["video"]
				];
			}elseif  ($opcion == 'video' && $partido['acf']['temporada'] == '2526' ) {
				
				$resultados[] = [
					'id' => $partido['id'],
					'title' => htmlspecialchars_decode($partido['title']['rendered']) ?? '',
					'excerpt' => $partido['excerpt']['rendered'] ?? '',
					'cronica' => $partido['acf']['cronica'],
					'fotos' => $partido["acf"]["gdrive_fotos"],
					'fotos_individual'=> $partido["acf"]["foto_portada"],
					'video'=> $partido["acf"]["video"]
				];
			} elseif ($opcion == 'todos' && $partido['acf']['temporada'] == '2526' ) {
				$resultados[] = [
					'id' => $partido['id'],
					'title' => htmlspecialchars_decode($partido['title']['rendered']) ?? '',
					'excerpt' => $partido['excerpt']['rendered'] ?? '',
					'cronica' => $partido['acf']['cronica'],
					'fotos' => $partido["acf"]["gdrive_fotos"],
					'fotos_individual'=> $partido["acf"]["foto_portada"],
					'video'=> $partido["acf"]["video"]
				];
			} else {
				// do nothing
				
			}
		
		}
		$j++;
		
	
    }
	


    return $resultados;
}

function updatePartido($idPartido,$cronica=null,$fotos=null,$fotos_individual=null,$video=null,$id_foto=null){
	global $usuario;
	global $app_password;
	 $url = 'https://bmlinea21.es/wp-json/wp/v2/portfolio/'.$idPartido;
	
    // Inicializar cURL
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_USERPWD, $usuario . ':' . $app_password);
    // Ejecutar la petición
    $response = curl_exec($ch);
    // Manejar errores
    if(curl_errno($ch)) {
        curl_close($ch);
        return 2;
    }
    curl_close($ch);
	
	$partido = json_decode($response, true);
    if (!is_array($partido)) {
        return 2;
    }
	/*
			if (isset($partido['acf']['gdrive_fotos']) && $fotos!=null) {
			//actualizamos el partido
			$data["acf"]=array("gdrive_fotos" => $fotos);
		} elseif (isset($partido['acf']['cronica']) && $cronica!=null) {
			$data["acf"]=array("cronica" => $cronica);
		} else {	
			return 4;
		}
		*/
		
	if (isset($partido['acf']['cronica']) && $cronica!=null) {
		$data["acf"]=array("cronica" => $cronica);
	} elseif (isset($partido['acf']['gdrive_fotos']) && $fotos!=null) {
		$data["acf"]=array("gdrive_fotos" => $fotos);
	} elseif (isset($partido['acf']['foto_portada']) && $fotos_individual!=null) {
		$data["acf"]=array("foto_portada" => $fotos_individual);
	} elseif (isset($partido['acf']['video']) && $video!=null) {
		$data["acf"]=array("video" => $video);
	} elseif (isset($id_foto)) {
		$arrayFotos=$partido["boldthemes_theme_images"];
		$arrayFotos[]=$id_foto;
		
		$data=array("boldthemes_theme_images" => $arrayFotos);
	} else {
		return 4;
	} 
		$json_data = json_encode($data);
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
		curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
		curl_setopt($ch, CURLOPT_USERPWD, $usuario . ':' . $app_password);
		$result = curl_exec($ch);
		file_put_contents("registro_de_actualizaciones.log",PHP_EOL. $fecha.' - '.$data["acf"]["cronica"], FILE_APPEND);
		$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
		if ($http_status === 200) {
			return 1;
		} else {
			return 3;
		}
		curl_close($ch);

}

function subirFoto($idPartido,$nombre_partido,$tmpFile,$filePath){
	global $usuario;
	global $app_password;
	$url = 'https://bmlinea21.es/wp-json/wp/v2/portfolio/'.$idPartido;
	$urlFoto='https://bmlinea21.es/wp-json/wp/v2/media';
	
	$filename = 'upload' . basename($filePath);
    $imageData = file_get_contents($tmpFile);

	
    // Inicializar cURL
    $ch = curl_init($urlFoto);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $imageData);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Disposition: attachment; filename=$filename",
        "Content-Type: image/jpeg",
        "Authorization: Basic " . base64_encode("$usuario:$app_password"),
    ]);
    // Ejecutar la petición
    $wpResponse = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curlErr  = curl_error($ch);
    curl_close($ch);
    if ($httpCode < 200 || $httpCode >= 300 || !$wpResponse) {
        sendMessage("226274471","Error subiendo media a Wordpress");
		unlink($tmpFile);
		return null;
	} else {
        
	
	// Decodificar respuesta JSON y mostrar ID
		$decoded = json_decode($wpResponse, true);
		if (isset($decoded['id'])) {

			// Actualizar título
		
			$updateData = json_encode(['title' => $nombre_partido,'alt_text' => $nombre_partido]);
			

			$chUpdate = curl_init($urlFoto.'/'.$decoded['id']);
			curl_setopt($chUpdate, CURLOPT_CUSTOMREQUEST, 'PUT'); // o PATCH si tu WP acepta
			curl_setopt($chUpdate, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($chUpdate, CURLOPT_POSTFIELDS, $updateData);
			curl_setopt($chUpdate, CURLOPT_HTTPHEADER, [
				"Content-Type: application/json",
				"Authorization: Basic " . base64_encode("$usuario:$app_password"),
			]);
			$responseUpdate = curl_exec($chUpdate);
			$httpCodeUpdate = curl_getinfo($chUpdate, CURLINFO_HTTP_CODE);
			curl_close($chUpdate);

			if ($httpCodeUpdate >= 200 && $httpCodeUpdate < 300) {
				
				return $decoded['id'];
			} else {
				sendMessage("226274471","Imagen subida pero fallo actualizar título. ID:".$decoded['id']);
				return null;
			}
		} else {
			 sendMessage("226274471","Error subiendo imagen");
			 return null;
		}	
	}
	
}




if (isset($update['callback_query'])) {
    $chatId = $update['callback_query']['message']['chat']['id'];
	$callbackData = $update['callback_query']['data'];
    $messageId = $update['callback_query']['message']['message_id'];
	
	//sendMessage("226274471","callback->".$callbackData);
	
	//hay botón presionado
	
	if ($callbackData[0]=="c"){ //solicitan una crónica, con lo que el menú padre es menu21

		$partidos=obtener_partidos("cronica");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				sendMessage($chatId,$partido["cronica"]);
			}
		}
		//mostramos menú por si quiere actualizar la crónica
		$botones=[];
		$botones[] = [["text" => "Actualizar crónica", "callback_data" => "n".substr($callbackData, 1)]];
		$botones[] = [["text" => "Volver", "callback_data" => "menu0"]];
		
		//$botones = crearBotones($menu);
		// Editar reply markup del mensaje con nuevos botones
		
		$postFields = [
			'chat_id' => $chatId,
			'message_id' => $messageId,
			'reply_markup' => json_encode(['inline_keyboard' => $botones])
		];
		
		sendCurl("editMessageReplyMarkup", $postFields);
		
		file_put_contents("registro_de_actualizaciones.log",PHP_EOL. $postFields['reply_markup'], FILE_APPEND);
		
		// Responder a Telegram para indicar que se proces¨® el callback
		$postFields = ['callback_query_id' => $update['callback_query']['id']];
		sendCurl("answerCallbackQuery", $postFields);
	
	} elseif ($callbackData[0]=="f"){ //Lógica para las fotos vamos a ver si quiere actualizar, muestro la foto
		$partidos=obtener_partidos("fotos");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				sendMessage($chatId,$partido["fotos"]);
			}
		}
		//mostramos menú por si quiere actualizar la foto
		$botones=[];
		$botones[] = [["text" => "Actualizar URL Gdrive Fotos", "callback_data" => "F".substr($callbackData, 1)]];
		$botones[] = [["text" => "Volver", "callback_data" => "menu0"]];
		
		$postFields = [
			'chat_id' => $chatId,
			'message_id' => $messageId,
			'reply_markup' => json_encode(['inline_keyboard' => $botones])
		];
		
		sendCurl("editMessageReplyMarkup", $postFields);
	
	} elseif ($callbackData[0]=="i"){ //Lógica para la fotos_individual vamos a ver si quiere actualizar, muestro la foto
		$partidos=obtener_partidos("fotos_individual");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				sendMessage($chatId,$partido["fotos_individual"]);
			}
		}
		//mostramos menú por si quiere actualizar la foto
		$botones=[];
		$botones[] = [["text" => "Subir foto desde el móvil", "callback_data" => "S".substr($callbackData, 1)]];
		$botones[] = [["text" => "Actualizar URL foto destacada", "callback_data" => "I".substr($callbackData, 1)]];
		$botones[] = [["text" => "Volver", "callback_data" => "menu0"]];
		
		$postFields = [
			'chat_id' => $chatId,
			'message_id' => $messageId,
			'reply_markup' => json_encode(['inline_keyboard' => $botones])
		];
		
		sendCurl("editMessageReplyMarkup", $postFields);
	
	} elseif ($callbackData[0]=="v"){ //Lógica para la video vamos a ver si quiere actualizar, muestro la url
		$partidos=obtener_partidos("video");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				sendMessage($chatId,$partido["video"]);
			}
		}
		//mostramos menú por si quiere actualizar la foto
		$botones=[];
		$botones[] = [["text" => "Actualizar URL Video", "callback_data" => "V".substr($callbackData, 1)]];
		$botones[] = [["text" => "Volver", "callback_data" => "menu0"]];
		
		$postFields = [
			'chat_id' => $chatId,
			'message_id' => $messageId,
			'reply_markup' => json_encode(['inline_keyboard' => $botones])
		];
		
		sendCurl("editMessageReplyMarkup", $postFields);
	
	} elseif ($callbackData[0]=="n"){ //vamos a escribir una crónica, con lo que el menú padre es menu11
		$titulo="";
		$partidos=obtener_partidos("todos");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				$titulo=$partido["title"];
			}
		}
				
		
		sendMessage($chatId,"Escribe la crónica para el partido: *".$titulo."*"." "."(".substr($callbackData, 1).")",true);
		
		// Responder a Telegram para indicar que se proces¨® el callback
		$postFields = ['callback_query_id' => $update['callback_query']['id']];
		sendCurl("answerCallbackQuery", $postFields);
	
	} elseif ($callbackData[0]=="F"){ //vamos a escribir cambiar foto, con lo que el menú padre es menu31
		$titulo="";
		$partidos=obtener_partidos("fotos");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				$titulo=$partido["title"];
			}
		}
		sendMessage($chatId,"Escribe la URL del gdrive de fotos para el partido: *".$titulo."*"." "."(".substr($callbackData, 1).")",true);
		// Responder a Telegram para indicar que se proces¨® el callback
		$postFields = ['callback_query_id' => $update['callback_query']['id']];
		sendCurl("answerCallbackQuery", $postFields);
	
	} elseif ($callbackData[0]=="I"){ //vamos a escribir cambiar foto, con lo que el menú padre es menu31
		$titulo="";
		$partidos=obtener_partidos("fotos_individual");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				$titulo=$partido["title"];
			}
		}
		sendMessage($chatId,"Escribe la URL de la foto destacada para el partido: *".$titulo."*"." "."(".substr($callbackData, 1).")",true);
		// Responder a Telegram para indicar que se proces¨® el callback
		$postFields = ['callback_query_id' => $update['callback_query']['id']];
		sendCurl("answerCallbackQuery", $postFields);
	
	} elseif ($callbackData[0]=="S"){ //vamos a subir una foto desde el móvil
		$titulo="";
		$partidos=obtener_partidos("fotos_individual");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				$titulo=$partido["title"];
			}
		}
		sendMessage($chatId,"Envía la(s) foto(s) que quieras subir Se recomienda no más de 6 a la vez para el partido: *".$titulo."*"." "."(".substr($callbackData, 1).")",true);
		// Responder a Telegram para indicar que se proces¨® el callback
		$postFields = ['callback_query_id' => $update['callback_query']['id']];
		sendCurl("answerCallbackQuery", $postFields);
	
	} elseif ($callbackData[0]=="V"){ //vamos a escribir cambiar foto, con lo que el menú padre es menu31
		$titulo="";
		$partidos=obtener_partidos("video");
		foreach ($partidos as $partido) {
			if ($partido["id"]==substr($callbackData, 1)){ //encontrado Id
				$titulo=$partido["title"];
			}
		}
		sendMessage($chatId,"Escribe la URL del video para el partido: *".$titulo."*"." "."(".substr($callbackData, 1).")",true);
		// Responder a Telegram para indicar que se proces¨® el callback
		$postFields = ['callback_query_id' => $update['callback_query']['id']];
		sendCurl("answerCallbackQuery", $postFields);
	
	}  else {
		// Obtener men¨² actual y men¨² padre (para bot¨®n volver)
		
		$menuActual = [];
		$parentKey = null;
		$resultado = obtenerMenuActualYPadre("",$menu, $callbackData);
		//sendMessage("226274471",$resultado['menu']);
		//sendMessage("226274471",$resultado['parentKey']);
		if ($resultado !== null) {
			$menuActual = $resultado['menu'];
			$parentKey = $resultado['parentKey'];
		}
		
		// Crear botones incluyendo opci¨®n Volver si es submenu
		$botones = crearBotones($menuActual, $parentKey);

		// Editar reply markup del mensaje con nuevos botones
		
		$postFields = [
			'chat_id' => $chatId,
			'message_id' => $messageId,
			'reply_markup' => json_encode(['inline_keyboard' => $botones])
		];
		
		file_put_contents("registro_de_actualizaciones.log",PHP_EOL. $fecha.' - '.json_encode(['inline_keyboard' => $botones]), FILE_APPEND);
		
		sendCurl("editMessageReplyMarkup", $postFields);
		
		
		// Responder a Telegram para indicar que se proces¨® el callback
		$postFields = ['callback_query_id' => $update['callback_query']['id']];
		sendCurl("answerCallbackQuery", $postFields);
	}

} elseif (isset($update['channel_post'])) {
	
    $chatId = $update['channel_post']['chat']['id'];
	
	
    // Mostrar men¨² principal (sin bot¨®n volver)
    $botones = crearBotones($menu["menu0"]["submenus"]);
			
	$postFields = [
        'chat_id' => $chatId,
        'text' => 'Selecciona una opción:',
        'reply_markup' => json_encode(['inline_keyboard' => $botones])
		
    ];
    sendCurl("sendMessage", $postFields);
} elseif (isset($update['message'])) {
	
    $chatId = $update['message']['chat']['id'];
	
	
	if (isset($update['message']['reply_to_message'])){ //acaban de escribir algo, tenemos que ver si es una foto o una crónica.
	
		$post_id = extraerIdPost($update['message']['reply_to_message']['text']);
		$nombre_partido = extraerNombrePartido($update['message']['reply_to_message']['text']);
		
		if (isset($update['message']['text'])){
			$texto = $update['message']['text'];
		} else {
			$texto = "";
		}
		if ($post_id!= null){
			if (str_contains($update['message']['reply_to_message']['text'],'gdrive')){ //son fotos gdrive
				$salida=updatePartido($post_id,null,$texto,null,null,null);
				if($salida==1){
					sendMessage($chatId,"URL de Fotos actualizada");
					sendMessage("226274471","URL de Fotos actualizadas: ".$post_id);
				} elseif($salida==2)  {
					sendMessage($chatId,"Lo siento, El partido tenía fotos");
				} elseif($salida==3)  {
					sendMessage($chatId,"Lo siento, Error actualizado fotos");
				} else {
					sendMessage($chatId,"Lo siento, Ha habido un error");
				}
			} elseif (str_contains($update['message']['reply_to_message']['text'],'foto destacada')){ //es crónica 
				$salida=updatePartido($post_id,null,null,$texto,null,null);
				if($salida==1){
					sendMessage($chatId,"Foto destacada actualizada");
					sendMessage("226274471","Foto destacada actualizada: ".$post_id);
	
				} elseif($salida==2)  {
					sendMessage($chatId,"Lo siento, El partido tenía Foto destacada");
				} elseif($salida==3)  {
					sendMessage($chatId,"Lo siento, Error actualizado foto destacada");
				} else {
					sendMessage($chatId,"Lo siento, Ha habido un error");
				}
			} elseif (str_contains( $update['message']['reply_to_message']['text'],'crónica')){ //es crónica 
				$salida=updatePartido($post_id,$cronica=$texto,null,null,null,null);
				if($salida==1){
					sendMessage($chatId,"Crónica actualizada");
					sendMessage("226274471","Crónica actualizada: ".$post_id);
	
				} elseif($salida==2)  {
					sendMessage($chatId,"Lo siento, El partido tenía crónica");
				} elseif($salida==3)  {
					sendMessage($chatId,"Lo siento, Error actualizado crónica");
				} else {
					sendMessage($chatId,"Lo siento, Ha habido un error");
				}
			} elseif (str_contains( $update['message']['reply_to_message']['text'],'video')){ //es video 
				$salida=updatePartido($post_id,null,null,null,$texto,null);
				if($salida==1){
					sendMessage($chatId,"URL de video actualizada");
					sendMessage("226274471","URL de video actualizada: ".$post_id);
	
				} elseif($salida==2)  {
					sendMessage($chatId,"Lo siento, El partido tenía video");
				} elseif($salida==3)  {
					sendMessage($chatId,"Lo siento, Error actualizado crónica");
				} else {
					sendMessage($chatId,"Lo siento, Ha habido un error");
				}
			}  elseif (str_contains( $update['message']['reply_to_message']['text'],'Envía la(s) foto(s)')){ //son una o varias fotos 
				if (!$update || empty($update['message']['photo'])) {
					sendMessage($chatId,"No me has mandado ninguna imagen en el mensaje");
					
				} else {
					$photos = $update['message']['photo'];
					$idsSubidas = [];
					
					//foreach ($photos as $photo) {
						$fileId = $photos[count($photos) - 1]['file_id'];
						
						// Obtener la ruta real del archivo en Telegram
						$response = file_get_contents("https://api.telegram.org/bot$token/getFile?file_id=$fileId");
						$data = json_decode($response, true);
						if (empty($data['result']['file_path'])) {
							sendMessage($chatId,"Error con el filepath en Telegram");
						}
						$filePath = $data['result']['file_path'];
						$fileUrl  = "https://api.telegram.org/file/bot$token/$filePath";
						// Descargar imagen temporalmente
						$tmpFile = tempnam(sys_get_temp_dir(), 'tgimg');
						file_put_contents($tmpFile, file_get_contents($fileUrl));
						if (!file_exists($tmpFile) || filesize($tmpFile) == 0) {
							sendMessage($chatId,"Error al descargar imagen");
						}
						
						$resized = resizeImageMaxDimensions($tmpFile,1280,1280);
						if ($resized !== $tmpFile) {
							unlink($tmpFile);
							$tmpFile = $resized;
						}
						
						
						//sendMessage($chatId,'a'.str_replace(' ','_',$nombre_partido));
						$id_foto=subirFoto($post_id,$nombre_partido,$tmpFile,$filePath);
						//$salida=updatePartido($post_id,null,null,null,$texto);
						if ($id_foto!=null) {
							$idsSubidas[] = $id_foto;
							
						}
					//}
					if($idsSubidas!= []){
						if(updatePartido($post_id,$cronica=null,$fotos=null,$fotos_individual=null,$video=null,$id_foto=$id_foto)==1){
							sendMessage($chatId,'Foto Subida Correctamente! Gracias');
						} else {
							sendMessage($chatId,"Lo siento, Ha habido un error añadiendo fotos");
							
						}
		
					} else {
						sendMessage($chatId,"Lo siento, Ha habido un error");
					}
				}
			} else {
				sendMessage("226274471","no hago nada");
			}
			$botones = crearBotones($menu["menu0"]["submenus"]);
			$postFields = [
				'chat_id' => $chatId,
				'text' => 'Selecciona una opción:',
				'reply_markup' => json_encode(['inline_keyboard' => $botones])
		
			];
			sendCurl("sendMessage", $postFields);
		}
		

	} else { //empezamos el menú
		if (in_array($chatId,$idChatPermitidos)){ // conversación permitida
				
			// Mostrar menú principal (sin bot¨®n volver)
			$botones = crearBotones($menu["menu0"]["submenus"]);
			$postFields = [
				'chat_id' => $chatId,
				'text' => 'Selecciona una opción:',
				'reply_markup' => json_encode(['inline_keyboard' => $botones])
		
			];
			sendCurl("sendMessage", $postFields);
		} else {
				
			sendMessage($chatId,"Lo siento, no tienes permiso para hablar conmigo: ".$chatId);
		}
	}
} else {
	
	$botones = crearBotones($menu["menu0"]["submenus"],"menu1");
	
	echo '<br>';
	echo json_encode(['inline_keyboard' => $botones]);
	
}

 ?>
 



