summaryrefslogtreecommitdiff
path: root/app/Services/MediaFileService.php
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-11-23 14:53:24 +0000
committerGreg Roach <fisharebest@webtrees.net>2019-11-23 17:58:41 +0000
commitd501c45d339d4a2d06248f9197d7875a4df14e48 (patch)
tree6354050630acc6b16124600a9a6597fcb9fb599c /app/Services/MediaFileService.php
parentb5f5afdbfd53e7e50eb7aa9959fdbdfed101a6e5 (diff)
downloadwebtrees-d501c45d339d4a2d06248f9197d7875a4df14e48.tar.gz
webtrees-d501c45d339d4a2d06248f9197d7875a4df14e48.tar.bz2
webtrees-d501c45d339d4a2d06248f9197d7875a4df14e48.zip
Remove dependency on symfony httpfoundation/kernel
Diffstat (limited to 'app/Services/MediaFileService.php')
-rw-r--r--app/Services/MediaFileService.php41
1 files changed, 39 insertions, 2 deletions
diff --git a/app/Services/MediaFileService.php b/app/Services/MediaFileService.php
index 17ab305b74..162ec42f34 100644
--- a/app/Services/MediaFileService.php
+++ b/app/Services/MediaFileService.php
@@ -31,7 +31,6 @@ use League\Flysystem\FilesystemInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\UploadedFileInterface;
use RuntimeException;
-use Symfony\Component\HttpFoundation\File\UploadedFile;
use function array_combine;
use function array_diff;
@@ -39,7 +38,11 @@ use function array_filter;
use function array_map;
use function assert;
use function dirname;
+use function ini_get;
use function intdiv;
+use function intval;
+use function ltrim;
+use function min;
use function pathinfo;
use function preg_match;
use function sha1;
@@ -47,9 +50,11 @@ use function sort;
use function str_replace;
use function strpos;
use function strtolower;
+use function substr;
use function trim;
use const PATHINFO_EXTENSION;
+use const PHP_INT_MAX;
use const UPLOAD_ERR_OK;
/**
@@ -72,13 +77,45 @@ class MediaFileService
*/
public function maxUploadFilesize(): string
{
- $bytes = UploadedFile::getMaxFilesize();
+ $sizePostMax = $this->parseIniFileSize(ini_get('post_max_size'));
+ $sizeUploadMax = $this->parseIniFileSize(ini_get('upload_max_filesize'));
+
+ $bytes = min($sizePostMax, $sizeUploadMax);
$kb = intdiv($bytes + 1023, 1024);
return I18N::translate('%s KB', I18N::number($kb));
}
/**
+ * Returns the given size from an ini value in bytes.
+ *
+ * @param $size
+ *
+ * @return int
+ */
+ private function parseIniFileSize($size): int
+ {
+ $number = (int) $size;
+
+ switch (substr($size, -1)) {
+ case 't':
+ case 'T':
+ return $number * 1024 ** 4;
+ case 'g':
+ case 'G':
+ return $number * 1024 ** 3;
+ case 'm':
+ case 'M':
+ return $number * 1024 ** 2;
+ case 'k':
+ case 'K':
+ return $number * 1024;
+ default:
+ return $number;
+ }
+ }
+
+ /**
* A list of key/value options for media types.
*
* @param string $current