s4
changeset 827:97be0474f268
List belonging groups
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Sun, 21 Jun 2020 16:13:52 +0900 |
parents | f2d69fb3e038 |
children | 476a70f667cf |
files | s4-funcs.sh s4-world.sh |
diffstat | 2 files changed, 33 insertions(+), 16 deletions(-) [+] |
line diff
1.1 --- a/s4-funcs.sh Sun Jun 21 10:08:12 2020 +0900 1.2 +++ b/s4-funcs.sh Sun Jun 21 16:13:52 2020 +0900 1.3 @@ -2390,7 +2390,7 @@ 1.4 echo '</table>' 1.5 done 1.6 if [ -n "$S4WORLDLIST" -a -n "$3" ]; then 1.7 - peekgrpworlds mem="$3" 1.8 + peekgrpworlds mem:"$3" 1.9 fi 1.10 echo '</div>' 1.11 } 1.12 @@ -2448,7 +2448,22 @@ 1.13 fi 1.14 if [ -n "$2" ]; then 1.15 kwd=`echo $2 | tr -d '";\n' | tr -d "'"` 1.16 - cond1="(nick like '%${kwd}%' or b.name like '%${kwd}%')" 1.17 + case "$kwd" in 1.18 + mem:*) 1.19 + byuser=${kwd#*mem:} 1.20 + cond1="(a.gname IN (SELECT gname FROM grp_mem WHERE user='$byuser'))" 1.21 + err cond1=$cond1 1.22 + ;; 1.23 + esac 1.24 + if [ x"$1" = x"group" ]; then 1.25 + if [ -n "$cond1" ]; then 1.26 + enthead="`gecos "$byuser"|htmlescape` さんの所属" 1.27 + else 1.28 + cond1="(b.name like '%${kwd}%')" 1.29 + fi 1.30 + else 1.31 + cond1="(nick like '%${kwd}%' or b.name like '%${kwd}%')" 1.32 + fi 1.33 fi 1.34 tag=`getpar tag` tag2=`getpar tag2` 1.35 if [ x"$tag" = x"NULL" ]; then 1.36 @@ -2517,7 +2532,7 @@ 1.37 # Note that mtime is stored only in grp_s. 1.38 ## err LE:sql.1="$sql" 1.39 total=`query "with x as ($sql) select count(*) from x;"` 1.40 - echo "${entity} 一覧" "${S4WORLDNAME:+@$S4WORLDNAME}" | html h2 1.41 + echo "$enthead${entity} 一覧" "${S4WORLDNAME:+@$S4WORLDNAME}" | html h2 1.42 echo '<div class="listentry">' # List-entry div 1.43 # Show owner/member filter button 1.44 METHOD=GET 1.45 @@ -2634,7 +2649,7 @@ 1.46 echo "</div>" # End of List-entry div 1.47 echo ${pnbtn:+"<hr>$nextbtn$prevbtn"} 1.48 if [ -n "$kwd" -a x"$tbl" = x"grp" -a -n "$S4WORLDS" ]; then 1.49 - peekgrpworlds kwd="$kwd" 1.50 + peekgrpworlds "$kwd" 1.51 fi 1.52 ) 1.53 listmember() {
2.1 --- a/s4-world.sh Sun Jun 21 10:08:12 2020 +0900 2.2 +++ b/s4-world.sh Sun Jun 21 16:13:52 2020 +0900 2.3 @@ -183,11 +183,21 @@ 2.4 } 2.5 2.6 grepgrpworld() ( 2.7 - world=$1; wname=$2; kwd=$3; db=$4 cond=$5 2.8 + world=$1; wname=$2; exp=$3; db=$4 2.9 case $world in 2.10 - Base) cgi=`basename ${S4MASTERURL:-$URL}` ;; 2.11 + Base) cgi=${S4MASTERURL:-$URL} ;; 2.12 *) cgi=s4-world-$world$cgiext ;; 2.13 esac 2.14 + arg=${3#*:} 2.15 + case $exp in 2.16 + kwd:*) cond="gname LIKE '%$arg%'" 2.17 + guide="`echo $arg|htmlescape` を含むグループは別世界にもあります" 2.18 + s="(<a href=\"$cgi?stage=grps&kwd=$arg\">絞込</a>)" ;; 2.19 + mem:*) cond="user = '$arg'" 2.20 + guide="別世界の所属グループ" 2.21 + s="(<a href=\"$cgi?stage=grps&kwd=mem:$arg\">所属絞</a>)" ;; 2.22 + esac 2.23 + err "arg=[$arg] cond=[$cond] s=[$s]" 2.24 query <<-EOF | 2.25 ATTACH DATABASE "$db" AS td; 2.26 SELECT DISTINCT td.grp.rowid,hex(gname) 2.27 @@ -204,7 +214,6 @@ 2.28 if [ -n "$ans" ]; then 2.29 w=`echo $wname|htmlescape` 2.30 u="<a href=\"$cgi?grps\"><span class=\"pre\">$w</span></a>" 2.31 - s="(<a href=\"$cgi?stage=grps&kwd=$kwd\">絞込</a>)" 2.32 cat<<-EOF 2.33 <tr> 2.34 <tr><td>$u $s</td> 2.35 @@ -216,20 +225,13 @@ 2.36 ) 2.37 2.38 peekgrpworlds() ( 2.39 - # $1=(kwd=Pattern|mem=User) 2.40 - arg=${1#*=} 2.41 - case $1 in 2.42 - kwd=*) cond="gname LIKE '%$arg%'" 2.43 - guide="`echo $arg|htmlescape` を含むグループは別世界にもあります" ;; 2.44 - mem=*) cond="user = '$arg'" 2.45 - guide="別世界の所属グループ";; 2.46 - esac 2.47 + # $1=(kwd:Pattern|mem:User) 2.48 for wd in `worldnameDBlist`; do 2.49 world=${wd%%:*}; wd=${wd#*:} 2.50 worldname=${wd%:*} 2.51 d=${wd#*:} 2.52 if [ ! $db -ef $d -a -s $d ]; then 2.53 - grepgrpworld "$world" "$worldname" "$arg" "$d" "$cond" 2.54 + grepgrpworld "$world" "$worldname" "$1" "$d" 2.55 fi 2.56 done | { 2.57 result=`cat`