From 170998da1a388dd9f75f9e45d9fae33dab03640c Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 17 Nov 2023 12:19:01 +0000 Subject: [PATCH] Allow to upload pictures up to the allowed system upload size --- src/App/Page.php | 3 ++- src/Module/Settings/Display.php | 2 +- src/Util/Images.php | 33 +++++++++++++++++++++++---------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/App/Page.php b/src/App/Page.php index 08efac627f..71f75df157 100644 --- a/src/App/Page.php +++ b/src/App/Page.php @@ -36,6 +36,7 @@ use Friendica\Core\System; use Friendica\Core\Theme; use Friendica\Module\Response; use Friendica\Network\HTTPException; +use Friendica\Util\Images; use Friendica\Util\Network; use Friendica\Util\Profiler; use Friendica\Util\Strings; @@ -282,7 +283,7 @@ class Page implements ArrayAccess '$stylesheets' => $this->stylesheets, // Dropzone - '$max_imagesize' => round(\Friendica\Util\Strings::getBytesFromShorthand($config->get('system', 'maximagesize')) / 1000000, 1), + '$max_imagesize' => round(Images::getMaxUploadBytes() / 1000000, 0), ]) . $this->page['htmlhead']; } diff --git a/src/Module/Settings/Display.php b/src/Module/Settings/Display.php index 36eae53c27..3cb5e44e2d 100644 --- a/src/Module/Settings/Display.php +++ b/src/Module/Settings/Display.php @@ -95,7 +95,7 @@ class Display extends BaseSettings $user = User::getById($uid); $theme = trim($request['theme']); - $mobile_theme = trim($request['mobile_theme']); + $mobile_theme = trim($request['mobile_theme'] ?? ''); $enable_smile = (bool)$request['enable_smile']; $enable = (array)$request['enable']; $bookmark = (array)$request['bookmark']; diff --git a/src/Util/Images.php b/src/Util/Images.php index aed72f065b..71a8bfea7e 100644 --- a/src/Util/Images.php +++ b/src/Util/Images.php @@ -244,22 +244,24 @@ class Images $filesize = strlen($img_str); try { - $data = @getimagesizefromstring($img_str); + $data = (array)@getimagesizefromstring($img_str); } catch (\Exception $e) { return []; } - if ($data) { - $image = new Image($img_str); - - if ($image->isValid()) { - $data['blurhash'] = $image->getBlurHash(); - } - - $data['size'] = $filesize; + if (empty($data)) { + return []; } - return is_array($data) ? $data : []; + $image = new Image($img_str); + + if ($image->isValid()) { + $data['blurhash'] = $image->getBlurHash(); + } + + $data['size'] = $filesize; + + return $data; } /** @@ -352,4 +354,15 @@ class Images return '[img=' . $photo . ']' . $description . '[/img]'; } + + /** + * Get the maximum possible upload size in bytes + * + * @return integer + */ + public static function getMaxUploadBytes(): int + { + $upload_size = ini_get('upload_max_filesize') ?: DI::config()->get('system', 'maximagesize'); + return Strings::getBytesFromShorthand($upload_size); + } }