diff options
| author | Scott Ostler <sostler@deathmachine.local> | 2010-03-04 23:03:31 -0500 |
|---|---|---|
| committer | Scott Ostler <sostler@deathmachine.local> | 2010-03-04 23:03:31 -0500 |
| commit | e8142b2742433ea26f6434e5933cddea8b4711c2 (patch) | |
| tree | b871835914a46c3d6414c8ff5fc979e60344c606 /src | |
| parent | 137fd71eced7732550f448dc42e2422340241d7b (diff) | |
initial directory
Diffstat (limited to 'src')
| -rwxr-xr-x | src/site.clj | 31 |
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)) |
