X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Favatarsettings.php;h=1f31cbdafedc9975b80f0feb1b537d6206b33b64;hb=f094918cf69fec48aa501b8ec0cfa4af87d11266;hp=dd8093b765c57af9599772ecdf90c8764b24385f;hpb=fcba540a14fb227e5d455d12ff2d7311b25e7c2e;p=quix0rs-gnu-social.git diff --git a/actions/avatarsettings.php b/actions/avatarsettings.php index dd8093b765..1f31cbdafe 100644 --- a/actions/avatarsettings.php +++ b/actions/avatarsettings.php @@ -28,13 +28,7 @@ * @link http://status.net/ */ -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - - - -define('MAX_ORIGINAL', 480); +if (!defined('GNUSOCIAL')) { exit(1); } /** * Upload an avatar @@ -106,7 +100,6 @@ class AvatarsettingsAction extends SettingsAction common_log_db_error($user, 'SELECT', __FILE__); // TRANS: Error message displayed when referring to a user without a profile. $this->serverError(_('User has no profile.')); - return; } $this->elementStart('form', array('enctype' => 'multipart/form-data', @@ -195,7 +188,6 @@ class AvatarsettingsAction extends SettingsAction common_log_db_error($user, 'SELECT', __FILE__); // TRANS: Error message displayed when referring to a user without a profile. $this->serverError(_('User has no profile.')); - return; } $this->elementStart('form', array('method' => 'post', @@ -331,7 +323,7 @@ class AvatarsettingsAction extends SettingsAction 'tmp'.common_timestamp()); $filepath = Avatar::path($filename); - $imagefile->copyTo($filepath); + $imagefile = $imagefile->copyTo($filepath); $filedata = array('filename' => $filename, 'filepath' => $filepath, @@ -362,7 +354,6 @@ class AvatarsettingsAction extends SettingsAction if (!$filedata) { // TRANS: Server error displayed if an avatar upload went wrong somehow server side. $this->serverError(_('Lost our file data.')); - return; } $file_d = ($filedata['width'] > $filedata['height']) @@ -372,13 +363,27 @@ class AvatarsettingsAction extends SettingsAction $dest_y = $this->arg('avatar_crop_y') ? $this->arg('avatar_crop_y'):0; $dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$file_d; $dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$file_d; - $size = floor(min($dest_w, $dest_h, MAX_ORIGINAL)); + $size = intval(min($dest_w, $dest_h, common_config('avatar', 'maxsize'))); + + $box = array('width' => $size, 'height' => $size, + 'x' => $dest_x, 'y' => $dest_y, + 'w' => $dest_w, 'h' => $dest_h); $user = common_current_user(); $profile = $user->getProfile(); - $imagefile = new ImageFile($user->id, $filedata['filepath']); - $filename = $imagefile->resize($size, $dest_x, $dest_y, $dest_w, $dest_h); + $imagefile = new ImageFile(null, $filedata['filepath']); + $filename = Avatar::filename($profile->getID(), image_type_to_extension($imagefile->preferredType()), + $size, common_timestamp()); + try { + $imagefile->resizeTo(Avatar::path($filename), $box); + } catch (UseFileAsThumbnailException $e) { + common_debug('Using uploaded avatar directly without resizing, copying it to: '.$filename); + if (!copy($filedata['filepath'], Avatar::path($filename))) { + common_debug('Tried to copy image file '.$filedata['filepath'].' to destination '.Avatar::path($filename)); + throw new ServerException('Could not copy file to destination.'); + } + } if ($profile->setOriginal($filename)) { @unlink($filedata['filepath']);