From a0ff1251ce9fc1452fcd8c92737897f414f365c0 Mon Sep 17 00:00:00 2001 From: Scott Ostler Date: Wed, 23 Jun 2010 06:05:18 -0400 Subject: Added hall of fame --- docs/reserved_nicks.txt | 2 ++ src/fame.clj | 27 +++++++++++++++++++++++++++ src/site.clj | 11 +++++++++-- template/fame.st | 39 +++++++++++++++++++++++++++++++++++++++ template/fame_dump.st | 15 +++++++++++++++ 5 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 src/fame.clj create mode 100644 template/fame.st create mode 100644 template/fame_dump.st diff --git a/docs/reserved_nicks.txt b/docs/reserved_nicks.txt index b57cb8e..c53caae 100644 --- a/docs/reserved_nicks.txt +++ b/docs/reserved_nicks.txt @@ -20,6 +20,7 @@ directory dump dumpfm error +fame favicon feed feeds @@ -28,6 +29,7 @@ free friends goodies google +hall help hookup image diff --git a/src/fame.clj b/src/fame.clj new file mode 100644 index 0000000..8f0ae4f --- /dev/null +++ b/src/fame.clj @@ -0,0 +1,27 @@ +(ns fame + (:use scheduled-agent + utils)) + +; should probably cache this to disk somewhere +(def hall-of-fame-update-frequency (* 4 60 60)) + +(def hall-of-fame-query " +select m.created_on, m.message_id, m.content, u.nick, u.avatar, r.key, count(*) +from tags t, messages m, rooms r, users u +where t.message_id = m.message_id +and m.user_id = u.user_id +and m.room_id = r.room_id +and r.admin_only = false +group by m.created_on, m.message_id, m.content, u.nick, u.avatar, r.key +order by count(*) desc +limit 50 +") + +(defn fetch-hall-of-fame [] + (do-select [hall-of-fame-query])) + + +(def hall-results (scheduled-agent fetch-hall-of-fame + hall-of-fame-update-frequency + nil)) + \ No newline at end of file diff --git a/src/site.clj b/src/site.clj index 2777efc..6a011c6 100644 --- a/src/site.clj +++ b/src/site.clj @@ -17,6 +17,7 @@ admin compojure email + fame utils cookie-login session-sweeper @@ -741,7 +742,6 @@ FROM users u (if (not= offset 0) (.setAttribute st "prev" (max (dec offset) 0))) (.setAttribute st "dumps" dumps) - ;; (.setAttribute st "json_tags" json-tags) (if (default-room? roomkey) (.setAttribute st "roomkey" "") (.setAttribute st "roomkey" (str roomkey "."))) @@ -1046,6 +1046,11 @@ FROM users u (.toString st) (unknown-page))) +(defn hall-of-fame [session] + (let [st (fetch-template "fame" session)] + (.setAttribute st "dumps" (map process-message-for-output (poll hall-results))) + (.toString st))) + ;; Compojure Routes (defn serve-static [dir path] @@ -1121,6 +1126,8 @@ FROM users u ;; Memes (GET "/m/:m" (serve-meme session (params :m))) + + (GET "/hall" (hall-of-fame session)) ;; Footer pages (GET "/about_us" (serve-template "about_us" session)) @@ -1217,7 +1224,7 @@ FROM users u (Thread/sleep 3000) (start-user-flusher!) (start-session-pruner!) - +(start! hall-results) (if (= *server-url* "http://dump.fm") (do (start! feed-downloader) (start! feed-inserter))) diff --git a/template/fame.st b/template/fame.st new file mode 100644 index 0000000..52bceb3 --- /dev/null +++ b/template/fame.st @@ -0,0 +1,39 @@ + + + dump.fm hall of fame + $head()$ + + + + + $banner()$ +
+
+
+
+ +
+ +
+

Hall Of Fame


+
+ +
+ $if(dumps)$ + + $dumps: { d | $fame_dump(dump=d)$ }$ + + $else$ + No dumps! + $endif$ +
+ +
+ $footer()$ +
+
+
+ + diff --git a/template/fame_dump.st b/template/fame_dump.st new file mode 100644 index 0000000..c0fb2a2 --- /dev/null +++ b/template/fame_dump.st @@ -0,0 +1,15 @@ +
+ +$dump.created_on$ -- by $dump.nick$ +
+$if(dump.avatar)$ + +$else$ + +$endif$ + +
   $dump.count$ +
$dump.content$
+
+$share_buttons()$ +
-- cgit v1.2.3-70-g09d2