reprogl

Форк
0
/
comment.go 
88 строк · 1.6 Кб
1
package models
2

3
import (
4
	"database/sql"
5
	"time"
6

7
	"xelbot.com/reprogl/container"
8
	"xelbot.com/reprogl/utils/hashid"
9
)
10

11
type Commentator struct {
12
	Name          string
13
	Website       sql.NullString
14
	Email         sql.NullString
15
	CommentatorID sql.NullInt32
16
	AuthorID      sql.NullInt32
17
	CommentsCount int
18
	Gender        int
19
	RottenLink    bool
20
	AvatarVariant int
21
}
22

23
type Comment struct {
24
	ID        int
25
	Text      string
26
	Depth     int
27
	CreatedAt time.Time
28
	Deleted   bool
29
	Commentator
30

31
	IP          sql.NullString
32
	CountryCode string
33
	UserAgent   sql.NullString
34
}
35

36
type CommentatorForGravatar struct {
37
	ID        int
38
	Email     sql.NullString
39
	FakeEmail sql.NullBool
40
}
41

42
type CommentList []*Comment
43

44
type CommentatorList []*Commentator
45

46
func (c *Comment) Avatar() (src string) {
47
	if c.Deleted {
48
		src = container.GetConfig().CDNBaseURL + "/images/avatar/clown.png"
49

50
		return
51
	}
52

53
	return c.Commentator.Avatar()
54
}
55

56
func (ctt *Commentator) Avatar() string {
57
	var id int
58
	var options hashid.Option
59

60
	switch {
61
	case ctt.CommentatorID.Valid:
62
		id = int(ctt.CommentatorID.Int32)
63
		options = hashid.Commentator
64
	case ctt.AuthorID.Valid:
65
		id = int(ctt.AuthorID.Int32)
66
		options = hashid.User
67
	}
68

69
	if ctt.Gender == 1 {
70
		options |= hashid.Male
71
	} else {
72
		options |= hashid.Female
73
	}
74

75
	if ctt.AvatarVariant > 0 {
76
		options += hashid.Option(ctt.AvatarVariant << 4)
77
	}
78

79
	return AvatarLink(id, options)
80
}
81

82
func (c *CommentatorForGravatar) NeedToCheckGravatar() bool {
83
	return c.Email.Valid && c.FakeEmail.Valid && !c.FakeEmail.Bool
84
}
85

86
func (c *CommentatorForGravatar) GetEmail() string {
87
	return c.Email.String
88
}
89

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.