Ohne Zugriffsebenen

This commit is contained in:
Thomas Spohr
2026-02-14 13:07:19 +01:00
parent c744863094
commit fd88be717e
10 changed files with 103 additions and 41 deletions

View File

@@ -11,6 +11,7 @@ use Joomla\CMS\Router\Route;
use Joomla\CMS\Session\Session;
use Joomla\Database\DatabaseDriver;
use EIS\Component\EIS\Administrator\Helper\SettingsHelper;
use EIS\Component\EIS\Administrator\Service\DocumentScanner;
class DisplayController extends BaseController
{
@@ -19,50 +20,29 @@ class DisplayController extends BaseController
/**
* Button-Aktion: PDF-Verzeichnis scannen und in Datenbank speichern
*/
public function scan(): void
{
// CSRF prüfen (Form hat Token)
if (!Session::checkToken('post')) {
throw new \RuntimeException(Text::_('JINVALID_TOKEN'), 403);
}
$app = Factory::getApplication();
/** @var DatabaseDriver $db */
$db = Factory::getDbo();
// Pfad aus Settings laden (Key/Value); Default /var/www/pdf
$path = SettingsHelper::getSetting('document_root', '/var/www/pdf');
if (!$path || !is_dir($path)) {
$app->enqueueMessage(
Text::sprintf('COM_EIS_MSG_PATH_NOT_EXISTS', $path) ?: ('Pfad ungültig oder nicht gesetzt: ' . $path),
'error'
);
$this->setRedirect(Route::_('index.php?option=com_eis&view=main', false));
return;
}
// Verzeichnis rekursiv scannen
$data = $this->scanFolder($path);
// Alte Einträge löschen (Hinweis: Dann sind ALLE eingefügten „neu“)
$db->truncateTable('#__eis_documents');
// In Datenbank speichern und neue IDs sammeln (nur Dateien)
$newIds = $this->saveToDb($data, null, $db);
// Neue IDs im UserState für die View -> virtueller Ordner "Neue Dokumente"
$app->setUserState('com_eis.new_ids', $newIds);
// NEU: dauerhaft speichern (für das Frontend-Modul)
SettingsHelper::setSetting('last_new_ids', json_encode($newIds, JSON_UNESCAPED_SLASHES));
SettingsHelper::setSetting('last_scan_at', date('Y-m-d H:i:s'));
// Erfolgsmeldung
$app->enqueueMessage(Text::_('COM_EIS_MSG_SCAN_DONE') ?: 'PDF-Struktur erfolgreich gespeichert.', 'message');
$this->setRedirect(Route::_('index.php?option=com_eis&view=main', false));
{
// CSRF prüfen (Form hat Token)
if (!Session::checkToken('post')) {
throw new \RuntimeException(Text::_('JINVALID_TOKEN'), 403);
}
$app = Factory::getApplication();
try {
$newIds = DocumentScanner::run();
// Wie bisher: New IDs für die View (virtueller Ordner "Neue Dokumente")
$app->setUserState('com_eis.new_ids', $newIds);
$app->enqueueMessage(Text::_('COM_EIS_MSG_SCAN_DONE') ?: 'PDF-Struktur erfolgreich gespeichert.', 'message');
} catch (\Throwable $e) {
$app->enqueueMessage($e->getMessage(), 'error');
}
$this->setRedirect(Route::_('index.php?option=com_eis&view=main', false));
}
/**
* Rekursive Verzeichnisanalyse
*/