diff options
| author | sostler <sbostler@gmail.com> | 2010-05-19 23:34:41 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-05-19 23:34:41 -0400 |
| commit | 3589da0fdfbb3ef09a0f89778edcaf40c2574c5b (patch) | |
| tree | ae9b57ac3299f2ba04555d36e988871c8dc2877c /src | |
| parent | 793ec966d27d6e3696a11957c817029a08574ce0 (diff) | |
| parent | 19c14ae3cda45f919987111e98e7bf11f2c2b2fb (diff) | |
Resolved merge
Diffstat (limited to 'src')
| -rw-r--r-- | src/email.clj | 4 | ||||
| -rw-r--r-- | src/site.clj | 107 |
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] + ["♟" "♞" "♝" "♜" "♛" "♚"])) + +(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))) |
