diff options
| author | sostler <sbostler@gmail.com> | 2010-04-14 18:52:24 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-04-14 18:52:24 -0400 |
| commit | f0ab9c28ec3cdc0f347081e63e2448750d073d46 (patch) | |
| tree | 03090b6287c75da498f1858877c5bc520f0ef2a6 | |
| parent | 486946cd5fd8eda8824f1752101fb010c31396d9 (diff) | |
Added muting emails
| -rw-r--r-- | src/admin.clj | 30 | ||||
| -rw-r--r-- | src/email.clj | 17 | ||||
| -rwxr-xr-x | src/utils.clj | 5 |
3 files changed, 37 insertions, 15 deletions
diff --git a/src/admin.clj b/src/admin.clj index 0253734..e5d0c8f 100644 --- a/src/admin.clj +++ b/src/admin.clj @@ -50,10 +50,11 @@ (def *mute-refresh-period-sec* 60) (def fetch-mutes-query " -SELECT mutes.*, (set_on + duration) AS expiry -FROM mutes -WHERE (set_on + duration) > now() -AND NOT is_canceled +SELECT m.*, (m.set_on + m.duration) AS expiry, u.nick AS admin_nick +FROM mutes m, users u +WHERE (m.set_on + m.duration) > now() +AND u.user_id = m.admin_id +AND NOT m.is_canceled ") (defn update-mutes [] @@ -78,18 +79,23 @@ AND NOT is_canceled (defn mute! [session params] (if-vip - (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-id (session :user_id)] + (let [nick (params :nick) + user-id (:user_id (fetch-nick nick)) + time (params :time) + unit (params :unit) + duration (parse-pos-interval time (s/butlast unit 1)) + reason (params :reason) + admin-id (session :user_id) + admin-nick (session :nick)] (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) + :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")))))) + user-id admin-id duration reason)] + (do-cmds q) + (send-mute-email nick admin-nick reason time unit) + "OK"))))) (defn format-mute [mute] diff --git a/src/email.clj b/src/email.clj index dbe60ea..74d6625 100644 --- a/src/email.clj +++ b/src/email.clj @@ -1,6 +1,7 @@ (ns email - (:import org.antlr.stringtemplate.StringTemplateGroup) - (:require [clojure.contrib.str-utils2 :as s])) + (:import org.antlr.stringtemplate.StringTemplateGroup) + (:require [clojure.contrib.str-utils2 :as s]) + (:use utils)) (defn base-mail [& m] (let [mail (apply hash-map m) @@ -65,6 +66,11 @@ :text text :mime (classify-mimetype text))) +(def admins ["opuscule@gmail.com" + "sbostler@gmail.com" + "stfn6000@gmail.com" + "theryderproject@gmail.com"]) + (defn send-registration-email ([nick email] (send-registration-email nick email "welcome")) ([nick email temp] @@ -75,3 +81,10 @@ (let [[s b] (parse-mail-template "reset" {"nick" nick "key" key})] (dump-mail [email] s b))) +(defn send-mute-email [user-nick admin-nick reason time unit] + (let [subject (format "%s was muted by %s for %s %s" + user-nick admin-nick time unit) + body (format "Reason: %s" + reason) + recips (join admins ",")] + (dump-mail [recips] subject body))) diff --git a/src/utils.clj b/src/utils.clj index da4d4be..d6a95e5 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -29,6 +29,9 @@ (defn swap [f] (fn [& more] (apply f (reverse more)))) +(defn join [lst int] + (apply str (interpose int lst))) + (def YYYYMMDD-format (new SimpleDateFormat "yyyyMMdd")) (defn today [] @@ -160,6 +163,6 @@ (session :is_admin)) (defmacro if-vip [e] - "Evaluates expr if user is vipm otherwise returns 404 string. Can only be used + "Evaluates expr if user is vip otherwise returns 404. Can only be used where session is defined." `(if (is-vip? ~'session) ~e (unknown-page))) |
