Pl4tform_website/includes/nc-one-file-request.php

141 lines
4.8 KiB
PHP
Raw Permalink Normal View History

2025-02-03 19:29:59 +01:00
<?php
// Datenbankverbindungsdaten
$servername = "localhost"; // oder der Hostname deines DB-Servers
$username = "***"; // 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);
}
// Funktion zum Abrufen der Daten für eine einzelne Datei
function getFileInfo($file_id) {
global $conn;
// 2. Abfrage: Alle Mimetypes und ihre IDs
$sql2 = "SELECT id, mimetype FROM oc_mimetypes";
$result2 = $conn->query($sql2);
// Alle Mimetypes in einem Array speichern
$mimetypes = [];
while ($row = $result2->fetch_assoc()) {
$mimetypes[$row['id']] = $row['mimetype'];
}
// 3. Abfrage: Alle Tags im System
$sql3 = "SELECT id, name FROM oc_systemtag";
$result3 = $conn->query($sql3);
// Alle Tags in einem Array speichern
$tags = [];
while ($row = $result3->fetch_assoc()) {
$tags[$row['id']] = $row['name'];
}
// 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);
// 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';
// }
// }
// Abfrage nach der Datei mit der gegebenen file_id
$sql = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype
FROM oc_filecache AS fc
WHERE fc.fileid = $file_id";
$result = $conn->query($sql);
// Überprüfen, ob die Datei existiert
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
// Extrahiere die Dateidaten
$file_name = $row['file_name'];
$file_size = $row['size'];
$mimetype_id = $row['mimetype'];
$mimetype_name = isset($mimetypes[$mimetype_id]) ? $mimetypes[$mimetype_id] : 'Unknown';
$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 (YYMMDD-HHMM oder YYMMDD_HHMM)
if (preg_match('/^(\d{2})(\d{2})(\d{2})[-_](\d{4})/', $file_name, $matches)) {
// Extrahiere Jahr, Monat, Tag, Stunde und Minute
$file_year = $matches[1]; // Jahr (z.B. "21" wird zu "2021")
$file_month = $matches[2]; // Monat
$file_day = $matches[3]; // Tag
$file_hour = substr($matches[4], 0, 2); // Stunde (erste zwei Zeichen)
$file_minute = substr($matches[4], 2, 2); // Minute (letzte zwei Zeichen)
// Entferne Datum und Uhrzeit aus dem Dateinamen, also den Anfang
$file_title = substr($file_name, strlen($matches[0])); // Rest des Dateinamens nach Datum/Uhrzeit
// Finde die Position des letzten Punktes im Dateinamen
$last_dot_position = strrpos($file_title, '.');
// Überprüfe, ob ein Punkt im Dateinamen existiert
if ($last_dot_position !== false) {
// Extrahiere den Dateinamen ohne die Erweiterung (alles vor dem letzten Punkt)
$file_title = substr($file_title, 0, $last_dot_position);
}
// Entferne alles nach dem '@' (falls vorhanden)
$file_title = strtok($file_title, '@');
// Entferne einen führenden Unterstrich (falls vorhanden)
$file_title = ltrim($file_title, '_');
}
// Rückgabe der Datei-Daten als Array
return [
'file_id' => $file_id,
'file_name' => $file_name,
'file_size' => $file_size,
'mimetype_name' => $mimetype_name,
'file_tags' => $file_tags,
'file_year' => $file_year,
'file_month' => $file_month,
'file_day' => $file_day,
'file_hour' => $file_hour,
'file_minute' => $file_minute,
'file_title' => $file_title
];
} else {
// Falls keine Datei gefunden wurde, null zurückgeben
return null;
}
}
?>