140 lines
4.8 KiB
PHP
140 lines
4.8 KiB
PHP
<?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;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|