diff options
Diffstat (limited to 'src/site.clj')
| -rw-r--r-- | src/site.clj | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/site.clj b/src/site.clj index 91f982e..94abd6c 100644 --- a/src/site.clj +++ b/src/site.clj @@ -62,7 +62,7 @@ ;; http://snippets.dzone.com/posts/show/6995 (def url-regex #"(?i)^((http\:\/\/|https\:\/\/|ftp\:\/\/)|(www\.))+(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$") -(def pic-regex #"(?i)\.(jpg|jpeg|png|gif|bmp|svg)(\?|$)") +(def pic-regex #"(?i)\.(jpg|jpeg|png|gif|bmp|svg)(\?|&|$)") (defn is-image? [word] (and (re-find url-regex word) @@ -536,6 +536,42 @@ FROM users u (.toString st)) (resp-error "NO_USER"))) +;; Who faved me + +(def popular-dumps-qry " +select u.nick, u.avatar, r.key, m.message_id, m.content, m.created_on, count(*) as count, + array_agg(u2.nick) as user_nicks, + array_agg(u2.avatar) as user_avs +from users u, messages m, rooms r, tags t, users u2 +where lower(u.nick) = lower(?) +and u.user_id = m.user_id and m.message_id = t.message_id +and m.room_id = r.room_id and m.is_image = true and r.admin_only = false +and lower(t.tag) = 'favorite' and t.user_id != u.user_id +and t.user_id = u2.user_id +group by u.nick, u.avatar, r.key, m.message_id, m.content, m.created_on +order by count desc limit 20 offset 0") + +(defn get-popular-dumps [nick] + (for [d (do-select [popular-dumps-qry nick])] + (assoc d + :favers (map (fn [n a] {:nick n :avatar a}) + (.getArray (:user_nicks d)) + (.getArray (:user_avs d))) + :user_nicks nil :user_avs nil))) + +(defn popular [session profile-nick] + (if-let [user-info (fetch-nick profile-nick)] + (let [st (fetch-template "popular" session) + profile-nick (:nick user-info) + raw-dumps (get-popular-dumps profile-nick) + dumps (map process-message-for-output raw-dumps)] + (println raw-dumps) + (.setAttribute st "nick" profile-nick) + (.setAttribute st "mini_profile" (build-mini-profile user-info)) + (.setAttribute st "dumps" dumps) + (.toString st)) + (resp-error "NO_USER"))) + ;; Directory (def *per-directory-page* 25) @@ -1149,6 +1185,7 @@ FROM users u (GET "/:nick/tag/:tag/:offset" (tagged-dumps-by-nick session params (request-url request))) (GET "/:nick/favorites" (favorites session params)) (GET "/:nick/favorites/:offset" (favorites session params)) + (GET "/:nick/popular" (popular session (params :nick))) (GET "/:nick/favs" (favorites session params)) (GET "/:nick/favs/:offset" (favorites session params)) (GET "/:nick/log" (user-log session (params :nick) "0")) |
