Files
watchgether-api/controllers/MovieController.php
T
Whykioh 4c61b7f276 Fix crash bugs and secure webhook/TMDB key
- Add missing MovieController::remove/markWatched (routes called undefined methods)
- Fix linkPartner(): commit() was unreachable after an early return, so partner
  linking was never actually persisted in the DB
- Add missing removeMovie/markWatched functions in app.js
- webhook.php now verifies a GitHub HMAC signature before running git reset --hard
- Move TMDB API key server-side via a new TmdbController proxy (tmdb-search/tmdb-details)
  instead of exposing it in client-side JS

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-12 16:54:40 +02:00

70 lines
2.2 KiB
PHP

<?php
// controllers/MovieController.php
require_once __DIR__ . '/../models/Movie.php';
class MovieController {
private $movieModel;
public function __construct($db) {
$this->movieModel = new Movie($db);
}
public function add($data) {
// Validation basique
if (!isset($data['tmdb_id'], $data['title'])) {
http_response_code(400);
echo json_encode(["error" => "Données manquantes"]);
return;
}
$res = $this->movieModel->add($data['user_id'], $data['tmdb_id'], $data['title'], $data['poster_path'] ?? null, $data['media_type'] ?? 'film');
echo json_encode(["success" => $res]);
}
public function share($data) {
if (!isset($data['movie_id'])) {
http_response_code(400);
echo json_encode(["error" => "ID du film manquant"]);
return;
}
$res = $this->movieModel->share($data['movie_id'], $data['user_id']);
echo json_encode(["success" => $res]);
}
public function getLists($data) {
// 1. On récupère le vrai partenaire via le modèle (qui a accès à la BDD)
$realPartnerId = $this->movieModel->getRealPartnerId($data['user_id']);
// 2. On récupère les listes avec le vrai ID
$lists = $this->movieModel->getLists($data['user_id'], $realPartnerId);
// 3. On renvoie le JSON
echo json_encode([
"success" => true,
"partner_id" => $realPartnerId,
"lists" => $lists
]);
}
public function remove($data) {
if (!isset($data['movie_id'])) {
http_response_code(400);
echo json_encode(["error" => "ID du film manquant"]);
return;
}
$res = $this->movieModel->remove($data['movie_id'], $data['user_id']);
echo json_encode(["success" => $res]);
}
public function markWatched($data) {
if (!isset($data['movie_id'])) {
http_response_code(400);
echo json_encode(["error" => "ID du film manquant"]);
return;
}
$res = $this->movieModel->markWatched($data['movie_id'], $data['user_id']);
echo json_encode(["success" => $res]);
}
}