* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ /** * \file bericht/lib/bericht_index.lib.php * \ingroup bericht * \brief Dateien, die Bericht in einen Belegordner legt, als „hochgeladen" indexieren. * * Fotos, Notizen, Sprachnotizen, Scans und Bericht-PDFs sind Beilagen, keine * Belegdokumente aus der Vorlage. Eddys Regel (13.10.2026, KB #1641): sie stehen nur im * Reiter am Beleg, nie vorne im Kasten der Belegkarte. Ohne Indexeintrag führt Dolibarr * sie als „unknown" — dann kann kein Modul sie sicher als Beilage erkennen. * * Eigene Datei ohne weitere Abhängigkeiten, damit auch Endpunkte sie laden können, die * bericht.lib.php nicht einbinden (ajax/process_document.php). */ require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmfiles.class.php'; /** * Datei im ECM-Index als „uploaded" führen: vorhandenen Eintrag aktualisieren (Prüfsumme, * Herkunft, Belegbezug), sonst neu anlegen. addFileIntoDatabaseIndex() allein prüft nicht * auf Dubletten — eine überschriebene Notiz bekäme sonst bei jedem Speichern einen Eintrag. * * Fehler werden nur protokolliert: die Datei liegt bereits richtig, ein fehlender * Indexeintrag ist kein Grund, den Upload als gescheitert zu melden. * * @param string $fullpath Absoluter Pfad der Datei unter DOL_DATA_ROOT * @param CommonObject|null $beleg Beleg (für src_object_type/src_object_id), optional * @return void */ function bericht_als_beilage_indexieren($fullpath, $beleg = null) { global $db, $user; if (empty($fullpath) || !is_file($fullpath) || strpos($fullpath, DOL_DATA_ROOT.'/') !== 0) { return; } $dir = dirname($fullpath); $name = basename($fullpath); $rel_dir = ltrim(substr($dir, strlen(DOL_DATA_ROOT)), '/'); $ecm = new EcmFiles($db); if ($ecm->fetch(0, '', $rel_dir.'/'.$name) > 0) { $ecm->gen_or_uploaded = 'uploaded'; $ecm->label = md5_file($fullpath); if (is_object($beleg) && !empty($beleg->id)) { $ecm->src_object_type = $beleg->table_element; $ecm->src_object_id = (int) $beleg->id; } if ($ecm->update($user) < 0) { dol_syslog('bericht_als_beilage_indexieren: Update fehlgeschlagen für '.$rel_dir.'/'.$name.': '.$ecm->error, LOG_WARNING); } return; } if (addFileIntoDatabaseIndex($dir, $name, '', 'uploaded', 0, is_object($beleg) ? $beleg : null) < 0) { dol_syslog('bericht_als_beilage_indexieren: Anlegen fehlgeschlagen für '.$rel_dir.'/'.$name, LOG_WARNING); } }