MCPcopy Create free account
hub / github.com/gogs/gogs / ChangeStatus

Method ChangeStatus

internal/database/issue.go:472–521  ·  view source on GitHub ↗

ChangeStatus changes issue status to open or closed.

(doer *User, repo *Repository, isClosed bool)

Source from the content-addressed store, hash-verified

470
471// ChangeStatus changes issue status to open or closed.
472func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (err error) {
473 sess := x.NewSession()
474 defer sess.Close()
475 if err = sess.Begin(); err != nil {
476 return err
477 }
478
479 if err = issue.changeStatus(sess, doer, repo, isClosed); err != nil {
480 return err
481 }
482
483 if err = sess.Commit(); err != nil {
484 return errors.Newf("commit: %v", err)
485 }
486
487 if issue.IsPull {
488 // Merge pull request calls issue.changeStatus so we need to handle separately.
489 issue.PullRequest.Issue = issue
490 apiPullRequest := &api.PullRequestPayload{
491 Index: issue.Index,
492 PullRequest: issue.PullRequest.APIFormat(),
493 Repository: repo.APIFormatLegacy(nil),
494 Sender: doer.APIFormat(),
495 }
496 if isClosed {
497 apiPullRequest.Action = api.HOOK_ISSUE_CLOSED
498 } else {
499 apiPullRequest.Action = api.HOOK_ISSUE_REOPENED
500 }
501 err = PrepareWebhooks(repo, HookEventTypePullRequest, apiPullRequest)
502 } else {
503 apiIssues := &api.IssuesPayload{
504 Index: issue.Index,
505 Issue: issue.APIFormat(),
506 Repository: repo.APIFormatLegacy(nil),
507 Sender: doer.APIFormat(),
508 }
509 if isClosed {
510 apiIssues.Action = api.HOOK_ISSUE_CLOSED
511 } else {
512 apiIssues.Action = api.HOOK_ISSUE_REOPENED
513 }
514 err = PrepareWebhooks(repo, HookEventTypeIssues, apiIssues)
515 }
516 if err != nil {
517 log.Error("PrepareWebhooks [is_pull: %v, is_closed: %v]: %v", issue.IsPull, isClosed, err)
518 }
519
520 return nil
521}
522
523func (issue *Issue) ChangeTitle(doer *User, title string) (err error) {
524 oldTitle := issue.Title

Callers 5

CreateIssueFunction · 0.95
NewCommentFunction · 0.45
EditMilestoneFunction · 0.45
EditIssueFunction · 0.45

Implementers 1

mailerIssueinternal/database/issue_mail.go

Calls 5

changeStatusMethod · 0.95
APIFormatMethod · 0.95
PrepareWebhooksFunction · 0.85
APIFormatLegacyMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected