mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	@@ -118,17 +118,25 @@ func mailIssueCommentToParticipants(e Engine, issue *Issue, doer *User, content
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// MailParticipants sends new issue thread created emails to repository watchers
 | 
					// MailParticipants sends new issue thread created emails to repository watchers
 | 
				
			||||||
// and mentioned people.
 | 
					// and mentioned people.
 | 
				
			||||||
func (issue *Issue) MailParticipants() (err error) {
 | 
					func (issue *Issue) MailParticipants(opType ActionType) (err error) {
 | 
				
			||||||
	return issue.mailParticipants(x)
 | 
						return issue.mailParticipants(x, opType)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (issue *Issue) mailParticipants(e Engine) (err error) {
 | 
					func (issue *Issue) mailParticipants(e Engine, opType ActionType) (err error) {
 | 
				
			||||||
	mentions := markup.FindAllMentions(issue.Content)
 | 
						mentions := markup.FindAllMentions(issue.Content)
 | 
				
			||||||
	if err = UpdateIssueMentions(e, issue.ID, mentions); err != nil {
 | 
						if err = UpdateIssueMentions(e, issue.ID, mentions); err != nil {
 | 
				
			||||||
		return fmt.Errorf("UpdateIssueMentions [%d]: %v", issue.ID, err)
 | 
							return fmt.Errorf("UpdateIssueMentions [%d]: %v", issue.ID, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = mailIssueCommentToParticipants(e, issue, issue.Poster, issue.Content, nil, mentions); err != nil {
 | 
						var content = issue.Content
 | 
				
			||||||
 | 
						switch opType {
 | 
				
			||||||
 | 
						case ActionCloseIssue, ActionClosePullRequest:
 | 
				
			||||||
 | 
							content = fmt.Sprintf("Closed #%d", issue.Index)
 | 
				
			||||||
 | 
						case ActionReopenIssue, ActionReopenPullRequest:
 | 
				
			||||||
 | 
							content = fmt.Sprintf("Reopened #%d", issue.Index)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err = mailIssueCommentToParticipants(e, issue, issue.Poster, content, nil, mentions); err != nil {
 | 
				
			||||||
		log.Error(4, "mailIssueCommentToParticipants: %v", err)
 | 
							log.Error(4, "mailIssueCommentToParticipants: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,19 +42,34 @@ func (m *mailNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *mailNotifier) NotifyNewIssue(issue *models.Issue) {
 | 
					func (m *mailNotifier) NotifyNewIssue(issue *models.Issue) {
 | 
				
			||||||
	if err := issue.MailParticipants(); err != nil {
 | 
						if err := issue.MailParticipants(models.ActionCreateIssue); err != nil {
 | 
				
			||||||
		log.Error(4, "MailParticipants: %v", err)
 | 
							log.Error(4, "MailParticipants: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *mailNotifier) NotifyIssueChangeStatus(doer *models.User, issue *models.Issue, isClosed bool) {
 | 
					func (m *mailNotifier) NotifyIssueChangeStatus(doer *models.User, issue *models.Issue, isClosed bool) {
 | 
				
			||||||
	if err := issue.MailParticipants(); err != nil {
 | 
						var actionType models.ActionType
 | 
				
			||||||
 | 
						if issue.IsPull {
 | 
				
			||||||
 | 
							if isClosed {
 | 
				
			||||||
 | 
								actionType = models.ActionClosePullRequest
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								actionType = models.ActionReopenPullRequest
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							if isClosed {
 | 
				
			||||||
 | 
								actionType = models.ActionCloseIssue
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								actionType = models.ActionReopenIssue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := issue.MailParticipants(actionType); err != nil {
 | 
				
			||||||
		log.Error(4, "MailParticipants: %v", err)
 | 
							log.Error(4, "MailParticipants: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *mailNotifier) NotifyNewPullRequest(pr *models.PullRequest) {
 | 
					func (m *mailNotifier) NotifyNewPullRequest(pr *models.PullRequest) {
 | 
				
			||||||
	if err := pr.Issue.MailParticipants(); err != nil {
 | 
						if err := pr.Issue.MailParticipants(models.ActionCreatePullRequest); err != nil {
 | 
				
			||||||
		log.Error(4, "MailParticipants: %v", err)
 | 
							log.Error(4, "MailParticipants: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user