| @@ -562,3 +562,45 @@ func UnFollowUser(userId int64, unFollowId int64) (err error) { | |||||
| } | } | ||||
| return session.Commit() | 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 | |||||
| } | |||||
| @@ -234,9 +234,8 @@ func CreateIssuePost(ctx *middleware.Context, params martini.Params, form auth.C | |||||
| ms[i] = ms[i][1:] | 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 | return | ||||
| } | } | ||||
| } | } | ||||
| @@ -682,9 +681,8 @@ func Comment(ctx *middleware.Context, params martini.Params) { | |||||
| ms[i] = ms[i][1:] | 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 | return | ||||
| } | } | ||||
| } | } | ||||