# HG changeset patch # User HIROSE Yuuji # Date 1592723632 -32400 # Node ID 97be0474f268f618dc9d5e83b3832811b9b2567f # Parent f2d69fb3e03865d46d1e0001bf65ee8a8cbc230d List belonging groups diff -r f2d69fb3e038 -r 97be0474f268 s4-funcs.sh --- a/s4-funcs.sh Sun Jun 21 10:08:12 2020 +0900 +++ b/s4-funcs.sh Sun Jun 21 16:13:52 2020 +0900 @@ -2390,7 +2390,7 @@ echo '' done if [ -n "$S4WORLDLIST" -a -n "$3" ]; then - peekgrpworlds mem="$3" + peekgrpworlds mem:"$3" fi echo '' } @@ -2448,7 +2448,22 @@ fi if [ -n "$2" ]; then kwd=`echo $2 | tr -d '";\n' | tr -d "'"` - cond1="(nick like '%${kwd}%' or b.name like '%${kwd}%')" + case "$kwd" in + mem:*) + byuser=${kwd#*mem:} + cond1="(a.gname IN (SELECT gname FROM grp_mem WHERE user='$byuser'))" + err cond1=$cond1 + ;; + esac + if [ x"$1" = x"group" ]; then + if [ -n "$cond1" ]; then + enthead="`gecos "$byuser"|htmlescape` さんの所属" + else + cond1="(b.name like '%${kwd}%')" + fi + else + cond1="(nick like '%${kwd}%' or b.name like '%${kwd}%')" + fi fi tag=`getpar tag` tag2=`getpar tag2` if [ x"$tag" = x"NULL" ]; then @@ -2517,7 +2532,7 @@ # Note that mtime is stored only in grp_s. ## err LE:sql.1="$sql" total=`query "with x as ($sql) select count(*) from x;"` - echo "${entity} 一覧" "${S4WORLDNAME:+@$S4WORLDNAME}" | html h2 + echo "$enthead${entity} 一覧" "${S4WORLDNAME:+@$S4WORLDNAME}" | html h2 echo '
' # List-entry div # Show owner/member filter button METHOD=GET @@ -2634,7 +2649,7 @@ echo "
" # End of List-entry div echo ${pnbtn:+"
$nextbtn$prevbtn"} if [ -n "$kwd" -a x"$tbl" = x"grp" -a -n "$S4WORLDS" ]; then - peekgrpworlds kwd="$kwd" + peekgrpworlds "$kwd" fi ) listmember() { diff -r f2d69fb3e038 -r 97be0474f268 s4-world.sh --- a/s4-world.sh Sun Jun 21 10:08:12 2020 +0900 +++ b/s4-world.sh Sun Jun 21 16:13:52 2020 +0900 @@ -183,11 +183,21 @@ } grepgrpworld() ( - world=$1; wname=$2; kwd=$3; db=$4 cond=$5 + world=$1; wname=$2; exp=$3; db=$4 case $world in - Base) cgi=`basename ${S4MASTERURL:-$URL}` ;; + Base) cgi=${S4MASTERURL:-$URL} ;; *) cgi=s4-world-$world$cgiext ;; esac + arg=${3#*:} + case $exp in + kwd:*) cond="gname LIKE '%$arg%'" + guide="`echo $arg|htmlescape` を含むグループは別世界にもあります" + s="(絞込)" ;; + mem:*) cond="user = '$arg'" + guide="別世界の所属グループ" + s="(所属絞)" ;; + esac + err "arg=[$arg] cond=[$cond] s=[$s]" query <<-EOF | ATTACH DATABASE "$db" AS td; SELECT DISTINCT td.grp.rowid,hex(gname) @@ -204,7 +214,6 @@ if [ -n "$ans" ]; then w=`echo $wname|htmlescape` u="$w" - s="(絞込)" cat<<-EOF $u $s @@ -216,20 +225,13 @@ ) peekgrpworlds() ( - # $1=(kwd=Pattern|mem=User) - arg=${1#*=} - case $1 in - kwd=*) cond="gname LIKE '%$arg%'" - guide="`echo $arg|htmlescape` を含むグループは別世界にもあります" ;; - mem=*) cond="user = '$arg'" - guide="別世界の所属グループ";; - esac + # $1=(kwd:Pattern|mem:User) for wd in `worldnameDBlist`; do world=${wd%%:*}; wd=${wd#*:} worldname=${wd%:*} d=${wd#*:} if [ ! $db -ef $d -a -s $d ]; then - grepgrpworld "$world" "$worldname" "$arg" "$d" "$cond" + grepgrpworld "$world" "$worldname" "$1" "$d" fi done | { result=`cat`