summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-04-14 18:52:24 -0400
committersostler <sbostler@gmail.com>2010-04-14 18:52:24 -0400
commitf0ab9c28ec3cdc0f347081e63e2448750d073d46 (patch)
tree03090b6287c75da498f1858877c5bc520f0ef2a6 /src
parent486946cd5fd8eda8824f1752101fb010c31396d9 (diff)
Added muting emails
Diffstat (limited to 'src')
-rw-r--r--src/admin.clj30
-rw-r--r--src/email.clj17
-rwxr-xr-xsrc/utils.clj5
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)))