change uploader

This commit is contained in:
Dennis Eichhorn 2021-06-24 00:04:20 +02:00
parent b0833bebc4
commit 3640dfd596
6 changed files with 35 additions and 127 deletions

View File

@ -165,7 +165,7 @@ final class ApiController extends Controller
} }
$upload = new UploadFile(); $upload = new UploadFile();
$upload->setOutputDir($outputDir); $upload->outputDir = $outputDir;
$status = $upload->upload($files, $name, $absolute, $encryptionKey); $status = $upload->upload($files, $name, $absolute, $encryptionKey);
@ -178,7 +178,7 @@ final class ApiController extends Controller
string $path = '', string $path = '',
) : array { ) : array {
$upload = new UploadFile(); $upload = new UploadFile();
$upload->setOutputDir($path); $upload->outputDir = $path;
$status = $upload->upload($files, $name, true, ''); $status = $upload->upload($files, $name, true, '');

View File

@ -261,7 +261,7 @@ class Media implements \JsonSerializable
*/ */
public function setPassword(?string $password) : void public function setPassword(?string $password) : void
{ {
$temp = $password === null ? null : \password_hash($password, \PASSWORD_DEFAULT); $temp = $password === null ? null : \password_hash($password, \PASSWORD_BCRYPT);
$this->password = $temp === false ? null : $temp; $this->password = $temp === false ? null : $temp;
} }

View File

@ -45,7 +45,7 @@ class UploadFile
* @var bool * @var bool
* @since 1.0.0 * @since 1.0.0
*/ */
private bool $isInterlaced = true; public bool $isInterlaced = true;
/** /**
* Upload max size. * Upload max size.
@ -53,7 +53,7 @@ class UploadFile
* @var int * @var int
* @since 1.0.0 * @since 1.0.0
*/ */
private int $maxSize = 50000000; public int $maxSize = 50000000;
/** /**
* Allowed mime types. * Allowed mime types.
@ -69,15 +69,7 @@ class UploadFile
* @var string * @var string
* @since 1.0.0 * @since 1.0.0
*/ */
private string $outputDir = __DIR__ . '/../../Modules/Media/Files'; public string $outputDir = __DIR__ . '/../../Modules/Media/Files';
/**
* Output file name.
*
* @var string
* @since 1.0.0
*/
private string $fileName = '';
/** /**
* Output file name. * Output file name.
@ -85,7 +77,7 @@ class UploadFile
* @var bool * @var bool
* @since 1.0.0 * @since 1.0.0
*/ */
private bool $preserveFileName = true; public bool $preserveFileName = true;
/** /**
* Upload file to server. * Upload file to server.
@ -153,8 +145,8 @@ class UploadFile
return $result; return $result;
} }
$split = \explode('.', $f['name']); $split = \explode('.', $f['name']);
$result[$key]['name'] = \count($files) === 1 && !empty($name) $result[$key]['filename'] = \count($files) === 1 && !empty($name)
? $name ? $name
: $f['name']; : $f['name'];
@ -162,14 +154,14 @@ class UploadFile
$result[$key]['extension'] = $extension; $result[$key]['extension'] = $extension;
if ($this->preserveFileName) { if ($this->preserveFileName) {
$this->fileName = $f['name']; $name = $f['name'];
$result[$key]['filename'] = $this->fileName; $result[$key]['filename'] = $name;
} }
if (empty($this->fileName) || \is_file($path . '/' . $this->fileName)) { if (empty($name) || \is_file($path . '/' . $name)) {
try { try {
$this->fileName = $this->createFileName($path, $f['tmp_name'], $extension); $name = $this->createFileName($path, $f['tmp_name'], $extension);
$result[$key]['filename'] = $this->fileName; $result[$key]['filename'] = $name;
} catch (\Exception $e) { } catch (\Exception $e) {
$result[$key]['filename'] = $f['name']; $result[$key]['filename'] = $f['name'];
$result[$key]['status'] = UploadStatus::FAILED_HASHING; $result[$key]['status'] = UploadStatus::FAILED_HASHING;
@ -186,7 +178,7 @@ class UploadFile
} }
} }
if (!\rename($f['tmp_name'], $dest = $path . '/' . $this->fileName)) { if (!\rename($f['tmp_name'], $dest = $path . '/' . $name)) {
$result[$key]['status'] = UploadStatus::NOT_MOVABLE; $result[$key]['status'] = UploadStatus::NOT_MOVABLE;
return $result; return $result;
@ -349,40 +341,6 @@ class UploadFile
} }
} }
/**
* @return int
*
* @since 1.0.0
*/
public function getMaxSize() : int
{
return $this->maxSize;
}
/**
* @param bool $isInterlaced Is interlaced
*
* @return void
*
* @since 1.0.0
*/
public function setInterlaced(bool $isInterlaced) : void
{
$this->isInterlaced = $isInterlaced;
}
/**
* @param int $maxSize Max allowed file size
*
* @return void
*
* @since 1.0.0
*/
public function setMaxSize(int $maxSize) : void
{
$this->maxSize = $maxSize;
}
/** /**
* @return string[] * @return string[]
* *
@ -416,66 +374,4 @@ class UploadFile
{ {
$this->allowedTypes[] = $allowedTypes; $this->allowedTypes[] = $allowedTypes;
} }
/**
* @return string
*
* @since 1.0.0
*/
public function getOutputDir() : string
{
return $this->outputDir;
}
/**
* Define output directory of the upload
*
* @param string $outputDir Output directory of the uploaded file
*
* @return void
*
* @since 1.0.0
*/
public function setOutputDir(string $outputDir) : void
{
$this->outputDir = $outputDir;
}
/**
* @return string
*
* @since 1.0.0
*/
public function getFileName() : string
{
return $this->fileName;
}
/**
* Set the file name of the uploaded file
*
* @param string $fileName File name of the uploaded file
*
* @return void
*
* @since 1.0.0
*/
public function setFileName(string $fileName) : void
{
$this->fileName = $fileName;
}
/**
* Define if the uploaded file name should be the same file name as the original file
*
* @param bool $preserveFileName Keep file name of the original file
*
* @return void
*
* @since 1.0.0
*/
public function setPreserveFileName(bool $preserveFileName) : void
{
$this->preserveFileName = $preserveFileName;
}
} }

