File stats in progress

This commit is contained in:
fredtempez 2021-02-12 08:13:25 +01:00
parent e6dc5dff75
commit 73aeea6874
2 changed files with 55 additions and 2 deletions

View File

@ -28,7 +28,8 @@ class download extends common {
'delete' => self::GROUP_MODERATOR, 'delete' => self::GROUP_MODERATOR,
'edit' => self::GROUP_MODERATOR, 'edit' => self::GROUP_MODERATOR,
'index' => self::GROUP_VISITOR, 'index' => self::GROUP_VISITOR,
'rss' => self::GROUP_VISITOR 'rss' => self::GROUP_VISITOR,
'downloadFile' => self::GROUP_VISITOR
]; ];
public static $items = []; public static $items = [];
@ -179,6 +180,7 @@ class download extends common {
'file' => $this->getInput('downloadAddFile', helper::FILTER_STRING_SHORT, true), 'file' => $this->getInput('downloadAddFile', helper::FILTER_STRING_SHORT, true),
'fileVersion' => $this->getInput('downloadAddFileVersion', helper::FILTER_STRING_SHORT, true), 'fileVersion' => $this->getInput('downloadAddFileVersion', helper::FILTER_STRING_SHORT, true),
'fileDate' => $this->getInput('downloadAddFileDate', helper::FILTER_DATETIME, true), 'fileDate' => $this->getInput('downloadAddFileDate', helper::FILTER_DATETIME, true),
'fileCount' => 0,
'publishedOn' => $this->getInput('downloadAddPublishedOn', helper::FILTER_DATETIME, true), 'publishedOn' => $this->getInput('downloadAddPublishedOn', helper::FILTER_DATETIME, true),
'state' => $this->getInput('downloadAddState', helper::FILTER_BOOLEAN), 'state' => $this->getInput('downloadAddState', helper::FILTER_BOOLEAN),
'title' => $this->getInput('downloadAddTitle', helper::FILTER_STRING_SHORT, true), 'title' => $this->getInput('downloadAddTitle', helper::FILTER_STRING_SHORT, true),
@ -537,6 +539,7 @@ class download extends common {
'file' => $this->getInput('downloadEditFile', helper::FILTER_STRING_SHORT, true), 'file' => $this->getInput('downloadEditFile', helper::FILTER_STRING_SHORT, true),
'fileVersion' => $this->getInput('downloadEditFileVersion', helper::FILTER_STRING_SHORT, true), 'fileVersion' => $this->getInput('downloadEditFileVersion', helper::FILTER_STRING_SHORT, true),
'fileDate' => $this->getInput('downloadEditFileDate', helper::FILTER_DATETIME, true), 'fileDate' => $this->getInput('downloadEditFileDate', helper::FILTER_DATETIME, true),
'fileCount' => $this->getData(['module',$this->getUrl(0), 'items', $itemId, 'fileCount']),
'publishedOn' => $this->getInput('downloadEditPublishedOn', helper::FILTER_DATETIME, true), 'publishedOn' => $this->getInput('downloadEditPublishedOn', helper::FILTER_DATETIME, true),
'state' => $this->getInput('downloadEditState', helper::FILTER_BOOLEAN), 'state' => $this->getInput('downloadEditState', helper::FILTER_BOOLEAN),
'title' => $this->getInput('downloadEditTitle', helper::FILTER_STRING_SHORT, true), 'title' => $this->getInput('downloadEditTitle', helper::FILTER_STRING_SHORT, true),
@ -759,5 +762,54 @@ class download extends common {
return $this->getData(['user', $userId, 'firstname']); return $this->getData(['user', $userId, 'firstname']);
} }
} }
/**
* Initie un téléchargement protégé
*/
public function downloadFile() {
if($this->getData(['module', $this->getUrl(0), 'items', $this->getUrl(2)]) === null) {
// Valeurs en sortie
$this->addOutput([
'access' => false
]);
}
// Jeton incorrect
elseif ($this->getUrl(3) !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0),
'notification' => 'Action non autorisée'
]);
}
// Téléchargement
else {
$filePath = self::FILE_DIR . 'source/' . $this->getData(['module', $this->getUrl(0), 'items', $this->getUrl(2), 'file']);
$fileName = $this->getData(['module', $this->getUrl(0), 'items', $this->getUrl(2), 'file']);
if (file_exists($filePath)) {
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize($filePath));
readfile( $filePath);
// Incrémenter le compteur
$this->setData(['module',$this->getUrl(0), 'items', $this->getUrl(2), 'fileCount', helper::filter($this->setData(['module',$this->getUrl(0), 'items', $this->getUrl(2), 'fileCount']) + 1, helper::FILTER_INT) ]);
// Valeurs en sortie
$this->addOutput([
'display' => self::DISPLAY_RAW
]);
// Valeurs en sortie
$this->addOutput([
'title' => 'Configuration',
'view' => 'index'
]);
} else {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . $this->getUrl(0),
'notification' => 'Aucun fichier à télécharger',
'state' => false
]);
}
}
}
} }

View File

@ -57,7 +57,8 @@
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<?php echo template::button('downloadItemFile', [ <?php echo template::button('downloadItemFile', [
'href' => self::FILE_DIR . 'source/' . $this->getData(['module', $this->getUrl(0), 'items', $this->getUrl(1), 'file']), //'href' => self::FILE_DIR . 'source/' . $this->getData(['module', $this->getUrl(0), 'items', $this->getUrl(1), 'file']),
'href' => helper::baseUrl() . $this->getUrl(0) . '/downloadFile/' . $this->getUrl(1) . '/' . $_SESSION['csrf'],
'value' => 'Télécharger' 'value' => 'Télécharger'
]); ?> ]); ?>
</div> </div>