summaryrefslogtreecommitdiff
path: root/src/site.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/site.clj')
-rw-r--r--src/site.clj38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/site.clj b/src/site.clj
index 7f8e22c..eb6d153 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -15,6 +15,7 @@
clojure.contrib.sql
clojure.contrib.str-utils
compojure
+ email
utils
cookie-login
session-sweeper
@@ -367,6 +368,7 @@
[:nick :hash :email]
[nick hash email])
(let [db-user (fetch-nick nick)]
+ (send-registration-email nick email)
[(session-assoc-from-db db-user)
(resp-success "OK")])))))
@@ -433,7 +435,8 @@
(defn directory-search [offset]
(let [directory @*directory-listing*
users (subvec directory
- (* offset *per-directory-page*)
+ (min (count directory)
+ (* offset *per-directory-page*))
(min (count directory)
(* (inc offset) *per-directory-page*)))
user-ids (apply str (interpose ", " (map #(%1 :user_id) users)))
@@ -448,17 +451,19 @@
ORDER BY created_on DESC LIMIT 1)")]
(when (> (count user-ids) 0)
(let [res (do-select [qry])
- keys (map :user_id res)
- dict (zipmap keys res)]
+ keys (map :user_id res)
+ res-dict (zipmap keys res)]
(map (fn [u]
(let [u-id (u :user_id)]
- (process-directory-listing (merge u (dict u-id)))))
+ (process-directory-listing (merge u (res-dict u-id)))))
users)))))
(defn update-directory! []
(let [qry "SELECT u.user_id, COUNT(m) as cnt
FROM users u, messages m
WHERE u.user_id = m.user_id
+ AND m.room_id = 1
+ AND m.is_image = true
GROUP BY u.user_id
ORDER BY COUNT(m) DESC"
res (vec (do-select [qry]))]
@@ -482,6 +487,8 @@
(cond (= offset 0) (.setAttribute st "prev" false)
(= offset 1) (.setAttribute st "prev" "")
:else (.setAttribute st "prev" (str "/" (dec offset))))
+ (if (> offset 0)
+ (.setAttribute st "cur" offset))
(.setAttribute st "next" (str "/" (inc offset)))
(if (zero? (count @*directory-listing*))
(.setAttribute st "notloaded" true))
@@ -711,11 +718,24 @@
(log session (@rooms room-key) offset params)
(resp-error "UNKNOWN_ROOM")))
+;; Account resets
+
+(defn reset-page [session]
+ )
+
+(defn reset-account-request! [session params]
+ )
+
+(defn reset-account! [session key]
+ )
+
;; Upload
(def *max-image-height* 2000)
(def *max-image-width* 2000)
+(def *max-avatar-height* 2000)
+(def *max-avatar-width* 2000)
(def *vip-max-file-size* (mbytes 5)) ; don't be nuts guys
(def *max-file-size* (kbytes 750))
(def *ignore-size-limit-for-vip* true)
@@ -778,10 +798,6 @@
(not (validate-room-access room-key session)) [200 "UNKNOWN_ROOM"]
:else (do-upload session image (@rooms room-key)))))
-(defn copy-and-resize [image dest]
- ; TODO: resize
- (copy image dest))
-
;; N.B. -- Upload responses aren't JSON-evaluated
(defn do-upload-avatar [session image]
(let [filename (format-filename (:filename image) (session :nick))
@@ -789,7 +805,7 @@
dest (open-file [*avatar-directory* date] filename)
url (image-url-from-file "avatars" date dest)]
(do
- (copy-and-resize (:tempfile image) dest)
+ (copy (:tempfile image) dest)
(update-user-db (session :user_id) "avatar" url)
[(session-assoc :avatar url)
[200 url]])))
@@ -851,6 +867,7 @@
(-> request :route-params :room)
(-> request :route-params :offset)
params))
+ ;; TODO: add form tokens for all destructive actions
(POST "/msg" (validated-msg session params))
(POST "/submit-registration" (register session params))
(POST "/update-profile" (update-profile session params))
@@ -860,6 +877,9 @@
(GET "/directory" (directory session 0))
(GET "/directory/:offset"
(directory session (maybe-parse-int (-> request :route-params :offset) 0)))
+ (GET "/reset" (reset-page session))
+ (POST "/reset-request" (reset-account-request! session params))
+ (POST "/reset/:key" (reset-account! session (-> request :route-params :key)))
(GET "/about_us" (serve-template "about_us" session))
(GET "/goodies" (serve-template "goodies" session))
(GET "/help" (serve-template "help" session))