/
views_messageboard_pm.go
81 lines (69 loc) · 1.93 KB
/
views_messageboard_pm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package marketplace
import (
"github.com/dchest/captcha"
"github.com/gocraft/web"
"qxklmrhx7qkzais6.onion/Tochka/tochka-free-market/modules/util"
)
func (c *Context) ViewListPrivateMessages(w web.ResponseWriter, r *web.Request) {
if len(r.URL.Query()["section"]) > 0 {
section := r.URL.Query()["section"][0]
c.SelectedSection = section
} else {
c.SelectedSection = ""
}
if c.SelectedSection == "inbox" {
vps := []ViewPrivateThread{}
for _, vp := range c.ViewPrivateThreads {
if !vp.IsRead {
vps = append(vps, vp)
}
}
c.ViewPrivateThreads = vps
}
util.RenderTemplate(w, "board/messages", c)
}
func (c *Context) ViewShowPrivateMessageGET(w web.ResponseWriter, r *web.Request) {
c.CaptchaId = captcha.New()
c.SelectedSection = c.ViewThread.Uuid
for _, m := range c.ViewThread.Messages {
if m.RecieverUserUuid == c.ViewUser.Uuid && !m.IsReadByReciever {
m.IsReadByReciever = !m.IsReadByReciever
m.Save()
}
}
UpdateThreadPerusalStatus(c.ViewThread.Uuid, c.ViewUser.Uuid)
// hack to make displayed thread viewd as read
for i := range c.ViewThreads {
th := c.ViewThreads[i]
if th.Uuid == c.ViewThread.Uuid {
c.ViewThreads[i].IsRead = true
break
}
}
util.RenderTemplate(w, "board/message", c)
}
func (c *Context) ViewShowPrivateMessagePOST(w web.ResponseWriter, r *web.Request) {
isCaptchaValid := captcha.VerifyString(
r.FormValue("captcha_id"),
r.FormValue("captcha"),
) || c.ViewUser.IsAdmin || c.ViewUser.IsStaff
if !isCaptchaValid {
c.Error = "Invalid captcha"
c.ViewShowPrivateMessageGET(w, r)
return
}
message, err := CreateMessage(r.FormValue("text"), c.Thread, *c.ViewUser.User)
if err != nil {
c.Error = err.Error()
c.ViewShowPrivateMessageGET(w, r)
return
}
err = message.AddImage(r)
if err != nil {
c.Error = err.Error()
c.ViewShowPrivateMessageGET(w, r)
return
}
CacheClearPrivateThreads(c.ViewUser.Uuid)
c.MessagesMiddleware(w, r, c.ViewShowPrivateMessageGET)
}