Files
2026-04-27 08:47:35 +02:00

201 lines
7.1 KiB
PHP

<?php
session_start();
header('Content-Type: application/json');
// --- CONFIGURATION BDD ---
$host = 'localhost';
$db = 'watchgether';
$user = 'root';
$pass = ''; // Vide par défaut sur Wamp
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$apiKey = '23af653f99d2e7ac884415805e7ca84c';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass, $options);
} catch (Exception $e) {
echo json_encode(['success' => false, 'error' => 'Connexion BDD échouée']);
exit;
}
// --- LECTURE DE L'INPUT ---
$json = file_get_contents('php://input');
$data = json_decode($json, true);
if (!$data || !isset($data['action'])) {
echo json_encode(['success' => false, 'error' => 'Aucune action spécifiée']);
exit;
}
$action = $data['action'];
$params = $data['params'] ?? [];
// Simulation d'un utilisateur connecté (à remplacer par ton système de login plus tard)
$current_user_id = $_SESSION['user_id'] ?? 1;
switch ($action) {
// --- RECHERCHE TMDB ---
case 'searchTMDB':
$query = urlencode($params['query']);
$url = "https://api.themoviedb.org/3/search/multi?api_key=$apiKey&language=fr-FR&query=$query";
$response = file_get_contents($url);
if ($response) {
echo $response; // On renvoie directement le JSON de TMDB au front
} else {
echo json_encode(['success' => false, 'error' => 'Erreur API TMDB']);
}
exit;
// --- GESTION DES FILMS ---
case 'addMovie':
// On cherche si le film existe déjà pour cet utilisateur
$stmt = $pdo->prepare("SELECT id FROM movies WHERE tmdb_id = ? AND user_id = ?");
$stmt->execute([$params['tmdb_id'], $current_user_id]);
if ($stmt->fetch()) {
echo json_encode(['success' => false, 'error' => 'Film déjà dans la liste']);
exit;
} else {
$stmt = $pdo->prepare("INSERT INTO movies (tmdb_id, titre, affiche_path, type, user_id, vu) VALUES (?, ?, ?, ?, ?, 0)");
$success = $stmt->execute([
$params['tmdb_id'],
$params['titre'],
$params['affiche_path'],
$params['type'], // 'film' ou 'serie'
$current_user_id
]);
echo json_encode(['success' => $success]);
exit;
}
case 'getMyList':
// Récupère les films ajoutés par l'utilisateur
$stmt = $pdo->prepare("SELECT * FROM movies WHERE user_id = ? ORDER BY date_ajout DESC");
$stmt->execute([$current_user_id]);
echo json_encode(['success' => true, 'movies' => $stmt->fetchAll()]);
exit;
case 'getCommonList':
// LA MAGIE : On cherche les doublons de tmdb_id entre deux utilisateurs
// On part du principe que tu es l'ID 1 et ta copine l'ID 2 (à adapter)
$partner_id = ($current_user_id == 1) ? 2 : 1;
$stmt = $pdo->prepare("
SELECT m1.* FROM movies m1
INNER JOIN movies m2 ON m1.tmdb_id = m2.tmdb_id
WHERE m1.user_id = ? AND m2.user_id = ?
");
$stmt->execute([$current_user_id, $partner_id]);
echo json_encode(['success' => true, 'common_movies' => $stmt->fetchAll()]);
exit;
case 'getPartnerList':
$partner_id = ($current_user_id == 1) ? 2 : 1;
$stmt = $pdo->prepare("SELECT * FROM movies WHERE user_id = ? ORDER BY date_ajout DESC");
$stmt->execute([$partner_id]);
echo json_encode(['success' => true, 'movies' => $stmt->fetchAll()]);
exit;
// --- ACTIONS SUR LE FILM ---
case 'toggleViewed':
// Alterne entre vu (1) et non vu (0)
$stmt = $pdo->prepare("UPDATE movies SET vu = !vu WHERE id = ?");
$success = $stmt->execute([(int)$params['movie_id']]);
echo json_encode(['success' => $success]);
exit;
case 'deleteMovie':
$stmt = $pdo->prepare("DELETE FROM movies WHERE id = ? AND user_id = ?");
$success = $stmt->execute([(int)$params['movie_id'], $current_user_id]);
echo json_encode(['success' => $success]);
exit;
// --- COMMENTAIRES ---
case 'addComment':
$stmt = $pdo->prepare("INSERT INTO commentaires (movie_id, user_id, contenu) VALUES (?, ?, ?)");
$success = $stmt->execute([
(int)$params['movie_id'],
$current_user_id,
$params['text']
]);
echo json_encode(['success' => $success]);
exit;
case 'getComments':
$stmt = $pdo->prepare("
SELECT c.*, u.pseudo FROM commentaires c
JOIN users u ON c.user_id = u.id
WHERE c.movie_id = ? ORDER BY c.date_ajout DESC
");
$stmt->execute([(int)$params['movie_id']]);
echo json_encode(['success' => true, 'comments' => $stmt->fetchAll()]);
exit;
case 'getMovieDetails':
$id = $params['id'];
$type = $params['type']; // 'movie' ou 'tv'
// On demande les détails + les crédits (acteurs) en une seule fois
$url = "https://api.themoviedb.org/3/$type/$id?api_key=$apiKey&language=fr-FR&append_to_response=credits";
$response = file_get_contents($url);
echo $response;
exit;
case 'setStarsRating':
$stmt = $pdo->prepare("INSERT INTO movies (rating) VALUES (?) WHERE id = ?");
$success = $stmt->execute([
(int)$params['movie_id'],
(int)$params['rating']
]);
echo json_encode(['success' => $success]);
exit;
case 'getStarsRating':
$stmt = $pdo->prepare("SELECT rating FROM movies WHERE id = ?");
$stmt->execute([(int)$params['movie_id']]);
$rating = $stmt->fetchColumn();
echo json_encode(['success' => true, 'rating' => $rating]);
exit;
case 'register':
$pseudo = $params['pseudo'];
$pass = password_hash($params['password'], PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (pseudo, password) VALUES (?, ?)");
try {
$stmt->execute([$pseudo, $pass]);
echo json_encode(['success' => true]);
} catch (Exception $e) {
echo json_encode(['success' => false, 'error' => 'Pseudo déjà pris']);
}
exit;
case 'login':
$stmt = $pdo->prepare("SELECT * FROM users WHERE pseudo = ?");
$stmt->execute([$params['pseudo']]);
$user = $stmt->fetch();
if ($user && password_verify($params['password'], $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['pseudo'] = $user['pseudo'];
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'error' => 'Identifiants incorrects']);
}
exit;
case 'logout':
session_destroy();
echo json_encode(['success' => true]);
exit;
default:
echo json_encode(['success' => false, 'error' => 'Action inconnue']);
exit;
}