View File

@ -1,4 +1,17 @@
<?php declare(strict_types=1); <?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package Modules\Media
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
use phpOMS\System\File\FileUtils; use phpOMS\System\File\FileUtils;
use phpOMS\Uri\UriFactory; use phpOMS\Uri\UriFactory;

View File

@ -20,14 +20,13 @@ include __DIR__ . '/template-functions.php';
/** /**
* @var \phpOMS\Views\View $this * @var \phpOMS\Views\View $this
* @var string $parent
*/ */
$mediaPath = \urldecode($this->getData('path') ?? '/'); $mediaPath = \urldecode($this->getData('path') ?? '/');
/** /** @var \Modules\Media\Models\Media[] $media */
* @var \Modules\Media\Models\Media[] $media $media = $this->getData('media') ?? [];
*/
$media = $this->getData('media'); /** @var \Modules\Admin\Models\Account $account */
$account = $this->getData('account'); $account = $this->getData('account');
$accountDir = $account->getId() . ' ' . $account->login; $accountDir = $account->getId() . ' ' . $account->login;
@ -193,7 +192,7 @@ $next = empty($media) ? '{/prefix}media/list' : '{/prefix}media/list?{?}&id=
</a> </a>
<td data-label="<?= $this->getHtml('Tag'); ?>"><?php $tags = $value->getTags(); foreach ($tags as $tag) : ?> <td data-label="<?= $this->getHtml('Tag'); ?>"><?php $tags = $value->getTags(); foreach ($tags as $tag) : ?>
<a href="<?= $url; ?>"> <a href="<?= $url; ?>">
<span class="tag" style="background: <?= $this->printHtml($tag->color); ?>"><?= $tag->icon !== null ? '<i class="' . $this->printHtml($tag->icon ?? '') . '"></i>' : ''; ?><?= $this->printHtml($tag->getTitle()); ?></span> <span class="tag" style="background: <?= $this->printHtml($tag->color); ?>"><?= $tag->icon !== null ? '<i class="' . $this->printHtml($tag->icon ?? '') . '"></i>' : ''; ?><?= $this->printHtml($tag->getL11n()); ?></span>
</a> </a>
<?php endforeach; ?> <?php endforeach; ?>
<td data-label="<?= $this->getHtml('Extension'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->extension); ?></a> <td data-label="<?= $this->getHtml('Extension'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->extension); ?></a>

View File

@ -56,7 +56,7 @@ echo $this->getData('nav')->render();
); ?></a> ); ?></a>
<tr><td><?= $this->getHtml('Tags'); ?><td> <tr><td><?= $this->getHtml('Tags'); ?><td>
<?php foreach ($tags as $tag) : ?> <?php foreach ($tags as $tag) : ?>
<span class="tag" style="background: <?= $this->printHtml($tag->color); ?>"><?= $tag->icon !== null ? '<i class="' . $this->printHtml($tag->icon ?? '') . '"></i>' : ''; ?><?= $this->printHtml($tag->getTitle()); ?></span> <span class="tag" style="background: <?= $this->printHtml($tag->color); ?>"><?= $tag->icon !== null ? '<i class="' . $this->printHtml($tag->icon ?? '') . '"></i>' : ''; ?><?= $this->printHtml($tag->getL11n()); ?></span>
<?php endforeach; ?> <?php endforeach; ?>
<tr><td colspan="2"><?= $this->getHtml('Description'); ?> <tr><td colspan="2"><?= $this->getHtml('Description'); ?>
<tr><td colspan="2"><?= $media->description; ?> <tr><td colspan="2"><?= $media->description; ?>