in reviewer-basic/basic.go [75:145]
func (r *Reviewer) Review(content *plugin.ReviewContent) (result *plugin.ReviewResult) {
result = &plugin.ReviewResult{Approved: true, ReviewStatus: plugin.ReviewStatusApproved}
// If the author is admin, no need to review
if content.Author.Role > 1 {
return result
}
if r.Config.PostReviewOption == OptionAll || (r.Config.PostReviewOption == "" && r.Config.PostAllNeedReview) {
result = &plugin.ReviewResult{
Approved: false,
ReviewStatus: plugin.ReviewStatusNeedReview,
Reason: plugin.TranslateWithData(myI18n.Language(content.Language), i18n.CommentNeedReview, nil),
}
return result
}
if (r.Config.PostReviewOption == OptionFirst || (r.Config.PostReviewOption == "" && r.Config.PostNeedReview)) && content.Author.ApprovedQuestionAmount+content.Author.ApprovedAnswerAmount == 0 {
result = &plugin.ReviewResult{
Approved: false,
ReviewStatus: plugin.ReviewStatusNeedReview,
Reason: plugin.TranslateWithData(myI18n.Language(content.Language), i18n.CommentNeedReview, nil),
}
return result
}
keywords := strings.Split(r.Config.PostReviewKeywords, "\n")
disallowedKeywords := strings.Split(r.Config.PostDisallowedKeywords, "\n")
// Check if the post contains the keywords that need review
for _, keyword := range keywords {
keyword = strings.TrimSpace(keyword)
if len(keyword) == 0 {
continue
}
keyword = strings.ToLower(keyword)
if strings.Contains(strings.ToLower(content.Title), keyword) ||
strings.Contains(strings.ToLower(content.Content), keyword) ||
strings.Contains(content.IP, keyword) ||
strings.Contains(content.UserAgent, keyword) ||
r.checkTags(content.Tags, keyword) {
return &plugin.ReviewResult{
Approved: false,
ReviewStatus: plugin.ReviewStatusNeedReview,
Reason: fmt.Sprintf(plugin.TranslateWithData(myI18n.Language(content.Language), i18n.CommentMatchWordReview, nil), keyword),
}
}
}
// If the post contains the disallowed keywords
for _, disallowedKeyword := range disallowedKeywords {
disallowedKeyword = strings.TrimSpace(disallowedKeyword)
if len(disallowedKeyword) == 0 {
continue
}
disallowedKeyword = strings.ToLower(disallowedKeyword)
if strings.Contains(strings.ToLower(content.Title), disallowedKeyword) ||
strings.Contains(strings.ToLower(content.Content), disallowedKeyword) ||
strings.Contains(content.IP, disallowedKeyword) ||
strings.Contains(content.UserAgent, disallowedKeyword) ||
r.checkTags(content.Tags, disallowedKeyword) {
return &plugin.ReviewResult{
Approved: false,
ReviewStatus: plugin.ReviewStatusDeleteDirectly,
Reason: fmt.Sprintf(plugin.TranslateWithData(myI18n.Language(content.Language), i18n.CommentMatchWordReview, nil), disallowedKeyword),
}
}
}
return result
}