diff options
| author | Scott Ostler <scottbot9000@gmail.com> | 2010-06-11 15:07:55 -0400 |
|---|---|---|
| committer | Scott Ostler <scottbot9000@gmail.com> | 2010-06-11 15:07:55 -0400 |
| commit | 28edab64f0553e9218cd211d797160da12db2abf (patch) | |
| tree | d6b99f7ba8ac1977c45ce0e419847a035710ee4a /src | |
| parent | 378ba01ba8a4b67fb5d01dd5adc57fb72e3c86a5 (diff) | |
| parent | a5076000b758641d459a301b3d0155fdf4c3a76c (diff) | |
Merge branch 'master' of ssh://dump.fm/pichat/repo
Diffstat (limited to 'src')
| -rw-r--r-- | src/site.clj | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/site.clj b/src/site.clj index a476638..55bc0f0 100644 --- a/src/site.clj +++ b/src/site.clj @@ -793,22 +793,24 @@ FROM users u favs (reduce (fn [m fav] (assoc m (str (fav :message_id)) (fav :content))) {} raw-favs)] (str "RawFavs=" (json-str favs)))) -(defn ghetto-search-query [] +(defn ghetto-search-query [num-tokens] (str "select content from messages, rooms where messages.room_id=rooms.room_id - and content ilike ? and content like '%http://%' + and content ilike " (str-join " and content ilike " (take num-tokens (repeat "?"))) " + and content like '%http://%' and admin_only = 'f' order by message_id desc limit 250;")) -(def *ghetto-search-regex* #"^[A-Za-z0-9\-_]*$") +(def *ghetto-search-regex* #"^[A-Za-z0-9\-_.+]*$") -(defn json-ghetto-search [searchterm] - ( if (re-matches *ghetto-search-regex* searchterm) - (let [searchterm (str "%" searchterm "%") - query (ghetto-search-query) - rows (do-select [query searchterm])] +(defn json-ghetto-search [undecoded-url-searchterms] + ( if (re-matches *ghetto-search-regex* undecoded-url-searchterms) + (let [tokens (map url-decode (re-split #"\+" undecoded-url-searchterms)) + tokens (map #(str "%" %1 "%") tokens) + query (ghetto-search-query (count tokens)) + rows (do-select (vec (concat [query] tokens)))] (str "searchResult(" (json-str rows) ")")) (str "searchError('sorry, no fancy characters')"))) @@ -1019,7 +1021,7 @@ FROM users u (POST "/cancel-mute" (handle-cancel-mute! session params)) (GET "/profile-test/:t" (profile session "ryder" "0" (params :t))) - (GET "/cmd/ghettosearch/:searchterm" (json-ghetto-search (params :searchterm))) + (GET "/cmd/ghettosearch/:searchterm" (json-ghetto-search (undecoded-url-piece (request-url request) 2))) (GET "/search" (serve-template "search_files" session)) ;; Footer pages |
