diff options
author | Unknwon <u@gogs.io> | 2015-12-21 04:24:11 -0800 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-12-21 04:24:11 -0800 |
commit | a49af93fafe824cdd375318d15de420b3ed61e79 (patch) | |
tree | 1508c0bbd9f9caf2c3af8163e4e9abe326093558 /models/issue.go | |
parent | c62a6b7a1238524225ec9c214dc5eac7da017663 (diff) | |
download | gitea-a49af93fafe824cdd375318d15de420b3ed61e79.tar.gz gitea-a49af93fafe824cdd375318d15de420b3ed61e79.zip |
#1692 APIs: Users Followers
- User profile un/follow
- List user's followers/following
Diffstat (limited to 'models/issue.go')
-rw-r--r-- | models/issue.go | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/models/issue.go b/models/issue.go index 2b2e8bd618..22ea72512c 100644 --- a/models/issue.go +++ b/models/issue.go @@ -665,6 +665,47 @@ func GetIssueUserPairsByMode(uid, rid int64, isClosed bool, page, filterMode int return ius, err } +func UpdateMentions(userNames []string, issueId int64) error { + for i := range userNames { + userNames[i] = strings.ToLower(userNames[i]) + } + users := make([]*User, 0, len(userNames)) + + if err := x.Where("lower_name IN (?)", strings.Join(userNames, "\",\"")).OrderBy("lower_name ASC").Find(&users); err != nil { + return err + } + + ids := make([]int64, 0, len(userNames)) + for _, user := range users { + ids = append(ids, user.Id) + if !user.IsOrganization() { + continue + } + + if user.NumMembers == 0 { + continue + } + + tempIds := make([]int64, 0, user.NumMembers) + orgUsers, err := GetOrgUsersByOrgId(user.Id) + if err != nil { + return err + } + + for _, orgUser := range orgUsers { + tempIds = append(tempIds, orgUser.ID) + } + + ids = append(ids, tempIds...) + } + + if err := UpdateIssueUsersByMentions(ids, issueId); err != nil { + return err + } + + return nil +} + // IssueStats represents issue statistic information. type IssueStats struct { OpenCount, ClosedCount int64 |