X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=actions%2Ffilter.sh;h=ea0f85cc78d5d6220c08d81adaec9fde11d61688;hb=6e0b5036f4fbfe606fba8b7f69b9b34536fd568c;hp=94b87f2c7ce6036f54b4e5458cba35344bc6f313;hpb=c7e6e63b567cd68f0a9c1f12dd92b175d2f6a2a0;p=serve0 diff --git a/actions/filter.sh b/actions/filter.sh index 94b87f2..ea0f85c 100755 --- a/actions/filter.sh +++ b/actions/filter.sh @@ -1,37 +1,27 @@ #!/bin/zsh -if [ -n "${CONTENT_LENGTH}" -a "${CONTENT_LENGTH}" -gt 0 ]; then -(head -c "${CONTENT_LENGTH}"; echo)|sed 's:&:\n:g;s:\r::g' |while read line; do - case "$line" in - type[0-9]=neg) - [ -z "$filters" ] && filters="!" - [ -n "$filters" ] && egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^!" - ;; - type[0-9]=pos) - egrep -q '(^|\^|\||!)$' <<<"$filters" || filters="${filters}^" - ;; - category=*) - category="$(sed 's/^category=//;s/+/ /g;s/%/\\x/g' <<<"$line")" - category="$(echo -e "${category}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)" - ;; - filter=*) - filter="$(sed 's/^filter=//;s/+/ /g;s/%/\\x/g' <<<"$line")" - filter="$(echo -e "${filter}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)" - egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|" - filters="${filters}${filter}" - ;; - cfilter=*) - cfilter="$(sed 's/^cfilter=//;s/+/ /g;s/%/\\x/g' <<<"$line")" - cfilter="$(echo -e "${cfilter}" |sed 's/\t/ /g;s/\r//g;s/\\/\\\\/g' |head -n1)" - egrep -q '(^|\^|\||!)$' <<<"${filters}" || filters="${filters}|" - [ -n "$cfilter" ] && filters="${filters}${category}:${cfilter}" - ;; - o=Name) order=Name;; - o=Date) order=Date;; - o=Length) order=Length;; - esac +cgi_post +order="$_POST[\"o\"]" + +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)" + + 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="$(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)) + done done -fi echo "?o=${order}&f=${filters}" >>${_DATA}/meta/recent echo -n "Location: ?o=${order}&f=${filters}\n\n"