<?php
header("Content-Type: text/html;charset=utf-8");
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

function save_img_file($directory, $namefile, $base64Image){
	$decodedImage = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $base64Image));
	//$decodedImage = base64_decode($base64Image);
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mimeType = finfo_buffer($finfo, $decodedImage);
    finfo_close($finfo);
    $mimeToExt = [
        'image/jpeg' => 'jpg',
        'image/jpg' => 'jpg',
        'image/png' => 'png',
        'image/gif' => 'gif',
        'image/bmp' => 'bmp',
        'image/tiff' => 'tiff',
        'image/tif' => 'tif',
        'image/webp' => 'webp',
        'image/svg+xml' => 'svg',
        'image/x-raw' => 'raw',
        'image/x-canon-cr2' => 'cr2',
        'image/x-nikon-nef' => 'nef',
        'image/x-adobe-dng' => 'dng',
        'image/x-icon' => 'ico',
        'image/heif' => 'heif',
        'image/heic' => 'heic',
        'image/x-portable-bitmap' => 'pbm',
        'image/x-portable-graymap' => 'pgm',
        'image/x-portable-pixmap' => 'ppm',
        'image/x-xpixmap' => 'xpm',
        'image/x-xbitmap' => 'xbm',
        'image/avif' => 'avif'
    ];
    if (array_key_exists($mimeType, $mimeToExt)) {
        $extension = $mimeToExt[$mimeType];
        $fullFilename = $namefile . '.' . $extension;
        if (!is_dir($directory)){
			mkdir($directory, 0777, true);
		}
        file_put_contents($directory . $fullFilename, $decodedImage);
		return $fullFilename;
    } else {
		return $namefile;
    }
}

$host_url = "../";
if (isset($_POST["accion"])){
	if ($_POST["accion"] == "listar_imagenes"){
		$respuestas = array("estado"=>"ok", "mensaje"=>"", "lista"=>array(), "directorio"=>"", "directorio_base"=>"");
		$tipo = $_POST["tipo"];
		$lista = array();
		$directory = $host_url."libreria/imagenes/";
		if ($tipo != ""){
			$directory .= $tipo."/";
		}
		$filehandle = opendir($directory);
		while ($file = readdir($filehandle)) {
			if( str_starts_with($file, $tipo) && (str_ends_with($file, '.png') || str_ends_with($file, '.PNG') || str_ends_with($file, '.jpg') || str_ends_with($file, '.JPG') || str_ends_with($file, '.jpeg') || str_ends_with($file, '.JPEG') || str_ends_with($file, '.gif') || str_ends_with($file, '.GIF')) ){
				array_push($lista, $file);
			}
		}
		closedir($filehandle);
		$respuestas["directorio_base"] = $host_url."libreria/imagenes/";
		$respuestas["directorio"] = $directory;
		$respuestas["lista"] = $lista;
		echo(json_encode($respuestas));
	} else if ($_POST["accion"] == "registrar_imagen"){
		$respuestas = array("estado"=>"ok", "mensaje"=>"");
		$json_path = $host_url."libreria/imagenes/index_img.json";
		$tipo = $_POST["tipo"];
		$_txt_img = $_POST["imagen"];
		$numeracion = 0;
		$_directorio = $host_url."libreria/imagenes/";
		if ($tipo != ""){
			$_directorio .= $tipo."/";
		}
		if (file_exists($json_path)){
			$json = file_get_contents($json_path);
			$json_data = json_decode($json,true);
		}
		if (isset($json_data[$tipo])){
			$numeracion = $json_data[$tipo];
		}
		$numeracion = (float)$numeracion + 1;
		$nameimg = save_img_file($_directorio, $tipo."_".$numeracion, $_txt_img);
		$json_data[$tipo] = $numeracion;
		$jsonString = json_encode($json_data, JSON_PRETTY_PRINT);
		$fp = fopen($json_path, 'w');
		fwrite($fp, $jsonString);
		fclose($fp);
		echo(json_encode($respuestas));
	} else if ($_POST["accion"] == "borrar_imagen"){
		$respuestas = array("estado"=>"error", "mensaje"=>"");
		$nombre = $_POST["nombre"];
		$tipo = $_POST["tipo"];
		$_directorio = $host_url."libreria/imagenes/";
		if ($tipo != ""){
			$_directorio .= $tipo."/";
		}
		if (file_exists($_directorio.$nombre)){
			if (unlink($_directorio.$nombre)){
				$respuestas["estado"] = "ok";
				$respuestas["mensaje"] = "El archivo se eliminó correctamente.";
			} else {
				$respuestas["mensaje"] = "El archivo no pudo ser eliminado.";
			}
		} else {
			$respuestas["mensaje"] = "No se encontro el archivo solicitado.";
		}
		echo(json_encode($respuestas));
	} else if ($_POST["accion"] == "preparar_imagen_whatsapp"){
		$imagenCodificada = $_POST['imagen'];
		$_directorio = $host_url."libreria/imagenes/comprobantes/";
		$nameimg = save_img_file($_directorio, 'imagen_' . uniqid(), $imagenCodificada);
		$directorios = explode("/", $_SERVER['SCRIPT_NAME']);
		$directorios = array_slice($directorios, 0, count($directorios)-1);
		$urlImagen = 'http://' . $_SERVER['SERVER_NAME'].implode("/", $directorios)."/../libreria/imagenes/comprobantes/".$nameimg ;
		echo json_encode(array('url' => $urlImagen, "server"=>$urlImagen));
    }
}
?>
