Thesaurus/ajax/getRelations.php
2026-02-23 16:11:35 +01:00

105 lines
3.1 KiB
PHP

<?php
/**
* getRelations.php - Lädt Relationen für einen Eintrag und gibt HTML zurück
*
* Parameter:
* - anchorID: ID des Eintrags (JavaScript-Format)
* - IDAnchor: ID des Eintrags (alternatives Format)
* - authType: Typ des Eintrags
*/
header('Content-Type: text/html; charset=utf-8');
include "db_connection.php";
$conn = mysqli_connect(HOST, USER, PASSWORD, DATABASE);
if (mysqli_connect_errno()) {
echo '';
exit();
}
mysqli_set_charset($conn, "utf8");
// Beide Parameter-Namen unterstützen (JavaScript sendet anchorID)
$idAnchor = isset($_GET['anchorID']) ? intval($_GET['anchorID']) : 0;
if ($idAnchor === 0) {
$idAnchor = isset($_GET['IDAnchor']) ? intval($_GET['IDAnchor']) : 0;
}
if ($idAnchor === 0) {
echo ''; // Leere Rückgabe bei ID 0 (neuer Eintrag)
exit();
}
// Relationen mit verknüpften Entry-Daten laden
// NUR Relationen mit einem echten Relationstyp (keine leeren, keine Selbstreferenzen)
$sql = "SELECT l.ID as LinkingID, l.IDAnchor, l.IDEntry, l.Relationtype,
e.Text as EntryText, e.CompleteText, a.Type as EntryType
FROM Linking l
LEFT JOIN Entry e ON l.IDEntry = e.ID
LEFT JOIN Anchor a ON l.IDEntry = a.ID
WHERE l.IDAnchor = $idAnchor
AND l.Relationtype != ''
AND l.IDAnchor != l.IDEntry
ORDER BY l.Relationtype, e.Text";
$result = mysqli_query($conn, $sql);
// Prüfen ob Relationen vorhanden
if (!$result || mysqli_num_rows($result) === 0) {
echo ''; // Leere Rückgabe - Bereich wird ausgeblendet
mysqli_close($conn);
exit();
}
// HTML-Tabellenzeilen generieren (analog zu Synonymen)
$html = '';
while ($row = mysqli_fetch_assoc($result)) {
$relType = htmlspecialchars($row['Relationtype']);
$entryText = htmlspecialchars($row['EntryText'] ?? '');
$linkingId = intval($row['LinkingID']);
$entryId = intval($row['IDEntry']);
// Badge-Farbe je nach Relationstyp
$badgeClass = 'bg-secondary';
$badgeTitle = $relType;
switch ($relType) {
case 'BT':
$badgeClass = 'bg-success';
$badgeTitle = 'BT - Oberbegriff';
break;
case 'NT':
$badgeClass = 'bg-danger';
$badgeTitle = 'NT - Unterbegriff';
break;
case 'RT':
$badgeClass = 'bg-warning text-dark';
$badgeTitle = 'RT - Verwandter Begriff';
break;
case 'USE':
$badgeClass = 'bg-info';
$badgeTitle = 'USE - Benutze';
break;
case 'UF':
$badgeClass = 'bg-secondary';
$badgeTitle = 'UF - Benutzt für';
break;
}
$html .= '<tr>';
$html .= '<td><span class="badge ' . $badgeClass . '" title="' . $badgeTitle . '">' . $relType . '</span></td>';
$html .= '<td>' . $entryText . '</td>';
$html .= '<td class="text-end">';
$html .= '<button class="btn btn-sm btn-outline-danger" onclick="DeleteRelation(' . $idAnchor . ', ' . $linkingId . ')" title="Relation löschen">';
$html .= '<i class="fas fa-trash"></i>';
$html .= '</button>';
$html .= '</td>';
$html .= '</tr>';
}
mysqli_close($conn);
echo $html;
?>