summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-05-19 23:34:41 -0400
committersostler <sbostler@gmail.com>2010-05-19 23:34:41 -0400
commit3589da0fdfbb3ef09a0f89778edcaf40c2574c5b (patch)
treeae9b57ac3299f2ba04555d36e988871c8dc2877c /src
parent793ec966d27d6e3696a11957c817029a08574ce0 (diff)
parent19c14ae3cda45f919987111e98e7bf11f2c2b2fb (diff)
Resolved merge
Diffstat (limited to 'src')
-rw-r--r--src/email.clj4
-rw-r--r--src/site.clj107
2 files changed, 81 insertions, 30 deletions
diff --git a/src/email.clj b/src/email.clj
index e2a5f1f..2997827 100644
--- a/src/email.clj
+++ b/src/email.clj
@@ -59,8 +59,8 @@
(base-mail :user "info@dump.fm"
:password "UHR4Moghu5a2"
:host "smtpout.secureserver.net"
- :port 25
- :ssl false
+ :port 465
+ :ssl true
:to [(join to ",")]
:subject subject
:text text
diff --git a/src/site.clj b/src/site.clj
index c116f53..7bb8dba 100644
--- a/src/site.clj
+++ b/src/site.clj
@@ -113,6 +113,7 @@
(assoc m "topic" topic)
m)))
+
(defn count-messages-by-nick [nick image-only]
(let [query (str "SELECT COUNT(*)
FROM messages m, users u, rooms r
@@ -299,6 +300,48 @@
[(session-assoc-from-db db-user)
(resp-success "OK")])))))
+;; Fav scores
+
+(def *score-query* "
+SELECT u.nick,
+ COUNT(*) AS cnt
+FROM tags t,
+ messages m,
+ users u
+WHERE t.message_id = m.message_id
+ AND m.user_id != t.user_id
+ AND m.user_id = u.user_id
+GROUP BY u.nick
+ORDER BY cnt DESC;
+")
+
+(def *scores-resfresh-period-sec* (* 30 60))
+
+(defn compute-scores []
+ (let [res (do-select [*score-query*])]
+ (zipmap (map :nick res)
+ (map :cnt res))))
+
+(def *user-scores*
+ (scheduled-agent (no-args-adaptor compute-scores)
+ *scores-resfresh-period-sec*
+ {}))
+
+(def *piece-map*
+ (zipmap
+ [:pawn :knight :bishop :rook :queen :king]
+ ["&#9823;" "&#9822;" "&#9821;" "&#9820;" "&#9819;" "&#9818;"]))
+
+(defn score-to-piece [score]
+ (cond (= score 0) :pawn
+ (< score 50) :knight
+ (< score 150) :bishop
+ (< score 300) :rook
+ (< score 1000) :queen
+ :else :king))
+
+(def score-to-entity (comp *piece-map* score-to-piece))
+
;; Profile
(def *zoeee-query* "
@@ -332,39 +375,46 @@ ORDER BY created_on DESC;
(if (non-empty-string? v) (escape-html v)))))
(.setAttribute st "dumps" dumps)
(.toString st)))
-
-(defn profile [session profile-nick offset]
- (if-let [user-info (fetch-nick profile-nick)]
- (let [st (fetch-template "profile" session)
- profile-nick (:nick user-info)
- 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-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))]
- (do
- (.setAttribute st "is_home" is-home)
- (doseq [a [:nick :avatar :contact :bio]]
+
+(defn profile
+ ([session profile-nick offset] (profile session profile-nick offset "profile"))
+ ([session profile-nick offset 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
+ 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)
+ score (if (= (lower-case profile-nick) "scottbot")
+ 9999
+ (or ((poll *user-scores*) profile-nick) 0))
+ 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))]
+ (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 dumps) 0)
+ (.setAttribute st "dumps" dumps))
(if (> (count raw-dumps) *dumps-per-page*)
(.setAttribute st "next" (inc offset)))
+ (.setAttribute st "score" score)
+ (.setAttribute st "score_ent" (score-to-entity score))
(if (not= offset 0)
(.setAttribute st "prev" (max (dec offset) 0)))
(.setAttribute st "debug_log_items" (logger))
(.toString st)))
- (resp-error "NO_USER")))
+ (resp-error "NO_USER"))))
(defn update-user-db [user-id attr val]
(with-connection *db*
@@ -1002,6 +1052,7 @@ ORDER BY msg_count DESC")
(POST "/cancel-mute" (handle-cancel-mute! session params))
(GET "/feed-test" (feed-test-page session))
(POST "/feed-test" (feed-test session params))
+ (GET "/profile-test/:t" (profile session "ryder" "0" (params :t)))
;; Footer pages
(GET "/about_us" (serve-template "about_us" session))
@@ -1012,10 +1063,10 @@ ORDER BY msg_count DESC")
(GET "/error/ie" (serve-template "error_ie" session))
;; Put username routes below all others in priority
- (GET "/zoeee/nudes" (zoeee-nudes session))
- (GET "/:nick" (profile session (params :nick) "0"))
- (GET "/:nick/" (profile session (params :nick) "0"))
- (GET "/:nick/:offset" (profile session (params :nick) (params :offset)))
+ (GET "/zoeee/nudes" (zoeee-nudes session))
+ (GET "/:nick" (profile session (params :nick) "0"))
+ (GET "/:nick/" (profile session (params :nick) "0"))
+ (GET "/:nick/:offset" (profile session (params :nick) (params :offset)))
(GET "/" (landing session))
(ANY "*" (unknown-page)))