(e *xorm.Session, doer *User, repo *Repository, isClosed bool)
| 428 | } |
| 429 | |
| 430 | func (issue *Issue) changeStatus(e *xorm.Session, doer *User, repo *Repository, isClosed bool) (err error) { |
| 431 | // Nothing should be performed if current status is same as target status |
| 432 | if issue.IsClosed == isClosed { |
| 433 | return nil |
| 434 | } |
| 435 | issue.IsClosed = isClosed |
| 436 | |
| 437 | if err = updateIssueCols(e, issue, "is_closed"); err != nil { |
| 438 | return err |
| 439 | } else if err = updateIssueUsersByStatus(e, issue.ID, isClosed); err != nil { |
| 440 | return err |
| 441 | } |
| 442 | |
| 443 | // Update issue count of labels |
| 444 | if err = issue.getLabels(e); err != nil { |
| 445 | return err |
| 446 | } |
| 447 | for idx := range issue.Labels { |
| 448 | if issue.IsClosed { |
| 449 | issue.Labels[idx].NumClosedIssues++ |
| 450 | } else { |
| 451 | issue.Labels[idx].NumClosedIssues-- |
| 452 | } |
| 453 | if err = updateLabel(e, issue.Labels[idx]); err != nil { |
| 454 | return err |
| 455 | } |
| 456 | } |
| 457 | |
| 458 | // Update issue count of milestone |
| 459 | if err = changeMilestoneIssueStats(e, issue); err != nil { |
| 460 | return err |
| 461 | } |
| 462 | |
| 463 | // New action comment |
| 464 | if _, err = createStatusComment(e, doer, repo, issue); err != nil { |
| 465 | return err |
| 466 | } |
| 467 | |
| 468 | return nil |
| 469 | } |
| 470 | |
| 471 | // ChangeStatus changes issue status to open or closed. |
| 472 | func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (err error) { |
no test coverage detected