X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=actions%2Ffilter.sh;h=f5057bea390c72445f5fb7e8accc03f29874852f;hb=d716f2ce1fe64cf87f777490315bc51906001c72;hp=32f867daf826ba1e4c72aff97b7c09a8560db66c;hpb=252fa28d9cbb6c82562b0b21bf1e377ca407351a;p=serve0 diff --git a/actions/filter.sh b/actions/filter.sh index 32f867d..f5057be 100755 --- a/actions/filter.sh +++ b/actions/filter.sh @@ -1,35 +1,42 @@ #!/bin/zsh +# Copyright 2014 - 2016 Paul Hänsch +# +# This file is part of Serve0 +# +# Serve0 is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Serve0 is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Serve0 If not, see . -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:]\?!\._=\(\)+-]+' '#')" + cfilter="${_POST[cfilter${fn}_$n]}" - 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 -echo "?o=${order}&f=${filters}" >>${_DATA}/meta/recent -echo -n "Location: ?o=${order}&f=${filters}\n\n" +printf %s\\n "?o=${order}&f=${filters}" >>${_DATA}/meta/recent +redirect "?o=${order}&f=${filters}"