X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Favatar.php;h=1029abd1e6286a4fba5f2da02c7a8404661cacde;hb=4a4ab2bdbfc9dad60cc94dc903462195c3a0e669;hp=9c736cd3b6fd65001372f013f45e7ab9479818c9;hpb=84dfd8b52d4c3ce0e0435bf8cbc2a8504e01caa2;p=quix0rs-gnu-social.git diff --git a/actions/avatar.php b/actions/avatar.php index 9c736cd3b6..1029abd1e6 100644 --- a/actions/avatar.php +++ b/actions/avatar.php @@ -23,14 +23,22 @@ require_once(INSTALLDIR.'/lib/settingsaction.php'); class AvatarAction extends SettingsAction { + function get_instructions() { + return _('Upload a new "avatar" (user image) here. ' . + 'You can\'t edit the picture after you upload it, so ' . + 'make sure it\'s more or less square. ' . + 'It must be under the site license, also. ' . + 'Use a picture that belongs to you and that you ' . + 'want to share.'); + } + function show_form($msg=NULL, $success=false) { - common_show_header(_t('Avatar')); - $this->settings_menu(); - $this->message($msg, $success); + + $this->form_header(_('Avatar'), $msg, $success); $user = common_current_user(); $profile = $user->getProfile(); - $original = $profile->getOriginal(); + $original = $profile->getOriginalAvatar(); if ($original) { common_element('img', array('src' => $original->url, @@ -62,7 +70,7 @@ class AvatarAction extends SettingsAction { common_element('input', array('name' => 'avatarfile', 'type' => 'file', 'id' => 'avatarfile')); - common_submit('submit', _t('Upload')); + common_submit('submit', _('Upload')); common_element_end('form'); common_show_footer(); } @@ -74,14 +82,14 @@ class AvatarAction extends SettingsAction { break; case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: - $this->show_form(_t('That file is too big.')); + $this->show_form(_('That file is too big.')); return; case UPLOAD_ERR_PARTIAL: @unlink($_FILES['avatarfile']['tmp_name']); - $this->show_form(_t('Partial upload.')); + $this->show_form(_('Partial upload.')); return; default: - $this->show_form(_t('System error uploading file.')); + $this->show_form(_('System error uploading file.')); return; } @@ -89,7 +97,7 @@ class AvatarAction extends SettingsAction { if (!$info) { @unlink($_FILES['avatarfile']['tmp_name']); - $this->show_form(_t('Not an image or corrupt file.')); + $this->show_form(_('Not an image or corrupt file.')); return; } @@ -99,119 +107,20 @@ class AvatarAction extends SettingsAction { case IMAGETYPE_PNG: break; default: - $this->show_form(_t('Unsupported image file format.')); + $this->show_form(_('Unsupported image file format.')); return; } $user = common_current_user(); + $profile = $user->getProfile(); - $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)) { - @unlink($_FILES['avatarfile']['tmp_name']); - $this->show_form(_t('System error uploading file.')); - return; - } - - $avatar = DB_DataObject::factory('avatar'); - - $avatar->profile_id = $user->id; - $avatar->width = $info[0]; - $avatar->height = $info[1]; - $avatar->mediatype = image_type_to_mime_type($info[2]); - $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) { - # 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 - - if (!$this->delete_old_avatars($user)) { - @unlink($filepath); - common_server_error(_t('Error deleting old avatars.')); - return; - } - if (!$avatar->insert()) { - @unlink($filepath); - common_server_error(_t('Error inserting avatar.')); - return; - } - - foreach ($scaled as $s) { - if (!$s->insert()) { - common_server_error(_t('Error inserting scaled avatar.')); - return; - } - } - - # XXX: end transaction here - - $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') ? ".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; - $scaled->height = $size; - $scaled->original = false; - $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); - } else if ($avatar->mediatype == 'image/png') { - return imagecreatefrompng($filepath); + if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) { + $this->show_form(_('Avatar updated.'), true); } else { - common_server_error(_t('Unsupported image type:') . $avatar->mediatype); - return NULL; + $this->show_form(_('Failed updating avatar.')); } - } - 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; + @unlink($_FILES['avatarfile']['tmp_name']); } }