<?php
// ZetCompanWiki/media_delete.php
require_once __DIR__ . '/includes/db.php';
require_once __DIR__ . '/includes/auth.php';
require_once __DIR__ . '/includes/functions.php';
require_once __DIR__ . '/includes/permissions.php';

$me = require_login();
csrf_start();

if (!can_upload_media($me)) { // admin/owner
  http_response_code(403);
  exit('Forbidden');
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  http_response_code(405);
  exit('Method not allowed');
}

csrf_check();

$articleId = (int)($_POST['article_id'] ?? 0);
$mediaId   = (int)($_POST['media_id'] ?? 0);
$mode      = (string)($_POST['mode'] ?? 'detach'); // detach | delete

if ($articleId <= 0 || $mediaId <= 0) {
  http_response_code(400);
  exit('Bad request');
}

// статья должна существовать
$stmt = db()->prepare("SELECT * FROM zetcompansite_articles WHERE id = ? LIMIT 1");
$stmt->execute([$articleId]);
$article = $stmt->fetch();
if (!$article) { http_response_code(404); exit('Article not found'); }

// отвязка от статьи (всегда)
$stmt = db()->prepare("DELETE FROM zetcompansite_article_media
                       WHERE article_id = ? AND media_id = ?
                       LIMIT 1");
$stmt->execute([$articleId, $mediaId]);

if ($mode === 'delete') {
  // удаляем полностью, но только если это медиа больше ни к чему не привязано
  $stmt = db()->prepare("SELECT COUNT(*) AS c FROM zetcompansite_article_media WHERE media_id = ?");
  $stmt->execute([$mediaId]);
  $c = (int)($stmt->fetch()['c'] ?? 0);

  if ($c === 0) {
    // получаем имя файла
    $stmt = db()->prepare("SELECT storage_name FROM zetcompansite_media WHERE id = ? LIMIT 1");
    $stmt->execute([$mediaId]);
    $m = $stmt->fetch();

    // удаляем запись
    $stmt = db()->prepare("DELETE FROM zetcompansite_media WHERE id = ? LIMIT 1");
    $stmt->execute([$mediaId]);

    // удаляем физический файл
    if ($m && !empty($m['storage_name'])) {
      $path = __DIR__ . '/public/uploads/' . basename((string)$m['storage_name']);
      if (is_file($path)) @unlink($path);
    }
  }
}

redirect('/article.php?slug=' . urlencode((string)$article['slug']));
