X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fwall_upload.php;h=7973f1c96f4741aad6620278a9c37fd0fa4e7de5;hb=25f0f0c4396ece49634be517b92d638ef9c73505;hp=c3ba323043aa5a55ca8b0cb1f0029e477b9c19da;hpb=aa0b485f3dca72c5448076e913fa54d948cd7731;p=friendica.git diff --git a/mod/wall_upload.php b/mod/wall_upload.php index c3ba323043..7973f1c96f 100644 --- a/mod/wall_upload.php +++ b/mod/wall_upload.php @@ -1,6 +1,6 @@ argc > 1) { + if (DI::args()->getArgc() > 1) { if (empty($_FILES['media'])) { - $nick = $a->argv[1]; + $nick = DI::args()->getArgv()[1]; $user = DBA::selectFirst('owner-view', ['id', 'uid', 'nickname', 'page-flags'], ['nickname' => $nick, 'blocked' => false]); if (!DBA::isResult($user)) { if ($r_json) { @@ -168,19 +168,6 @@ function wall_upload_post(App $a, $desktopmode = true) Logger::log("File upload src: " . $src . " - filename: " . $filename . " - size: " . $filesize . " - type: " . $filetype, Logger::DEBUG); - $maximagesize = DI::config()->get('system', 'maximagesize'); - - if (($maximagesize) && ($filesize > $maximagesize)) { - $msg = DI::l10n()->t('Image exceeds size limit of %s', Strings::formatBytes($maximagesize)); - if ($r_json) { - echo json_encode(['error' => $msg]); - } else { - echo $msg. EOL; - } - @unlink($src); - exit(); - } - $imagedata = @file_get_contents($src); $Image = new Image($imagedata, $filetype); @@ -204,12 +191,39 @@ function wall_upload_post(App $a, $desktopmode = true) } if ($max_length > 0) { $Image->scaleDown($max_length); + $filesize = strlen($Image->asString()); Logger::log("File upload: Scaling picture to new size " . $max_length, Logger::DEBUG); } $width = $Image->getWidth(); $height = $Image->getHeight(); + $maximagesize = DI::config()->get('system', 'maximagesize'); + + if (!empty($maximagesize) && ($filesize > $maximagesize)) { + // Scale down to multiples of 640 until the maximum size isn't exceeded anymore + foreach ([5120, 2560, 1280, 640] as $pixels) { + if (($filesize > $maximagesize) && (max($width, $height) > $pixels)) { + Logger::info('Resize', ['size' => $filesize, 'width' => $width, 'height' => $height, 'max' => $maximagesize, 'pixels' => $pixels]); + $Image->scaleDown($pixels); + $filesize = strlen($Image->asString()); + $width = $Image->getWidth(); + $height = $Image->getHeight(); + } + } + if ($filesize > $maximagesize) { + Logger::notice('Image size is too big', ['size' => $filesize, 'max' => $maximagesize]); + $msg = DI::l10n()->t('Image exceeds size limit of %s', Strings::formatBytes($maximagesize)); + if ($r_json) { + echo json_encode(['error' => $msg]); + } else { + echo $msg. EOL; + } + @unlink($src); + exit(); + } + } + $resource_id = Photo::newResource(); $smallest = 0;