105 lines
3.1 KiB
PHP
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;
|
|
?>
|