X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Favatar.php;h=9c736cd3b6fd65001372f013f45e7ab9479818c9;hb=0ed925c5907b55993d7aa2858d3f8f6c6c50f60b;hp=b715e02dee6e043ca0a958fc2e4ad1cfb99bdc92;hpb=3803cf2153091c4f319c379c3ac24cc8fc844b0a;p=quix0rs-gnu-social.git diff --git a/actions/avatar.php b/actions/avatar.php index b715e02dee..9c736cd3b6 100644 --- a/actions/avatar.php +++ b/actions/avatar.php @@ -17,7 +17,9 @@ * along with this program. If not, see . */ -if (!defined('LACONICA')) { exit(1) } +if (!defined('LACONICA')) { exit(1); } + +require_once(INSTALLDIR.'/lib/settingsaction.php'); class AvatarAction extends SettingsAction { @@ -34,7 +36,8 @@ class AvatarAction extends SettingsAction { common_element('img', array('src' => $original->url, 'class' => 'avatar original', 'width' => $original->width, - 'height' => $original->height)); + 'height' => $original->height, + 'alt' => $user->nickname)); } $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE); @@ -43,10 +46,11 @@ class AvatarAction extends SettingsAction { common_element('img', array('src' => $avatar->url, 'class' => 'avatar profile', 'width' => AVATAR_PROFILE_SIZE, - 'height' => AVATAR_PROFILE_SIZE)); + 'height' => AVATAR_PROFILE_SIZE, + 'alt' => $user->nickname)); } - common_start_element('form', array('enctype' => 'multipart/form-data', + common_element_start('form', array('enctype' => 'multipart/form-data', 'method' => 'POST', 'id' => 'avatar', 'action' => @@ -58,10 +62,9 @@ class AvatarAction extends SettingsAction { common_element('input', array('name' => 'avatarfile', 'type' => 'file', 'id' => 'avatarfile')); - common_element('input', array('name' => 'submit', - 'type' => 'submit', - 'id' => 'submit'), - _t('Upload')); + common_submit('submit', _t('Upload')); + common_element_end('form'); + common_show_footer(); } function handle_post() { @@ -99,10 +102,10 @@ class AvatarAction extends SettingsAction { $this->show_form(_t('Unsupported image file format.')); return; } - + $user = common_current_user(); - $filename = common_avatar_filename($user, image_type_to_extension($info[2])); + $filename = common_avatar_filename($user, image_type_to_extension($info[2]), NULL, common_timestamp()); $filepath = common_avatar_path($filename); if (!move_uploaded_file($_FILES['avatarfile']['tmp_name'], $filepath)) { @@ -120,9 +123,13 @@ class AvatarAction extends SettingsAction { $avatar->filename = $filename; $avatar->original = true; $avatar->url = common_avatar_url($filename); + $avatar->created = DB_DataObject_Cast::dateTime(); # current time foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) { - $scaled[] = $this->scale_avatar($user, $avatar, $size); + # We don't need a scaled one if the original is already of that size! + if ($avatar->width != $size && $avatar->height != $size) { + $scaled[] = $this->scale_avatar($user, $avatar, $size); + } } # XXX: start a transaction here @@ -132,7 +139,6 @@ class AvatarAction extends SettingsAction { common_server_error(_t('Error deleting old avatars.')); return; } - if (!$avatar->insert()) { @unlink($filepath); common_server_error(_t('Error inserting avatar.')); @@ -150,26 +156,26 @@ class AvatarAction extends SettingsAction { $this->show_form(_t('Avatar updated.'), true); } - + function scale_avatar($user, $avatar, $size) { $image_s = imagecreatetruecolor($size, $size); $image_a = $this->avatar_to_image($avatar); - + $square = min($avatar->width, $avatar->height); - + imagecopyresampled($image_s, $image_a, 0, 0, 0, 0, $size, $size, $square, $square); - $ext = ($avatar->mediattype == 'image/jpeg') ? ".jpg" : ".png"; - - $filename = common_avatar_filename($user, $ext, $size); - + $ext = ($avatar->mediattype == 'image/jpeg') ? ".jpeg" : ".png"; + + $filename = common_avatar_filename($user, $ext, $size, common_timestamp()); + if ($avatar->mediatype == 'image/jpeg') { imagejpeg($image_s, common_avatar_path($filename)); } else { imagepng($image_s, common_avatar_path($filename)); } - + $scaled = DB_DataObject::factory('avatar'); $scaled->profile_id = $avatar->profile_id; $scaled->width = $size; @@ -178,16 +184,17 @@ class AvatarAction extends SettingsAction { $scaled->mediatype = ($avatar->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png'; $scaled->filename = $filename; $scaled->url = common_avatar_url($filename); - + $scaled->created = DB_DataObject_Cast::dateTime(); # current time + return $scaled; } - + function avatar_to_image($avatar) { $filepath = common_avatar_path($avatar->filename); if ($avatar->mediatype == 'image/gif') { return imagecreatefromgif($filepath); } else if ($avatar->mediatype == 'image/jpeg') { - return imagecreatefromjpeg($filepath); + return imagecreatefromjpeg($filepath); } else if ($avatar->mediatype == 'image/png') { return imagecreatefrompng($filepath); } else { @@ -195,14 +202,16 @@ class AvatarAction extends SettingsAction { return NULL; } } - + function delete_old_avatars($user) { $avatar = DB_DataObject::factory('avatar'); $avatar->profile_id = $user->id; $avatar->find(); while ($avatar->fetch()) { + unlink(common_avatar_path($avatar->filename)); $avatar->delete(); } + return true; } }