Letzte Version
This commit is contained in:
62
com_eis/site/src/Controller/DownloadController.php
Normal file
62
com_eis/site/src/Controller/DownloadController.php
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user