summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorScott Ostler <scottbot9000@gmail.com>2010-06-20 05:05:41 -0400
committerScott Ostler <scottbot9000@gmail.com>2010-06-20 05:05:41 -0400
commit5851c64e3056836f907fd0c7833c9ba7c17c4f01 (patch)
treea6e38ae84f6d885dd064d21ce5ca1f585e4b1bd0 /src
parent4e783d4b42907f8b3da08feeaeec102d0ff16248 (diff)
user logs
Diffstat (limited to 'src')
-rw-r--r--src/site.clj106
1 files changed, 70 insertions, 36 deletions
diff --git a/src/site.clj b/src/site.clj
index 31327b2..5df97b4 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -400,9 +400,15 @@ FROM users u
and t.message_id = m.message_id and m.is_image = true"
(.toLowerCase nick)]))))
+(defn recently-faved [nick]
+ (do-select ["select distinct(u2.avatar, u2.nick) from users u, tags t, messages m, users u2
+ where lower(u.nick) = ? and u.user_id = t.user_id and t.message_id = m.message_id
+ and m.user_id = u2.user_id order by t.created_on, u2.avatar, u2.nick limit 4"
+ (.toLowerCase nick)]))
+
(defn profile
- ([session profile-nick offset] (profile session profile-nick offset "profile"))
- ([session profile-nick offset template]
+ ([session profile-nick] (profile session profile-nick "profile"))
+ ([session profile-nick template]
(if-let [user-info (fetch-nick profile-nick)]
(let [st (fetch-template template session)
profile-nick (:nick user-info) ; Update to get right casing
@@ -410,36 +416,21 @@ FROM users u
logger (make-time-logger)
is-home (and nick (= nick profile-nick))
has-avatar (non-empty-string? (user-info :avatar))
- offset (maybe-parse-int offset 0)
dump-cnt (count-dumps-posted profile-nick)
fav-from-cnt (count-dumps-user-faved profile-nick)
- score (lookup-score profile-nick)
- dump-offset (* offset *dumps-per-page*)
- raw-dumps (logger tags/fetch-dumps-by-nick
- :nick profile-nick
- :amount (+ 1 *dumps-per-page*)
- :offset dump-offset)
- dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session))
- dumps (map tags/remove-tags-for-output dumps)
- dumps (logger doall (map process-message-for-output dumps))]
+ score (lookup-score profile-nick)]
(do
(.setAttribute st "is_home" is-home)
(doseq [a [:nick :avatar :contact :bio]]
- (let [v (user-info a)]
- (.setAttribute st (name a)
- (if (non-empty-string? v) (escape-html v)))))
- (if (> (count dumps) 0)
- (.setAttribute st "dumps" dumps))
- (if (> (count raw-dumps) *dumps-per-page*)
- (.setAttribute st "next" (inc offset)))
- (.setAttribute st "score" (comma-format score))
- (.setAttribute st "score_ent" (score-to-entity score))
- (.setAttribute st "dump_cnt" (comma-format dump-cnt))
- (.setAttribute st "dumps_user_faved_cnt" (comma-format fav-from-cnt))
- (if (not= offset 0)
- (.setAttribute st "prev" (max (dec offset) 0)))
- (.setAttribute st "debug_log_items" (logger))
- (.toString st)))
+ (let [v (user-info a)]
+ (.setAttribute st (name a)
+ (if (non-empty-string? v) (escape-html v)))))
+ (.setAttribute st "score" (comma-format score))
+ (.setAttribute st "score_ent" (score-to-entity score))
+ (.setAttribute st "dump_cnt" (comma-format dump-cnt))
+ (.setAttribute st "dumps_user_faved_cnt" (comma-format fav-from-cnt))
+ (.setAttribute st "debug_log_items" (logger))
+ (.toString st)))
(resp-error "NO_USER"))))
(defn update-user-db [user-id attr val]
@@ -463,6 +454,47 @@ FROM users u
:else (do (update-user-db user-id attr val)
(resp-success "OK")))))
+;; User log
+
+(defn user-log [session profile-nick offset]
+ (if-let [user-info (fetch-nick profile-nick)]
+ (let [st (fetch-template "userlog" session)
+ profile-nick (:nick user-info) ; Update to get right casing
+ nick (session :nick)
+ logger (make-time-logger)
+ is-home (and nick (= nick profile-nick))
+ has-avatar (non-empty-string? (user-info :avatar))
+ offset (maybe-parse-int offset 0)
+ dump-cnt (count-dumps-posted profile-nick)
+ fav-from-cnt (count-dumps-user-faved profile-nick)
+ score (lookup-score profile-nick)
+ dump-offset (* offset *dumps-per-page*)
+ raw-dumps (logger tags/fetch-dumps-by-nick
+ :nick profile-nick
+ :amount (+ 1 *dumps-per-page*)
+ :offset dump-offset)
+ dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session))
+ dumps (map tags/remove-tags-for-output dumps)
+ dumps (logger doall (map process-message-for-output dumps))]
+ (.setAttribute st "is_home" is-home)
+ (doseq [a [:nick :avatar :contact :bio]]
+ (let [v (user-info a)]
+ (.setAttribute st (name a)
+ (if (non-empty-string? v) (escape-html v)))))
+ (if (> (count dumps) 0)
+ (.setAttribute st "dumps" dumps))
+ (if (> (count raw-dumps) *dumps-per-page*)
+ (.setAttribute st "next" (inc offset)))
+ (.setAttribute st "score" (comma-format score))
+ (.setAttribute st "score_ent" (score-to-entity score))
+ (.setAttribute st "dump_cnt" (comma-format dump-cnt))
+ (.setAttribute st "dumps_user_faved_cnt" (comma-format fav-from-cnt))
+ (if (not= offset 0)
+ (.setAttribute st "prev" (max (dec offset) 0)))
+ (.setAttribute st "debug_log_items" (logger))
+ (.toString st))
+ (resp-error "NO_USER")))
+
;; Directory
(def *per-directory-page* 25)
@@ -1001,12 +1033,12 @@ FROM users u
(GET "http://:sub.dump.fm/log/:offset" (validated-log session (params :sub) (params :offset) params))
(GET "/log" (validated-log session *default-room* "0" params))
(GET "/log/:offset" (validated-log session *default-room* (params :offset) params))
- (GET "/:room/log" (validated-log session (params :room) "0" params))
- (GET "/:room/log/:offset" (validated-log session (params :room) (params :offset) params))
+ (GET "/r/:room/log" (validated-log session (params :room) "0" params))
+ (GET "/r/:room/log/:offset" (validated-log session (params :room) (params :offset) params))
(GET "/favicon.ico" (serve-static "static" "favicon.ico"))
- (GET "/u/:nick" (profile session (params :nick) "0"))
- (GET "/u/:nick/" (profile session (params :nick) "0"))
+ (GET "/u/:nick" (user-log session (params :nick)))
+ (GET "/u/:nick/" (profile session (params :nick)))
(GET "/u/:nick/tag/:tag" (tagged-dumps-by-nick session params (request-url request)))
(GET "/u/:nick/tag/:tag/:offset" (tagged-dumps-by-nick session params (request-url request)))
(GET "/u/:nick/favorites" (favorites session params))
@@ -1014,7 +1046,7 @@ FROM users u
(GET "/json/:nick/favorites" (json-favorites session params))
; have to put this route after favs
- (GET "/u/:nick/:offset" (profile session (params :nick) (params :offset)))
+ (GET "/u/:nick/:offset" (user-log session (params :nick) (params :offset)))
(GET "/p/:nick/:postid" (single-message session (params :nick) (params :postid)))
;; TODO: these shouldn't be GETs
@@ -1046,7 +1078,7 @@ FROM users u
(GET "/mutes" (show-mutes session))
(POST "/mute" (mute! session params))
(POST "/cancel-mute" (handle-cancel-mute! session params))
- (GET "/profile-test/:t" (profile session "ryder" "0" (params :t)))
+ (GET "/profile-test/:t" (profile session "ryder" (params :t)))
(GET "/cmd/ghettosearch/:searchterm" (json-ghetto-search (undecoded-url-piece (request-url request) 2)))
(GET "/search" (serve-template "search_files" session))
@@ -1060,13 +1092,15 @@ FROM users u
(GET "/error/ie" (serve-template "error_ie" session))
;; Put username routes below all others in priority
- (GET "/:nick" (profile session (params :nick) "0"))
- (GET "/:nick/" (profile session (params :nick) "0"))
+ (GET "/:nick" (profile session (params :nick)))
+ (GET "/:nick/" (profile session (params :nick)))
(GET "/:nick/tag/:tag" (tagged-dumps-by-nick session params (request-url request)))
(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/:offset" (profile session (params :nick) (params :offset)))
+ (GET "/:nick/log" (user-log session (params :nick) "0"))
+ (GET "/:nick/log/:offset" (user-log session (params :nick) (params :offset)))
+ (GET "/:nick/:offset" (user-log session (params :nick) (params :offset)))
(GET "/" (landing session))
(ANY "*" (unknown-page)))