package photo import ( "net/http" "strconv" "strings" "code.nonshy.com/nonshy/website/pkg/models" "code.nonshy.com/nonshy/website/pkg/session" "code.nonshy.com/nonshy/website/pkg/templates" ) // User endpoint to flag other photos as explicit on their behalf. func MarkPhotoExplicit() http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var ( photoID uint64 next = r.FormValue("next") ) if !strings.HasPrefix(next, "/") { next = "/" } // Get current user. currentUser, err := session.CurrentUser(r) if err != nil { session.FlashError(w, r, "Failed to get current user: %s", err) templates.Redirect(w, "/") return } if idInt, err := strconv.Atoi(r.FormValue("photo_id")); err == nil { photoID = uint64(idInt) } else { session.FlashError(w, r, "Invalid or missing photo_id parameter: %s", err) templates.Redirect(w, next) return } // Get this photo. photo, err := models.GetPhoto(photoID) if err != nil { session.FlashError(w, r, "Didn't find photo ID in database: %s", err) templates.Redirect(w, next) return } photo.Explicit = true if err := photo.Save(); err != nil { session.FlashError(w, r, "Couldn't save photo: %s", err) } else { session.Flash(w, r, "Marked photo as Explicit!") } // Log the change. models.LogUpdated(&models.User{ID: photo.UserID}, currentUser, "photos", photo.ID, "Marked explicit by admin action.", []models.FieldDiff{ models.NewFieldDiff("Explicit", false, true), }) templates.Redirect(w, next) }) }