summaryrefslogtreecommitdiffstats
path: root/models/user_avatar.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/user_avatar.go')
-rw-r--r--models/user_avatar.go62
1 files changed, 4 insertions, 58 deletions
diff --git a/models/user_avatar.go b/models/user_avatar.go
index 50998514e0..ae4cd1e5ec 100644
--- a/models/user_avatar.go
+++ b/models/user_avatar.go
@@ -25,11 +25,11 @@ func (u *User) CustomAvatarRelativePath() string {
}
// GenerateRandomAvatar generates a random avatar for user.
-func (u *User) GenerateRandomAvatar() error {
- return u.generateRandomAvatar(db.GetEngine(db.DefaultContext))
+func GenerateRandomAvatar(u *User) error {
+ return generateRandomAvatar(db.GetEngine(db.DefaultContext), u)
}
-func (u *User) generateRandomAvatar(e db.Engine) error {
+func generateRandomAvatar(e db.Engine, u *User) error {
seed := u.Email
if len(seed) == 0 {
seed = u.Name
@@ -80,7 +80,7 @@ func (u *User) AvatarLinkWithSize(size int) string {
if useLocalAvatar {
if u.Avatar == "" && autoGenerateAvatar {
- if err := u.GenerateRandomAvatar(); err != nil {
+ if err := GenerateRandomAvatar(u); err != nil {
log.Error("GenerateRandomAvatar: %v", err)
}
}
@@ -101,42 +101,6 @@ func (u *User) AvatarLink() string {
return link
}
-// UploadAvatar saves custom avatar for user.
-// FIXME: split uploads to different subdirs in case we have massive users.
-func (u *User) UploadAvatar(data []byte) error {
- m, err := avatar.Prepare(data)
- if err != nil {
- return err
- }
-
- ctx, committer, err := db.TxContext()
- if err != nil {
- return err
- }
- defer committer.Close()
-
- u.UseCustomAvatar = true
- // Different users can upload same image as avatar
- // If we prefix it with u.ID, it will be separated
- // Otherwise, if any of the users delete his avatar
- // Other users will lose their avatars too.
- u.Avatar = fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d-%x", u.ID, md5.Sum(data)))))
- if err = updateUserCols(db.GetEngine(ctx), u, "use_custom_avatar", "avatar"); err != nil {
- return fmt.Errorf("updateUser: %v", err)
- }
-
- if err := storage.SaveFrom(storage.Avatars, u.CustomAvatarRelativePath(), func(w io.Writer) error {
- if err := png.Encode(w, *m); err != nil {
- log.Error("Encode: %v", err)
- }
- return err
- }); err != nil {
- return fmt.Errorf("Failed to create dir %s: %v", u.CustomAvatarRelativePath(), err)
- }
-
- return committer.Commit()
-}
-
// IsUploadAvatarChanged returns true if the current user's avatar would be changed with the provided data
func (u *User) IsUploadAvatarChanged(data []byte) bool {
if !u.UseCustomAvatar || len(u.Avatar) == 0 {
@@ -145,21 +109,3 @@ func (u *User) IsUploadAvatarChanged(data []byte) bool {
avatarID := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d-%x", u.ID, md5.Sum(data)))))
return u.Avatar != avatarID
}
-
-// DeleteAvatar deletes the user's custom avatar.
-func (u *User) DeleteAvatar() error {
- aPath := u.CustomAvatarRelativePath()
- log.Trace("DeleteAvatar[%d]: %s", u.ID, aPath)
- if len(u.Avatar) > 0 {
- if err := storage.Avatars.Delete(aPath); err != nil {
- return fmt.Errorf("Failed to remove %s: %v", aPath, err)
- }
- }
-
- u.UseCustomAvatar = false
- u.Avatar = ""
- if _, err := db.GetEngine(db.DefaultContext).ID(u.ID).Cols("avatar, use_custom_avatar").Update(u); err != nil {
- return fmt.Errorf("UpdateUser: %v", err)
- }
- return nil
-}