5705252029
Use UseConvos permission instead of ban flags in convo perm checks. Stop users without the UseConvos permission from editing convo replies, although they can still delete them for privacy reasons. Shorten some things and reduce the amount of boilerplate. Add a few misc parser test cases. Fix footer and tweak indentation.
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
package routes
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
c "github.com/Azareal/Gosora/common"
|
|
"github.com/Azareal/Gosora/common/phrases"
|
|
)
|
|
|
|
func ForumList(w http.ResponseWriter, r *http.Request, user c.User, header *c.Header) c.RouteError {
|
|
skip, rerr := header.Hooks.VhookSkippable("route_forum_list_start", w, r, &user, header)
|
|
if skip || rerr != nil {
|
|
return rerr
|
|
}
|
|
|
|
header.Title = phrases.GetTitlePhrase("forums")
|
|
header.Zone = "forums"
|
|
header.Path = "/forums/"
|
|
header.MetaDesc = header.Settings["meta_desc"].(string)
|
|
|
|
var err error
|
|
var canSee []int
|
|
if user.IsSuperAdmin {
|
|
canSee, err = c.Forums.GetAllVisibleIDs()
|
|
if err != nil {
|
|
return c.InternalError(err, w, r)
|
|
}
|
|
} else {
|
|
group, err := c.Groups.Get(user.Group)
|
|
if err != nil {
|
|
log.Printf("Group #%d doesn't exist despite being used by c.User #%d", user.Group, user.ID)
|
|
return c.LocalError("Something weird happened", w, r, user)
|
|
}
|
|
canSee = group.CanSee
|
|
}
|
|
|
|
var forumList []c.Forum
|
|
for _, fid := range canSee {
|
|
// Avoid data races by copying the struct into something we can freely mold without worrying about breaking something somewhere else
|
|
f := c.Forums.DirtyGet(fid).Copy()
|
|
if f.ParentID == 0 && f.Name != "" && f.Active {
|
|
if f.LastTopicID != 0 {
|
|
if f.LastTopic.ID != 0 && f.LastReplyer.ID != 0 {
|
|
f.LastTopicTime = c.RelativeTime(f.LastTopic.LastReplyAt)
|
|
}
|
|
}
|
|
header.Hooks.Hook("forums_frow_assign", &f)
|
|
forumList = append(forumList, f)
|
|
}
|
|
}
|
|
|
|
return renderTemplate("forums", w, r, header, c.ForumsPage{header, forumList})
|
|
}
|