Letzte Version

This commit is contained in:
Thomas Spohr
2025-08-13 08:35:35 +02:00
parent 266fd69afb
commit 33fa9c8f94
10 changed files with 149 additions and 84 deletions

View File

@@ -0,0 +1,62 @@
<?php
namespace EIS\Component\EIS\Site\Controller;
\defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Router\Route;
use Joomla\Database\DatabaseDriver;
class DownloadController extends BaseController
{
public function download()
{
$app = Factory::getApplication();
$user = Factory::getUser();
$input = $app->input;
// Nur für eingeloggte Benutzer
if ($user->guest) {
$app->enqueueMessage('Bitte zuerst einloggen.', 'warning');
$app->redirect(Route::_('index.php?option=com_users&view=login', false));
return;
}
// ID aus URL lesen
$id = $input->getInt('id');
if (!$id) {
throw new \RuntimeException("Keine Dokument-ID übergeben.");
}
// Datenbankabfrage
/** @var DatabaseDriver $db */
$db = Factory::getDbo();
$query = $db->getQuery(true)
->select($db->quoteName(['path', 'name']))
->from($db->quoteName('#__eis_documents'))
->where($db->quoteName('id') . ' = ' . (int) $id)
->where($db->quoteName('is_folder') . ' = 0');
$row = $db->setQuery($query)->loadAssoc();
if (!$row) {
throw new \RuntimeException("PDF nicht gefunden oder kein gültiges Dokument.");
}
$filePath = $row['path'];
$fileName = $row['name'];
if (!file_exists($filePath)) {
throw new \RuntimeException("Datei existiert nicht auf dem Server.");
}
// PDF-Datei ausgeben
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="' . basename($fileName) . '"');
header('Content-Length: ' . filesize($filePath));
readfile($filePath);
exit;
}
}