summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorScott Ostler <sbsotler@gmail.com>2010-11-23 01:58:52 -0500
committerScott Ostler <sbsotler@gmail.com>2010-11-23 01:58:52 -0500
commit048783c9e591d859bda8b51a63086e0330f6fd30 (patch)
treee7735969788a110e72747b777b7fb89e73b4d060 /src
parentad83cbd56471a628cf4cd657bdea962f4f323973 (diff)
Updated fav handling
Diffstat (limited to 'src')
-rw-r--r--src/datalayer.clj12
-rw-r--r--src/site.clj8
-rw-r--r--src/tags.clj11
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]