X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=actions%2Ffilter.sh;h=c7f4d87fd8aba5e3125866735a397d07fc33f6b0;hb=be2bfa17d3c7b2ed13c01ee42f54bd614cbbe3e9;hp=ea0f85cc78d5d6220c08d81adaec9fde11d61688;hpb=16a8c233e95c6bd55ac52a6fa95c0ab25c9ff113;p=serve0 diff --git a/actions/filter.sh b/actions/filter.sh index ea0f85c..c7f4d87 100755 --- a/actions/filter.sh +++ b/actions/filter.sh @@ -1,25 +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[\"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}|" - [ "$category" = "none" ] && filters="${filters}${cfilter}" || 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