summaryrefslogtreecommitdiff
path: root/src/site.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/site.clj')
-rw-r--r--src/site.clj39
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"))