]> git.plutz.net Git - serve0/blob - actions/filter.sh
use new cgi engine for filter processing
[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[\"filter${fn}_$n\"]" ]; do
19     filter="$(echo "$_POST[\"filter${fn}_$n\"]" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)"
20     egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|"
21     filters="${filters}${filter}"
22     [ -z "$n" ] && n=0 || n=$(($n + 1))
23   done
24
25   n=''
26   while [ -n "$_POST[\"cfilter${fn}_$n\"]" ]; do
27     cfilter="$(echo "$_POST[\"cfilter${fn}_$n\"]" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)"
28     egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|"
29     filters="${filters}${category}:${cfilter}"
30     [ -z "$n" ] && n=0 || n=$(($n + 1))
31   done
32 done
33
34 echo "?o=${order}&f=${filters}" >>${_DATA}/meta/recent
35 echo -n "Location: ?o=${order}&f=${filters}\n\n"