diff options
| author | Scott Ostler <sbsotler@gmail.com> | 2010-11-23 01:58:52 -0500 |
|---|---|---|
| committer | Scott Ostler <sbsotler@gmail.com> | 2010-11-23 01:58:52 -0500 |
| commit | 048783c9e591d859bda8b51a63086e0330f6fd30 (patch) | |
| tree | e7735969788a110e72747b777b7fb89e73b4d060 /src | |
| parent | ad83cbd56471a628cf4cd657bdea962f4f323973 (diff) | |
Updated fav handling
Diffstat (limited to 'src')
| -rw-r--r-- | src/datalayer.clj | 12 | ||||
| -rw-r--r-- | src/site.clj | 8 | ||||
| -rw-r--r-- | src/tags.clj | 11 |
3 files changed, 17 insertions, 14 deletions
diff --git a/src/datalayer.clj b/src/datalayer.clj index 0d328b6..26fbd36 100644 --- a/src/datalayer.clj +++ b/src/datalayer.clj @@ -121,14 +121,16 @@ order by count desc limit ? offset ?") (redis/zscore "favscores" (lower-case nick))) 0)) -(defn incrby-redis-favscore! [nick msg-id inc] +(defn incrby-redis-favscore! [nick msg-id inc is-image] + (println nick msg-id inc is-image) (let [msg-id (str msg-id) inc (double inc)] (with-jedis - #(doto % - (.zincrby "favscores" inc (lower-case nick)) - (.zincrby (str "popular:" nick) inc msg-id) - (.zincrby "hall" inc msg-id))))) + #(do + (.zincrby % "favscores" inc (lower-case nick)) + (when is-image + (.zincrby % (str "popular:" nick) inc msg-id) + (.zincrby % "hall" inc msg-id)))))) ;;;; Redis Hall of Fame diff --git a/src/site.clj b/src/site.clj index 3548149..3a9c379 100644 --- a/src/site.clj +++ b/src/site.clj @@ -823,8 +823,8 @@ ORDER BY cnt DESC [(:user_id user) (:message_id msg) tag]) (when (and (= tag "favorite") (not (= (msg :nick) (:nick user)))) - (if-not (:admin_only msg) - (incrby-redis-favscore! (:nick msg) (:message_id msg) 1)) + (if-not (or (:admin_only msg) (= (:user_id user) (:user_id msg))) + (incrby-redis-favscore! (:nick msg) (:message_id msg) 1 (:is_image msg))) (insert-fav-notification! (msg :nick) (user :nick) (user :avatar) @@ -861,8 +861,8 @@ ORDER BY cnt DESC (let [rows-deleted (first (do-delete "tags" [query user-id msg-id tag]))] (if-not (zero? rows-deleted) (do - (if-not (:admin_only msg) - (incrby-redis-favscore! (:nick msg) msg-id -1)) + (if-not (or (:admin_only msg) (= user-id (:user_id msg))) + (incrby-redis-favscore! (:nick msg) msg-id -1 (:is_image msg))) (resp-success "OK")) (resp-error "NO_TAG"))))) diff --git a/src/tags.clj b/src/tags.clj index bc022f9..53236c5 100644 --- a/src/tags.clj +++ b/src/tags.clj @@ -339,13 +339,14 @@ WHERE EXISTS index-func (fn [row] (index-of #(= (:message_id row) %) ids))] (for [m (sort-by index-func tagged-rows)] - (let [favers (get (:tags m) "favorite") - favorited (and viewer-nick - (boolean (some #(= % viewer-nick) favers)))] + (let [favers (get (:tags m) "favorite") + favorited (and viewer-nick + (boolean (some #(= % viewer-nick) favers))) + filtered-favers (filter #(not= % (:nick m)) favers)] (assoc m - :favers favers + :favers filtered-favers :favorited favorited - :count (count favers))))))) + :count (count filtered-favers))))))) (defn fetch-dump-by-id ([m-id] |
