Pl4tform_website/archive.php
2025-02-03 19:29:59 +01:00

178 lines
5.8 KiB
PHP

<?php
// Datenbankverbindungsdaten
$servername = "localhost"; // oder der Hostname deines DB-Servers
$username = "nc-site_request"; // Dein neuer MariaDB Benutzername
$password = "***"; // Dein Passwort für den neuen Benutzer
$dbname = "nextcloud"; // Der Name deiner Nextcloud-Datenbank
// Verbindung zur MySQL-Datenbank aufbauen
$conn = new mysqli($servername, $username, $password, $dbname);
// Verbindung prüfen
if ($conn->connect_error) {
die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
// 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält
$sql1 = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype
FROM oc_filecache AS fc
WHERE fc.path LIKE '%files/archive/%'
ORDER BY fc.name DESC";
$result1 = $conn->query($sql1);
// 2. Abfrage: Alle Mimetypes und ihre IDs
$sql2 = "SELECT id, mimetype FROM oc_mimetypes";
$result2 = $conn->query($sql2);
// 3. Abfrage: Alle Tags im System
$sql3 = "SELECT id, name FROM oc_systemtag";
$result3 = $conn->query($sql3);
// 4. Abfrage: Verknüpfung zwischen Files und Tags (mit 'files' statt 'file')
$sql4 = "SELECT objectid, systemtagid
FROM oc_systemtag_object_mapping
WHERE objecttype = 'files'";
$result4 = $conn->query($sql4);
// Alle Mimetypes in einem Array speichern
$mimetypes = [];
while ($row = $result2->fetch_assoc()) {
$mimetypes[$row['id']] = $row['mimetype'];
}
// Alle Tags in einem Array speichern
$tags = [];
while ($row = $result3->fetch_assoc()) {
$tags[$row['id']] = $row['name'];
}
// Tags mit Dateiinformationen verbinden
$fileTags = [];
while ($row = $result4->fetch_assoc()) {
$fileTags[$row['objectid']][] = $tags[$row['systemtagid']];
}
// Füge den Tag "archive" zu jedem Eintrag in fileTags hinzu
// foreach ($fileTags as $fileId => $existingTags) {
// // Prüfen, ob der Tag "archive" bereits vorhanden ist
// if (!in_array('archive', $existingTags)) {
// // Füge den Tag "archive" hinzu (nur im Array, nicht in der DB)
// $fileTags[$fileId][] = 'archive';
// }
// }
// HTML-Tabelle erstellen
echo "<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>File Information</title>
<!-- DataTables CSS -->
<link rel='stylesheet' type='text/css' href='https://cdn.datatables.net/1.11.5/css/jquery.dataTables.min.css'>
<!-- jQuery (für DataTables benötigt) -->
<script src='https://code.jquery.com/jquery-3.6.0.min.js'></script>
<!-- DataTables JS -->
<script src='https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js'></script>
<style>
table {
width: 100%;
border-collapse: collapse;
}
table, th, td {
border: 1px solid black;
}
th, td {
padding: 8px;
text-align: left;
}
</style>
</head>
<body>
<h1>File Information and Tags</h1>
<h2>All Tags:</h2>
<ul>";
// Alle Tags ausgeben
foreach ($tags as $tag_id => $tag_name) {
echo htmlspecialchars($tag_name) . ", ";
}
echo "</ul>";
echo "<h2>All files in Archive:</h2>
<table id='fileTable' class='display'>
<thead>
<tr>
<th>File ID</th>
<th>File Name</th>
<th>Size (MB)</th>
<th>Mimetype</th>
<th>Tags</th>
<th>edit</th>
</tr>
</thead>
<tbody>";
if ($result1->num_rows > 0) {
while ($row = $result1->fetch_assoc()) {
$file_id = $row['fileid'];
$file_name = $row['file_name'];
$file_size = $row['size'];
$file_size_in_mb = number_format($file_size / (1024 * 1024), 2);
$mimetype_id = $row['mimetype'];
$mimetype_name = isset($mimetypes[$mimetype_id]) ? $mimetypes[$mimetype_id] : 'Unknown';
// Hole die Tags für diese Datei
$file_tags = isset($fileTags[$file_id]) ? implode(', ', $fileTags[$file_id]) : 'No Tags';
// Prüfen, ob der Dateiname mit einem Datum im gewünschten Format beginnt (DDMMYY-HHMM oder DDMMYY_HHMM)
if (!preg_match('/^\d{6}[-_]\d{4}/', $file_name)) {
continue; // Diese Datei überspringen, wenn der Dateiname nicht mit dem gewünschten Format beginnt
}
// Generiere die URL für die Datei
$file_url = "https://pl4tform.org/data/files/{$file_name}";
// Zeile in die Tabelle einfügen und Dateinamen als Link formatieren
echo "<tr>
<td>{$file_id}</td>
<td><a href='https://pl4tform.org/ncdata/{$file_name}' target='_blank' title='Datei öffnen: {$file_name}'>{$file_name}</a></td>
<td>{$file_size_in_mb}</td>
<td>{$mimetype_name}</td>
<td>{$file_tags}</td>
<td><a href='https://cloud.pl4tform.org/f/{$file_id}'>edit</a></td>
</tr>";
}
} else {
echo "<tr><td colspan='5'>No data found</td></tr>";
}
echo " </tbody>
</table>
<script>
$(document).ready(function() {
// DataTables initialisieren, mit absteigender Sortierung und dynamischer Anzahl der Einträge pro Seite
$('#fileTable').DataTable({
'order': [[1, 'desc']], // 1 = 'File Name' Spalte, 'desc' für absteigende Sortierung
'pageLength': 100, // Standard: 100 Einträge pro Seite
'lengthMenu': [ // Auswahlmöglichkeiten für die Anzahl der angezeigten Einträge
[10, 50, 100, 500, 1000],
[10, 50, 100, 500, 1000] // Text für die Auswahl
]
});
});
</script>
</body>
</html>";
$conn->close();
?>