summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author无闻 <joe2010xtmf@163.com>2014-07-24 13:25:00 -0400
committer无闻 <joe2010xtmf@163.com>2014-07-24 13:25:00 -0400
commit87855d42a04c2fcd906bf94f94bb07308984ea09 (patch)
tree8f9d0911db7d2920b6cf6d0de18ad61b1042b543
parentc20f5dc2ea1b27e80c28e00831278c7451ba6cce (diff)
parent620c0ef297ceca370f8e2946a72a2a1c40c16347 (diff)
downloadgitea-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.go42
-rw-r--r--routers/repo/issue.go10
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
}
}