diff options
author | 无闻 <joe2010xtmf@163.com> | 2014-07-24 13:25:00 -0400 |
---|---|---|
committer | 无闻 <joe2010xtmf@163.com> | 2014-07-24 13:25:00 -0400 |
commit | 87855d42a04c2fcd906bf94f94bb07308984ea09 (patch) | |
tree | 8f9d0911db7d2920b6cf6d0de18ad61b1042b543 | |
parent | c20f5dc2ea1b27e80c28e00831278c7451ba6cce (diff) | |
parent | 620c0ef297ceca370f8e2946a72a2a1c40c16347 (diff) | |
download | gitea-87855d42a04c2fcd906bf94f94bb07308984ea09.tar.gz gitea-87855d42a04c2fcd906bf94f94bb07308984ea09.zip |
Merge pull request #309 from nuss-justin/trello/244
[Trello#244] Mention all members of team by mention team name
-rw-r--r-- | models/user.go | 42 | ||||
-rw-r--r-- | routers/repo/issue.go | 10 |
2 files changed, 46 insertions, 6 deletions
diff --git a/models/user.go b/models/user.go index a46232427e..581fce23a4 100644 --- a/models/user.go +++ b/models/user.go @@ -562,3 +562,45 @@ func UnFollowUser(userId int64, unFollowId int64) (err error) { } return session.Commit() } + +func UpdateMentions(userNames []string, issueId int64) error { + users := make([]*User, 0, len(userNames)) + + if err := x.Where("name IN (?)", strings.Join(userNames, "\",\"")).OrderBy("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.Type == INDIVIDUAL { + 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 := UpdateIssueUserPairsByMentions(ids, issueId); err != nil { + return err + } + + return nil +} diff --git a/routers/repo/issue.go b/routers/repo/issue.go index c033e0f31c..f3d9280644 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -252,9 +252,8 @@ func CreateIssuePost(ctx *middleware.Context, params martini.Params, form auth.C ms[i] = ms[i][1:] } - ids := models.GetUserIdsByNames(ms) - if err := models.UpdateIssueUserPairsByMentions(ids, issue.Id); err != nil { - ctx.Handle(500, "issue.CreateIssue(UpdateIssueUserPairsByMentions)", err) + if err := models.UpdateMentions(ms, issue.Id); err != nil { + ctx.Handle(500, "issue.CreateIssue(UpdateMentions)", err) return } } @@ -771,9 +770,8 @@ func Comment(ctx *middleware.Context, params martini.Params) { ms[i] = ms[i][1:] } - ids := models.GetUserIdsByNames(ms) - if err := models.UpdateIssueUserPairsByMentions(ids, issue.Id); err != nil { - ctx.Handle(500, "issue.CreateIssue(UpdateIssueUserPairsByMentions)", err) + if err := models.UpdateMentions(ms, issue.Id); err != nil { + ctx.Handle(500, "issue.CreateIssue(UpdateMentions)", err) return } } |