133 lines
5.3 KiB
PHP
133 lines
5.3 KiB
PHP
<?php
|
|
// Abilita la visualizzazione degli errori per il debug
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
// Collegamento al database
|
|
require_once('../Connections/yogiwherequery.php');
|
|
$conn = new mysqli($servername, $username, $password, $database);
|
|
// Verifica se la connessione al database è avvenuta correttamente
|
|
if ($conn->connect_error) {
|
|
echo json_encode(['success' => false, 'message' => 'Errore di connessione al database: ' . $conn->connect_error]);
|
|
exit;
|
|
}
|
|
|
|
// Controllo se il file è stato inviato tramite POST
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
// Verifica se il file e l'ID della scuola sono presenti
|
|
if (isset($_FILES['file']) && isset($_POST['idyogaschool'])) {
|
|
$file = $_FILES['file'];
|
|
$idyogaschool = $_POST['idyogaschool'];
|
|
|
|
// Estrai le informazioni del file
|
|
$originalName = $file['name'];
|
|
$tempPath = $file['tmp_name'];
|
|
$fileType = $file['type'];
|
|
$fileSize = $file['size'];
|
|
|
|
// Verifica l'estensione del file (solo JPG e PNG)
|
|
$validExtensions = ['image/jpeg', 'image/png', 'image/jpg'];
|
|
if (!in_array($fileType, $validExtensions)) {
|
|
echo json_encode(['success' => false, 'message' => 'Formato file non valido. Solo JPG, JPEG e PNG sono consentiti.']);
|
|
exit;
|
|
}
|
|
|
|
// Limita il numero di immagini a 5 per questa scuola
|
|
$query = $conn->prepare("SELECT COUNT(*) AS photo_count FROM photoyogaschool WHERE idyogaschool = ?");
|
|
$query->bind_param("i", $idyogaschool);
|
|
$query->execute();
|
|
$result = $query->get_result();
|
|
$data = $result->fetch_assoc();
|
|
|
|
if ($data['photo_count'] >= 5) {
|
|
echo json_encode(['success' => false, 'message' => 'Numero massimo di 5 foto raggiunto.']);
|
|
exit;
|
|
}
|
|
|
|
// Rinomina il file
|
|
$timestamp = time();
|
|
$newFileName = $idyogaschool . '-' . $timestamp . '-' . basename($originalName);
|
|
|
|
// Definisci il percorso di salvataggio
|
|
$uploadDir = 'uploadphotoschool/';
|
|
$uploadPath = $uploadDir . $newFileName;
|
|
|
|
// Verifica se la directory di upload è scrivibile
|
|
if (!is_dir($uploadDir) || !is_writable($uploadDir)) {
|
|
echo json_encode(['success' => false, 'message' => 'Directory di upload non esistente o non scrivibile.']);
|
|
exit;
|
|
}
|
|
|
|
// Funzione per ridimensionare l'immagine
|
|
function resizeImage($file, $fileType, $maxWidth, $maxHeight)
|
|
{
|
|
list($width, $height) = getimagesize($file);
|
|
$ratio = $width / $height;
|
|
|
|
if ($width > $maxWidth || $height > $maxHeight) {
|
|
if ($width > $height) {
|
|
$newWidth = $maxWidth;
|
|
$newHeight = $maxWidth / $ratio;
|
|
} else {
|
|
$newHeight = $maxHeight;
|
|
$newWidth = $maxHeight * $ratio;
|
|
}
|
|
} else {
|
|
$newWidth = $width;
|
|
$newHeight = $height;
|
|
}
|
|
|
|
// Crea una nuova immagine ridimensionata
|
|
if ($fileType === 'image/jpeg' || $fileType === 'image/jpg') {
|
|
$src = imagecreatefromjpeg($file);
|
|
} elseif ($fileType === 'image/png') {
|
|
$src = imagecreatefrompng($file);
|
|
} else {
|
|
return false; // Tipo di file non supportato
|
|
}
|
|
|
|
$dst = imagecreatetruecolor($newWidth, $newHeight);
|
|
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
|
|
|
|
return $dst;
|
|
}
|
|
|
|
// Ridimensiona l'immagine prima di salvarla
|
|
$resizedImage = resizeImage($tempPath, $fileType, 800, 600);
|
|
if (!$resizedImage) {
|
|
echo json_encode(['success' => false, 'message' => 'Errore durante il ridimensionamento dell\'immagine.']);
|
|
exit;
|
|
}
|
|
|
|
// Salva l'immagine ridimensionata
|
|
if ($fileType === 'image/jpeg' || $fileType === 'image/jpg') {
|
|
if (!imagejpeg($resizedImage, $uploadPath)) {
|
|
echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio del file JPEG.']);
|
|
exit;
|
|
}
|
|
} elseif ($fileType === 'image/png') {
|
|
if (!imagepng($resizedImage, $uploadPath)) {
|
|
echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio del file PNG.']);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
// Libera la memoria occupata dall'immagine ridimensionata
|
|
imagedestroy($resizedImage);
|
|
|
|
// Salva le informazioni nel database
|
|
$query = $conn->prepare("INSERT INTO photoyogaschool (photofilename, idyogaschool) VALUES (?, ?)");
|
|
$query->bind_param("si", $newFileName, $idyogaschool);
|
|
if ($query->execute()) {
|
|
echo json_encode(['success' => true, 'message' => 'File caricato e salvato con successo.']);
|
|
} else {
|
|
echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio nel database.']);
|
|
}
|
|
} else {
|
|
echo json_encode(['success' => false, 'message' => 'Nessun file o ID scuola ricevuto.']);
|
|
}
|
|
} else {
|
|
echo json_encode(['success' => false, 'message' => 'Richiesta non valida.']);
|
|
}
|