diff options
| -rw-r--r-- | src/site.clj | 61 |
1 files changed, 29 insertions, 32 deletions
diff --git a/src/site.clj b/src/site.clj index eb6d153..9759462 100644 --- a/src/site.clj +++ b/src/site.clj @@ -118,7 +118,7 @@ (defn add-message [msg room] (alter (room :messages) (swap cons) msg)) -;; Output +;; Logging ; is there a better way to do this or am i insane for introducing state? just wanna do ; (let [log (debug-log)] @@ -144,22 +144,11 @@ (.add log log-string) ret))))) -;(defn log-time [log f & args] -; (let [start (.getTime (new Date))] -; (let [ret (apply f args)] -; (log (str f ": " (- (.getTime (new Date)) start) " msecs" )) -; ret))) - +;; Output (defn strip-empty-vals [m] (into {} (filter (fn [[k v]] (non-empty-string? v)) m))) -(defn name-if-possible [x] - (if - (or (keyword? x) (symbol? x)) - (name x) - (str x))) - (declare stringify-and-escape) (defn escape-html-deep [o] (if (map? o) @@ -201,6 +190,7 @@ (let [m {"users" (prepare-user-list room) "messages" (map process-message-for-json (new-messages room since))} + topic @(room :topic)] (if topic (assoc m "topic" topic) @@ -244,6 +234,7 @@ LIMIT ? OFFSET ?")] (do-select [query nick *dumps-per-page* offset])))) + (defn fetch-public-message-by-id [id] (let [query (str "SELECT m.content, m.created_on, m.user_id, u.nick, u.avatar FROM messages m, users u, rooms r @@ -290,10 +281,10 @@ (defn session-assoc-from-db [user-info] (session-assoc :user_id (user-info :user_id) - :nick (user-info :nick) - :is_admin (user-info :is_admin) - :avatar (user-info :avatar) - :password_login true)) + :nick (user-info :nick) + :is_admin (user-info :is_admin) + :avatar (user-info :avatar) + :password_login true)) ;; login-token functions @@ -376,16 +367,17 @@ (defn profile [session profile-nick offset] (if-let [user-info (fetch-nick profile-nick)] - (let [nick (session :nick) + (let [st (fetch-template "profile" session) + nick (session :nick) logger (make-time-logger) is-home (and nick (= nick profile-nick)) has-avatar (non-empty-string? (user-info :avatar)) offset (maybe-parse-int offset 0) dump-offset (* offset *dumps-per-page*) - dumps (fetch-messages-by-nick profile-nick true dump-offset) - dump-count (logger count-messages-by-nick profile-nick true) - st (fetch-template "profile" session) - dumps (to-array (map process-message-for-output dumps))] + raw-dumps (logger tags/fetch-dumps-by-nick profile-nick true (+ 1 *dumps-per-page*) dump-offset) + dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session)) + dumps (map tags/remove-tags-for-output dumps) + dumps (logger doall (map process-message-for-output dumps))] (do (.setAttribute st "is_home" is-home) (doseq [a [:nick :avatar :contact :bio]] @@ -394,7 +386,7 @@ (if (non-empty-string? v) (escape-html v))))) (if (> (count dumps) 0) (.setAttribute st "dumps" dumps)) - (if (< (+ dump-offset *dumps-per-page*) dump-count) + (if (> (count raw-dumps) *dumps-per-page*) (.setAttribute st "next" (inc offset))) (if (not= offset 0) (.setAttribute st "prev" (max (dec offset) 0))) @@ -402,7 +394,6 @@ (.toString st))) (resp-error "NO_USER"))) - (defn update-user-db [user-id attr val] (with-connection *db* (update-values "users" ["user_id = ?" user-id] {attr val}))) @@ -577,10 +568,10 @@ (let [now (System/currentTimeMillis) nick (session :nick) st (fetch-template template session) - message-list (to-array - (map process-message-for-output - ; TODO: remove db query - (reverse (fetch-messages-by-room (room :room_id) false))))] + ; TODO: remove db query + message-list (reverse (tags/fetch-dumps-by-room (room :room_id) false)) + message-list (map tags/add-favorited-flag message-list (repeat session)) + message-list (to-array (map process-message-for-output message-list))] (if nick (dosync (login-user (user-struct-from-session session) room))) @@ -696,10 +687,10 @@ dump-offset (* offset *dumps-per-page*) image-only (and (not (room :admin_only)) (not= (params :show) "all")) - raw-dumps (logger tags/fetch-messages-with-tags-by-room (room :room_id) image-only (+ 1 *dumps-per-page*) dump-offset) + raw-dumps (logger tags/fetch-dumps-by-room (room :room_id) image-only (+ 1 *dumps-per-page*) dump-offset) dumps (map tags/add-favorited-flag (take *dumps-per-page* raw-dumps) (repeat session)) - json-tags (for [dump dumps :when (not (empty? (dump :tags)))] - (json-str {"id" (dump :message_id) "tags" (dump :tags) })) +;; json-tags (for [dump dumps :when (not (empty? (dump :tags)))] +;; (json-str {"id" (dump :message_id) "tags" (dump :tags) })) dumps (map tags/remove-tags-for-output dumps) dumps (logger doall (map process-message-for-output dumps))] (if (> (count raw-dumps) *dumps-per-page*) @@ -707,7 +698,7 @@ (if (not= offset 0) (.setAttribute st "prev" (max (dec offset) 0))) (.setAttribute st "dumps" dumps) - (.setAttribute st "json_tags" json-tags) +;; (.setAttribute st "json_tags" json-tags) (.setAttribute st "roomkey" (room :key)) (.setAttribute st "roomname" (room :name)) (.setAttribute st "debug_log_items" (logger)) @@ -845,6 +836,10 @@ (GET "/favicon.ico" (serve-static "static" "favicon.ico")) (GET "/u/:nick" (profile session (params :nick) "0")) (GET "/u/:nick/" (profile session (params :nick) "0")) + (GET "/u/:nick/tag/:tag" ("nuthin yet")) + (GET "/u/:nick/tag/:tag/:offset" ("nuthin yet")) + (GET "/u/:nick/favorites" ("nuthin yet")) + (GET "/u/:nick/favorites/:offset" ("nuthing yet")) (GET "/u/:nick/:offset" (profile session (params :nick) (params :offset))) @@ -857,6 +852,8 @@ (GET "/chat/:t" (no-cache (validated-chat session "dumpfm" (-> request :route-params :t)))) (GET "/browser" (browser session)) (GET "/refresh" (validated-refresh session params)) + (GET "/tag/:tag" ("nuthin yet")) + (GET "/tag/:tag/:offset" ("nuthin yet")) (POST "/cmd/tag/add" (validated-add-tag session params)) (POST "/cmd/tag/rm" (validated-remove-tag session params)) (GET "/log" (validated-log session "dumpfm" "0" params)) |
