X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=actions%2Ffilter.sh;h=c7f4d87fd8aba5e3125866735a397d07fc33f6b0;hb=be2bfa17d3c7b2ed13c01ee42f54bd614cbbe3e9;hp=32f867daf826ba1e4c72aff97b7c09a8560db66c;hpb=252fa28d9cbb6c82562b0b21bf1e377ca407351a;p=serve0 diff --git a/actions/filter.sh b/actions/filter.sh index 32f867d..c7f4d87 100755 --- a/actions/filter.sh +++ b/actions/filter.sh @@ -1,33 +1,24 @@ #!/bin/zsh cgi_post -order="$_POST[\"o\"]" +order=$(validate "${_POST[o]}" 'Name|Length|Date' Name) for fn in {0..9}; do - type="$_POST[\"type${fn}\"]" - category="$(echo "$_POST[\"category${fn}\"]" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)" + category="$(validate "${_POST[category$fn]}" '[[:alnum:]_-]+' none)" - if [ "$type" = "neg" ]; then - [ -z "$filters" ] && filters="!" - [ -n "$filters" ] && egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^!" - elif [ "$type" = "pos" ]; then - egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^" - fi + n=''; while [ -n "${_POST[cfilter${fn}_$n]}" ]; do + cfilter="$(validate "${_POST[cfilter${fn}_$n]}" '[[:alnum:]\?!\._=\(\)+-]+' '#')" - n='' - while [ -n "$_POST[\"filter${fn}_$n\"]" ]; do - filter="$(echo "$_POST[\"filter${fn}_$n\"]" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)" - egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|" - filters="${filters}${filter}" - [ -z "$n" ] && n=0 || n=$(($n + 1)) - done - - n='' - while [ -n "$_POST[\"cfilter${fn}_$n\"]" ]; do - cfilter="$(echo "$_POST[\"cfilter${fn}_$n\"]" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)" - egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|" - filters="${filters}${category}:${cfilter}" - [ -z "$n" ] && n=0 || n=$(($n + 1)) + if [ -z "$n" ]; then + [ -n "$filters" ] && filters="${filters}^" + [ "${_POST[type$fn]}" = 'neg' ] && filters="${filters}!" + n=0 + else + filters="${filters}|" + n=$(($n + 1)) + fi + [ "$category" = "none" ] && filters="${filters}${cfilter}" \ + || filters="${filters}${category}:${cfilter}" done done