| @@ -62,19 +62,20 @@ type Issue struct { | |||||
| Comments []*Comment `xorm:"-"` | Comments []*Comment `xorm:"-"` | ||||
| } | } | ||||
| // BeforeInsert ... | |||||
| // BeforeInsert is invoked from XORM before inserting an object of this type. | |||||
| func (issue *Issue) BeforeInsert() { | func (issue *Issue) BeforeInsert() { | ||||
| issue.CreatedUnix = time.Now().Unix() | issue.CreatedUnix = time.Now().Unix() | ||||
| issue.UpdatedUnix = issue.CreatedUnix | issue.UpdatedUnix = issue.CreatedUnix | ||||
| } | } | ||||
| // BeforeUpdate ... | |||||
| // BeforeUpdate is invoked from XORM before updating this object. | |||||
| func (issue *Issue) BeforeUpdate() { | func (issue *Issue) BeforeUpdate() { | ||||
| issue.UpdatedUnix = time.Now().Unix() | issue.UpdatedUnix = time.Now().Unix() | ||||
| issue.DeadlineUnix = issue.Deadline.Unix() | issue.DeadlineUnix = issue.Deadline.Unix() | ||||
| } | } | ||||
| // AfterSet ... | |||||
| // AfterSet is invoked from XORM after setting the value of a field of | |||||
| // this object. | |||||
| func (issue *Issue) AfterSet(colName string, _ xorm.Cell) { | func (issue *Issue) AfterSet(colName string, _ xorm.Cell) { | ||||
| switch colName { | switch colName { | ||||
| case "deadline_unix": | case "deadline_unix": | ||||
| @@ -86,7 +87,6 @@ func (issue *Issue) AfterSet(colName string, _ xorm.Cell) { | |||||
| } | } | ||||
| } | } | ||||
| // loadAttributes ... | |||||
| func (issue *Issue) loadAttributes(e Engine) (err error) { | func (issue *Issue) loadAttributes(e Engine) (err error) { | ||||
| if issue.Repo == nil { | if issue.Repo == nil { | ||||
| issue.Repo, err = getRepositoryByID(e, issue.RepoID) | issue.Repo, err = getRepositoryByID(e, issue.RepoID) | ||||
| @@ -154,12 +154,12 @@ func (issue *Issue) loadAttributes(e Engine) (err error) { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // LoadAttributes ... | |||||
| // LoadAttributes loads the attribute of this issue. | |||||
| func (issue *Issue) LoadAttributes() error { | func (issue *Issue) LoadAttributes() error { | ||||
| return issue.loadAttributes(x) | return issue.loadAttributes(x) | ||||
| } | } | ||||
| // HTMLURL ... | |||||
| // HTMLURL returns the absolute URL to this issue. | |||||
| func (issue *Issue) HTMLURL() string { | func (issue *Issue) HTMLURL() string { | ||||
| var path string | var path string | ||||
| if issue.IsPull { | if issue.IsPull { | ||||
| @@ -237,7 +237,6 @@ func (issue *Issue) HasLabel(labelID int64) bool { | |||||
| return issue.hasLabel(x, labelID) | return issue.hasLabel(x, labelID) | ||||
| } | } | ||||
| // sendLabelUpdatedWebhook ... | |||||
| func (issue *Issue) sendLabelUpdatedWebhook(doer *User) { | func (issue *Issue) sendLabelUpdatedWebhook(doer *User) { | ||||
| var err error | var err error | ||||
| if issue.IsPull { | if issue.IsPull { | ||||
| @@ -261,7 +260,6 @@ func (issue *Issue) sendLabelUpdatedWebhook(doer *User) { | |||||
| } | } | ||||
| } | } | ||||
| // addLabel ... | |||||
| func (issue *Issue) addLabel(e *xorm.Session, label *Label) error { | func (issue *Issue) addLabel(e *xorm.Session, label *Label) error { | ||||
| return newIssueLabel(e, issue, label) | return newIssueLabel(e, issue, label) | ||||
| } | } | ||||
| @@ -276,7 +274,6 @@ func (issue *Issue) AddLabel(doer *User, label *Label) error { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // addLabels ... | |||||
| func (issue *Issue) addLabels(e *xorm.Session, labels []*Label) error { | func (issue *Issue) addLabels(e *xorm.Session, labels []*Label) error { | ||||
| return newIssueLabels(e, issue, labels) | return newIssueLabels(e, issue, labels) | ||||
| } | } | ||||
| @@ -291,7 +288,6 @@ func (issue *Issue) AddLabels(doer *User, labels []*Label) error { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // getLabels ... | |||||
| func (issue *Issue) getLabels(e Engine) (err error) { | func (issue *Issue) getLabels(e Engine) (err error) { | ||||
| if len(issue.Labels) > 0 { | if len(issue.Labels) > 0 { | ||||
| return nil | return nil | ||||
| @@ -304,7 +300,6 @@ func (issue *Issue) getLabels(e Engine) (err error) { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // removeLabel ... | |||||
| func (issue *Issue) removeLabel(e *xorm.Session, label *Label) error { | func (issue *Issue) removeLabel(e *xorm.Session, label *Label) error { | ||||
| return deleteIssueLabel(e, issue, label) | return deleteIssueLabel(e, issue, label) | ||||
| } | } | ||||
| @@ -319,7 +314,6 @@ func (issue *Issue) RemoveLabel(doer *User, label *Label) error { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // clearLabels ... | |||||
| func (issue *Issue) clearLabels(e *xorm.Session) (err error) { | func (issue *Issue) clearLabels(e *xorm.Session) (err error) { | ||||
| if err = issue.getLabels(e); err != nil { | if err = issue.getLabels(e); err != nil { | ||||
| return fmt.Errorf("getLabels: %v", err) | return fmt.Errorf("getLabels: %v", err) | ||||
| @@ -334,7 +328,8 @@ func (issue *Issue) clearLabels(e *xorm.Session) (err error) { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // ClearLabels ... | |||||
| // ClearLabels removes all issue labels as the given user. | |||||
| // Triggers appropriate WebHooks, if any. | |||||
| func (issue *Issue) ClearLabels(doer *User) (err error) { | func (issue *Issue) ClearLabels(doer *User) (err error) { | ||||
| sess := x.NewSession() | sess := x.NewSession() | ||||
| defer sessionRelease(sess) | defer sessionRelease(sess) | ||||
| @@ -374,6 +369,7 @@ func (issue *Issue) ClearLabels(doer *User) (err error) { | |||||
| } | } | ||||
| // ReplaceLabels removes all current labels and add new labels to the issue. | // ReplaceLabels removes all current labels and add new labels to the issue. | ||||
| // Triggers appropriate WebHooks, if any. | |||||
| func (issue *Issue) ReplaceLabels(labels []*Label) (err error) { | func (issue *Issue) ReplaceLabels(labels []*Label) (err error) { | ||||
| sess := x.NewSession() | sess := x.NewSession() | ||||
| defer sessionRelease(sess) | defer sessionRelease(sess) | ||||
| @@ -390,7 +386,7 @@ func (issue *Issue) ReplaceLabels(labels []*Label) (err error) { | |||||
| return sess.Commit() | return sess.Commit() | ||||
| } | } | ||||
| // GetAssignee ... | |||||
| // GetAssignee sets the Assignee attribute of this issue. | |||||
| func (issue *Issue) GetAssignee() (err error) { | func (issue *Issue) GetAssignee() (err error) { | ||||
| if issue.AssigneeID == 0 || issue.Assignee != nil { | if issue.AssigneeID == 0 || issue.Assignee != nil { | ||||
| return nil | return nil | ||||
| @@ -418,7 +414,6 @@ func UpdateIssueCols(issue *Issue, cols ...string) error { | |||||
| return updateIssueCols(x, issue, cols...) | return updateIssueCols(x, issue, cols...) | ||||
| } | } | ||||
| // changeStatus ... | |||||
| func (issue *Issue) changeStatus(e *xorm.Session, doer *User, repo *Repository, isClosed bool) (err error) { | func (issue *Issue) changeStatus(e *xorm.Session, doer *User, repo *Repository, isClosed bool) (err error) { | ||||
| // Nothing should be performed if current status is same as target status | // Nothing should be performed if current status is same as target status | ||||
| if issue.IsClosed == isClosed { | if issue.IsClosed == isClosed { | ||||
| @@ -501,7 +496,7 @@ func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (e | |||||
| return nil | return nil | ||||
| } | } | ||||
| // ChangeTitle ... | |||||
| // ChangeTitle changes the title of this issue, as the given user. | |||||
| func (issue *Issue) ChangeTitle(doer *User, title string) (err error) { | func (issue *Issue) ChangeTitle(doer *User, title string) (err error) { | ||||
| oldTitle := issue.Title | oldTitle := issue.Title | ||||
| issue.Title = title | issue.Title = title | ||||
| @@ -533,7 +528,7 @@ func (issue *Issue) ChangeTitle(doer *User, title string) (err error) { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // ChangeContent ... | |||||
| // ChangeContent changes issue content, as the given user. | |||||
| func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | ||||
| oldContent := issue.Content | oldContent := issue.Content | ||||
| issue.Content = content | issue.Content = content | ||||
| @@ -565,7 +560,7 @@ func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // ChangeAssignee ... | |||||
| // ChangeAssignee changes the Asssignee field of this issue. | |||||
| func (issue *Issue) ChangeAssignee(doer *User, assigneeID int64) (err error) { | func (issue *Issue) ChangeAssignee(doer *User, assigneeID int64) (err error) { | ||||
| issue.AssigneeID = assigneeID | issue.AssigneeID = assigneeID | ||||
| if err = UpdateIssueUserByAssignee(issue); err != nil { | if err = UpdateIssueUserByAssignee(issue); err != nil { | ||||
| @@ -604,7 +599,7 @@ func (issue *Issue) ChangeAssignee(doer *User, assigneeID int64) (err error) { | |||||
| return nil | return nil | ||||
| } | } | ||||
| // NewIssueOptions ... | |||||
| // NewIssueOptions represents the options of a new issue. | |||||
| type NewIssueOptions struct { | type NewIssueOptions struct { | ||||
| Repo *Repository | Repo *Repository | ||||
| Issue *Issue | Issue *Issue | ||||
| @@ -815,7 +810,7 @@ func GetIssueByID(id int64) (*Issue, error) { | |||||
| return getIssueByID(x, id) | return getIssueByID(x, id) | ||||
| } | } | ||||
| // IssuesOptions ... | |||||
| // IssuesOptions represents options of an issue. | |||||
| type IssuesOptions struct { | type IssuesOptions struct { | ||||
| UserID int64 | UserID int64 | ||||
| AssigneeID int64 | AssigneeID int64 | ||||
| @@ -1112,7 +1107,7 @@ func parseCountResult(results []map[string][]byte) int64 { | |||||
| return 0 | return 0 | ||||
| } | } | ||||
| // IssueStatsOptions ... | |||||
| // IssueStatsOptions contains parameters accepted by GetIssueStats. | |||||
| type IssueStatsOptions struct { | type IssueStatsOptions struct { | ||||
| RepoID int64 | RepoID int64 | ||||
| UserID int64 | UserID int64 | ||||
| @@ -1371,12 +1366,12 @@ type Milestone struct { | |||||
| ClosedDateUnix int64 | ClosedDateUnix int64 | ||||
| } | } | ||||
| // BeforeInsert ... | |||||
| // BeforeInsert is invoked from XORM before inserting an object of this type. | |||||
| func (m *Milestone) BeforeInsert() { | func (m *Milestone) BeforeInsert() { | ||||
| m.DeadlineUnix = m.Deadline.Unix() | m.DeadlineUnix = m.Deadline.Unix() | ||||
| } | } | ||||
| // BeforeUpdate ... | |||||
| // BeforeUpdate is invoked from XORM before updating this object. | |||||
| func (m *Milestone) BeforeUpdate() { | func (m *Milestone) BeforeUpdate() { | ||||
| if m.NumIssues > 0 { | if m.NumIssues > 0 { | ||||
| m.Completeness = m.NumClosedIssues * 100 / m.NumIssues | m.Completeness = m.NumClosedIssues * 100 / m.NumIssues | ||||
| @@ -1388,7 +1383,8 @@ func (m *Milestone) BeforeUpdate() { | |||||
| m.ClosedDateUnix = m.ClosedDate.Unix() | m.ClosedDateUnix = m.ClosedDate.Unix() | ||||
| } | } | ||||
| // AfterSet ... | |||||
| // AfterSet is invoked from XORM after setting the value of a field of | |||||
| // this object. | |||||
| func (m *Milestone) AfterSet(colName string, _ xorm.Cell) { | func (m *Milestone) AfterSet(colName string, _ xorm.Cell) { | ||||
| switch colName { | switch colName { | ||||
| case "num_closed_issues": | case "num_closed_issues": | ||||
| @@ -1418,7 +1414,7 @@ func (m *Milestone) State() api.StateType { | |||||
| return api.STATE_OPEN | return api.STATE_OPEN | ||||
| } | } | ||||
| // APIFormat ... | |||||
| // APIFormat returns this Milestone in API format. | |||||
| func (m *Milestone) APIFormat() *api.Milestone { | func (m *Milestone) APIFormat() *api.Milestone { | ||||
| apiMilestone := &api.Milestone{ | apiMilestone := &api.Milestone{ | ||||
| ID: m.ID, | ID: m.ID, | ||||
| @@ -1701,12 +1697,13 @@ type Attachment struct { | |||||
| CreatedUnix int64 | CreatedUnix int64 | ||||
| } | } | ||||
| // BeforeInsert ... | |||||
| // BeforeInsert is invoked from XORM before inserting an object of this type. | |||||
| func (a *Attachment) BeforeInsert() { | func (a *Attachment) BeforeInsert() { | ||||
| a.CreatedUnix = time.Now().Unix() | a.CreatedUnix = time.Now().Unix() | ||||
| } | } | ||||
| // AfterSet ... | |||||
| // AfterSet is invoked from XORM after setting the value of a field of | |||||
| // this object. | |||||
| func (a *Attachment) AfterSet(colName string, _ xorm.Cell) { | func (a *Attachment) AfterSet(colName string, _ xorm.Cell) { | ||||
| switch colName { | switch colName { | ||||
| case "created_unix": | case "created_unix": | ||||
| @@ -1714,7 +1711,8 @@ func (a *Attachment) AfterSet(colName string, _ xorm.Cell) { | |||||
| } | } | ||||
| } | } | ||||
| // AttachmentLocalPath returns where attachment is stored in local file system based on given UUID. | |||||
| // AttachmentLocalPath returns where attachment is stored in local file | |||||
| // system based on given UUID. | |||||
| func AttachmentLocalPath(uuid string) string { | func AttachmentLocalPath(uuid string) string { | ||||
| return path.Join(setting.AttachmentPath, uuid[0:1], uuid[1:2], uuid) | return path.Join(setting.AttachmentPath, uuid[0:1], uuid[1:2], uuid) | ||||
| } | } | ||||