summaryrefslogtreecommitdiff
path: root/src/admin.clj
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-04-13 07:30:34 -0400
committersostler <sbostler@gmail.com>2010-04-13 07:30:34 -0400
commitd0bd678ff36fed7cf492b89542588b82efafb938 (patch)
tree4906c63e6cc0775768bdfb2df43fa2f7477afaeb /src/admin.clj
parent24531004162e9acfb9acd5c8800bf0ca075099b8 (diff)
Added initial muting
Diffstat (limited to 'src/admin.clj')
-rw-r--r--src/admin.clj38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/admin.clj b/src/admin.clj
index a7eced1..a3fc076 100644
--- a/src/admin.clj
+++ b/src/admin.clj
@@ -3,6 +3,7 @@
(:require [clojure.contrib.str-utils2 :as s])
(:use compojure
email
+ scheduled-agent
utils))
;; Debug Page
@@ -46,6 +47,24 @@
;; Muting
+(def *mute-refresh-period-sec* 60)
+
+(def fetch-mutes-query "
+SELECT *, set_on + duration AS expiry
+FROM mutes
+WHERE (set_on + duration) < now()
+AND NOT is_canceled
+")
+
+(defn update-mutes []
+ (let [res (do-select [fetch-mutes-query])]
+ (zipmap (map :user_id res) res)))
+
+(def *active-mutes*
+ (scheduled-agent (no-args-adaptor update-mutes)
+ *mute-refresh-period-sec*
+ nil))
+
(defn mute-status [session]
(if-vip
(println session)))
@@ -59,11 +78,16 @@
(defn mute! [session params]
(if-vip
- (let [nick (params :user)
- user_id (:user_id (fetch-nick nick))
- interval (parse-pos-interval (params :time) (params :unit))
+ (let [nick (params :nick)
+ user-id (:user_id (fetch-nick nick))
+ duration (parse-pos-interval (params :time) (s/butlast (params :unit) 1))
reason (params :reason)
- admin-user-id (session :user_id)]
- (cond (not user_id) [400 "INVALID_NICK"]
- (not interval) [400 "INVALID_INTERVAL"]
- :else (do "OK")))))
+ admin-id (session :user_id)]
+ (cond (not user-id) [400 "INVALID_NICK"]
+ (not duration) [400 "INVALID_DURATION"]
+ ;; TODO: Ugly interval hack, w/ no escaping. Totally unsafe.
+ :else (let [q (format "INSERT INTO mutes (user_id, admin_id, duration, reason)
+ VALUES (%s, %s, '%s', '%s')"
+ user-id admin-id duration reason)]
+ (and (do-cmds q) "OK"))))))
+