]> git.plutz.net Git - serve0/blob - actions/filter.sh
cleaner filter builder
[serve0] / actions / filter.sh
1 #!/bin/zsh
2
3 cgi_post
4 order=$(validate "${_POST[o]}" 'Name|Length|Date' Name)
5
6 for fn in {0..9}; do
7   category="$(validate "${_POST[category$fn]}" '[[:alnum:]_-]+' none)"
8
9   n=''; while [ -n "${_POST[cfilter${fn}_$n]}" ]; do
10     cfilter="$(validate "${_POST[cfilter${fn}_$n]}" '[[:alnum:]\?!\._=\(\)+-]+' '#')"
11
12     if [ -z "$n" ]; then
13       [ -n "$filters" ] && filters="${filters}^"
14       [ "${_POST[type$fn]}" = 'neg' ] && filters="${filters}!"
15       n=0
16     else
17       filters="${filters}|"
18       n=$(($n + 1))
19     fi
20     [ "$category" = "none" ] && filters="${filters}${cfilter}" \
21                              || filters="${filters}${category}:${cfilter}"
22   done
23 done
24
25 echo "?o=${order}&f=${filters}" >>${_DATA}/meta/recent
26 echo -n "Location: ?o=${order}&f=${filters}\n\n"