}
issue.IsClosed = true
+ if err = issue.GetLabels(); err != nil {
+ return err
+ }
+ for _, label := range issue.Labels {
+ label.NumClosedIssues++
+
+ if err = UpdateLabel(label); err != nil {
+ return err
+ }
+ }
+
if err = UpdateIssue(issue); err != nil {
return err
} else if err = UpdateIssueUserPairsByStatus(issue.Id, issue.IsClosed); err != nil {
}
issue.IsClosed = false
+ if err = issue.GetLabels(); err != nil {
+ return err
+ }
+ for _, label := range issue.Labels {
+ label.NumClosedIssues--
+
+ if err = UpdateLabel(label); err != nil {
+ return err
+ }
+ }
+
if err = UpdateIssue(issue); err != nil {
return err
} else if err = UpdateIssueUserPairsByStatus(issue.Id, issue.IsClosed); err != nil {
label.NumClosedIssues--
}
}
+
if err = models.UpdateLabel(label); err != nil {
ctx.Handle(500, "issue.UpdateIssueLabel(UpdateLabel)", err)
return
return
}
+ if err = issue.GetLabels(); err != nil {
+ send(500, nil, err)
+ return
+ }
+
+ for _, label := range issue.Labels {
+ if issue.IsClosed {
+ label.NumClosedIssues++
+ } else {
+ label.NumClosedIssues--
+ }
+
+ if err = models.UpdateLabel(label); err != nil {
+ send(500, nil, err)
+ return
+ }
+ }
+
// Change open/closed issue counter for the associated milestone
if issue.MilestoneId > 0 {
if err = models.ChangeMilestoneIssueStats(issue); err != nil {