]> git.plutz.net Git - serve0/blob - actions/filter.sh
adapted to update in shcgi
[serve0] / actions / filter.sh
1 #!/bin/zsh
2
3 cgi_post
4 order="${_POST[o]}"
5
6 for fn in {0..9}; do
7   type="${_POST[type$fn]}"
8   category="$(echo "${_POST[category$fn]}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)"
9
10   if [ "$type" = "neg" ]; then
11     [ -z "$filters" ] && filters="!"
12     [ -n "$filters" ] && egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^!"
13   elif [ "$type" = "pos" ]; then
14     egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^"
15   fi
16
17   n=''
18   while [ -n "${_POST[cfilter${fn}_$n]}" ]; do
19     cfilter="$(echo "${_POST[cfilter${fn}_$n]}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)"
20     egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|"
21     [ "$category" = "none" ] && filters="${filters}${cfilter}" || filters="${filters}${category}:${cfilter}"
22     [ -z "$n" ] && n=0 || n=$(($n + 1))
23   done
24 done
25
26 echo "?o=${order}&f=${filters}" >>${_DATA}/meta/recent
27 echo -n "Location: ?o=${order}&f=${filters}\n\n"