(ns admin (:import java.io.File) (:require [clojure.contrib.str-utils2 :as s]) (:use compojure email utils)) ;; Debug Page (defn exception-to-string [e] (let [sw (java.io.StringWriter.) pw (java.io.PrintWriter. sw)] (.printStackTrace e pw) (.toString sw))) (defn lookup-templates [dir selected] (for [f (.listFiles (File. dir)) :when (and (.isFile f) (.endsWith (.getName f) ".st"))] (let [n (s/butlast (.getName f) 3)] {"template" n "selected" (= selected n)}))) (defn debug-page [session flash] (if-vip (let [st (fetch-template "debug" session)] (.setAttribute st "flash" (:msg flash)) (.setAttribute st "mailtemps" (lookup-templates "template/mail" "welcome")) (.toString st)))) (defn debug-commmand! [session params] (if-vip (let [action (:action params) msg (try (cond (= action "regemail") (do (send-registration-email (params :nick) (params :to) (params :template)) (str "Sent registration mail to " (params :to))) :else (str "Unknown action: " action)) (catch Exception e (str "
"
(exception-to-string e)
"")))]
[(flash-assoc :msg msg)
(redirect-to "/debug")])))
;; Muting
(defn mute-status [session]
(if-vip
(println session)))
(defn parse-pos-interval [time unit]
(let [t (maybe-parse-int time 0)
u (lower-case unit)]
(and (> t 0)
(#{"minute" "hour" "day"} u)
(str time " " u))))
(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))
reason (params :reason)
admin-user-id (session :user_id)]
(cond (not user_id) [400 "INVALID_NICK"]
(not interval) [400 "INVALID_INTERVAL"]
:else (do "OK")))))