summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorScott Ostler <sostler@deathmachine.local>2010-03-04 23:03:31 -0500
committerScott Ostler <sostler@deathmachine.local>2010-03-04 23:03:31 -0500
commite8142b2742433ea26f6434e5933cddea8b4711c2 (patch)
treeb871835914a46c3d6414c8ff5fc979e60344c606 /src
parent137fd71eced7732550f448dc42e2422340241d7b (diff)
initial directory
Diffstat (limited to 'src')
-rwxr-xr-xsrc/site.clj31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/site.clj b/src/site.clj
index 9460187..be19830 100755
--- a/src/site.clj
+++ b/src/site.clj
@@ -145,6 +145,15 @@
"avatar" (escape-html (u :avatar))}
{"nick" (u :nick)}))
+(defn process-directory-listing [d]
+ (let [base {"nick" (escape-html (d :nick))
+ "content" (escape-html (d :content))
+ "count" (d :count)}
+ avatar (d :avatar)]
+ (if (non-empty-string? avatar)
+ (assoc base "avatar" avatar)
+ base)))
+
(defn prepare-user-list [room]
(map process-user (sort-by #(% :nick)
(vals @(room :users)))))
@@ -364,10 +373,27 @@
;; Directory
(def *per-directory-page* 25)
+(def *update-directory* true)
+(def *update-directory-ms* (* 60 60 1000))
+
+(defn directory-search [offset]
+ (let [qry (str "SELECT u.nick, u.avatar, m.content "
+ "FROM users u, messages m "
+ "WHERE m.message_id = "
+ " (SELECT n.message_id FROM messages n "
+ " WHERE n.user_id = u.user_id ORDER BY n.created_on DESC LIMIT 1) "
+ "ORDER BY (SELECT COUNT(*) FROM messages where user_id = u.user_id) "
+ "LIMIT ? OFFSET ?")]
+ (do-select [qry *per-directory-page* (* offset *per-directory-page*)])))
(defn directory [session offset]
- (let [st (fetch-template "directory" session)]
-
+ (let [st (fetch-template "directory" session)
+ users (to-array (map process-directory-listing (directory-search offset)))]
+ (.setAttribute st "users" users)
+ (cond (= offset 0) (.setAttribute st "prev" false)
+ (= offset 1) (.setAttribute st "prev" "")
+ :else (.setAttribute st "prev" (str "/" (- offset 1))))
+ (.setAttribute st "next" (str "/" (+ offset 1)))
(.toString st)))
;; Topics
@@ -669,7 +695,6 @@
(-> request :route-params :room)
(-> request :route-params :offset)
params))
- (GET "/stats" (validated-stats session params))
;; TODO: validate POST Referrer headers for POSTs
(POST "/msg" (validated-msg session params))
(POST "/submit-registration" (register session params))