X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Favatarsettings.php;h=1f31cbdafedc9975b80f0feb1b537d6206b33b64;hb=1ae5ea8f4cf40113a14a183b754101177f99ba32;hp=77c6681c3c8d0e548f8290992704802fafc6d6ee;hpb=a23c4aa23605003de929ee3fb4bcef6603f9e9ac;p=quix0rs-gnu-social.git diff --git a/actions/avatarsettings.php b/actions/avatarsettings.php index 77c6681c3c..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', @@ -123,32 +116,31 @@ class AvatarsettingsAction extends SettingsAction if (Event::handle('StartAvatarFormData', array($this))) { $this->elementStart('ul', 'form_data'); try { - $original = Avatar::getOriginal($profile); + $original = Avatar::getUploaded($profile); $this->elementStart('li', array('id' => 'avatar_original', 'class' => 'avatar_view')); // TRANS: Header on avatar upload page for thumbnail of originally uploaded avatar (h2). $this->element('h2', null, _("Original")); $this->elementStart('div', array('id'=>'avatar_original_view')); - $this->element('img', array('src' => $original->url, + $this->element('img', array('src' => $original->displayUrl(), 'width' => $original->width, 'height' => $original->height, 'alt' => $user->nickname)); $this->elementEnd('div'); $this->elementEnd('li'); - } catch (NoResultException $e) { + } catch (NoAvatarException $e) { // No original avatar found! } - $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); - - if ($avatar) { + try { + $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); $this->elementStart('li', array('id' => 'avatar_preview', 'class' => 'avatar_view')); // TRANS: Header on avatar upload page for thumbnail of to be used rendition of uploaded avatar (h2). $this->element('h2', null, _("Preview")); $this->elementStart('div', array('id'=>'avatar_preview_view')); - $this->element('img', array('src' => $avatar->url, + $this->element('img', array('src' => $avatar->displayUrl(), 'width' => AVATAR_PROFILE_SIZE, 'height' => AVATAR_PROFILE_SIZE, 'alt' => $user->nickname)); @@ -158,6 +150,8 @@ class AvatarsettingsAction extends SettingsAction $this->submit('delete', _m('BUTTON','Delete')); } $this->elementEnd('li'); + } catch (NoAvatarException $e) { + // No previously uploaded avatar to preview. } $this->elementStart('li', array ('id' => 'settings_attach')); @@ -194,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', @@ -330,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, @@ -354,14 +347,13 @@ class AvatarsettingsAction extends SettingsAction * * @return void */ - function cropAvatar() + public function cropAvatar() { $filedata = $_SESSION['FILEDATA']; 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']) @@ -371,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 = 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']); @@ -385,7 +391,6 @@ class AvatarsettingsAction extends SettingsAction $this->mode = 'upload'; // TRANS: Success message for having updated a user avatar. $this->showForm(_('Avatar updated.'), true); - common_broadcast_profile($profile); } else { // TRANS: Error displayed on the avatar upload page if the avatar could not be updated for an unknown reason. $this->showForm(_('Failed updating avatar.'));