Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
<?php
header('Content-Type: application/json');
require_once 'config.php';
$source = isset($_GET['source']) ? $_GET['source'] : 'default';
$list_id = isset($_GET['list_id']) ? (int)$_GET['list_id'] : 0;
$category = isset($_GET['category']) ? $_GET['category'] : '';
$difficulty = isset($_GET['difficulty']) ? $_GET['difficulty'] : '';
$limit = isset($_GET['limit']) ? (int)$_GET['limit'] : 10;
try {
$pdo = getDbConnection();
if ($source === 'list' && $list_id > 0) {
// Fetch words from custom list
$sql = "SELECT
lw.list_word_id as word_id,
lw.english_word,
lw.dutch_translation,
lw.difficulty_level,
wl.list_name as category_name
FROM list_words lw
JOIN word_lists wl ON lw.list_id = wl.list_id
WHERE lw.list_id = :list_id";
$params = [':list_id' => $list_id];
// Apply difficulty filter if specified
if (!empty($difficulty)) {
$sql .= " AND lw.difficulty_level = :difficulty";
$params[':difficulty'] = $difficulty;
}
$sql .= " ORDER BY RAND() LIMIT :limit";
$stmt = $pdo->prepare($sql);
// Bind parameters
foreach ($params as $key => $value) {
$stmt->bindValue($key, $value);
}
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->execute();
$words = $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
// Fetch words from default words table
$sql = "SELECT
w.word_id,
w.english_word,
w.dutch_translation,
w.difficulty_level,
c.category_name
FROM words w
LEFT JOIN categories c ON w.category_id = c.category_id
WHERE 1=1";
$params = [];
// Apply category filter
if (!empty($category)) {
$sql .= " AND w.category_id = :category";
$params[':category'] = $category;
}
// Apply difficulty filter
if (!empty($difficulty)) {
$sql .= " AND w.difficulty_level = :difficulty";
$params[':difficulty'] = $difficulty;
}
$sql .= " ORDER BY RAND() LIMIT :limit";
$stmt = $pdo->prepare($sql);
// Bind parameters
foreach ($params as $key => $value) {
$stmt->bindValue($key, $value);
}
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->execute();
$words = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
if (empty($words)) {
echo json_encode([
'success' => false,
'error' => 'No words found with the selected filters'
]);
exit();
}
echo json_encode([
'success' => true,
'words' => $words,
'count' => count($words)
]);
} catch(PDOException $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'error' => 'Database error: ' . $e->getMessage()
]);
}
?>