Mercurial > hgrepos > hgweb.cgi > s4
diff s4-world.sh @ 825:e9817a71f332
List groups in other worlds
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Sun, 21 Jun 2020 09:50:32 +0900 |
parents | e64d18e78507 |
children | f2d69fb3e038 |
line wrap: on
line diff
--- a/s4-world.sh Sat Jun 20 18:18:17 2020 +0900 +++ b/s4-world.sh Sun Jun 21 09:50:32 2020 +0900 @@ -164,3 +164,76 @@ EOF return $rc } + +getworldDB() { # $1=conf + (unset DB; . "$1"; echo ${DB:-$defaultdb}) +} + +worldnameDBlist() { + echo Base:Base:`getworldDB ./s4-config.sh` + for w in $S4WORLDLIST; do + case "$w" in + *:*:*:*) continue ;; + *:*:*) w=${w%:*}; name=${w%:*}; world=${w#*:} ;; + *) continue ;; + esac + d=`getworldDB "./s4-config-$world.sh"` + test -s "$d" && echo ${world}:${name}:$d + done +} + +grepgrpworld() ( + world=$1; wname=$2; kwd=$3; db=$4 cond=$5 + case $world in + Base) cgi=`basename ${S4MASTERURL:-$URL}` ;; + *) cgi=s4-world-$world$cgiext ;; + esac + query <<-EOF | + ATTACH DATABASE "$db" AS td; + SELECT DISTINCT td.grp.rowid,hex(gname) + FROM td.grp NATURAL JOIN td.grp_mem + WHERE $cond; + DETACH DATABASE td; + EOF + while IFS='|' read rowid hgname; do + # echo rowid=$rowid - `echo "$hgname"|unhexize|htmlescape` + htmlgn=`echo $hgname|unhexize|htmlescape` + printf '<a href="%s?grp+%d">%s</a> ' "$cgi" "$rowid" "$htmlgn" + done | { + read ans + if [ -n "$ans" ]; then + w=`echo $wname|htmlescape` + cat<<-EOF + <tr> + <tr><td><a href="$cgi?grps"><span class="pre">$w</span></a></td> + <td>$ans</td> + </dl> + EOF + fi + } +) + +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 + for wd in `worldnameDBlist`; do + world=${wd%%:*}; wd=${wd#*:} + worldname=${wd%:*} + d=${wd#*:} + if [ ! $db -ef $d -a -s $d ]; then + grepgrpworld "$world" "$worldname" "$1" "$d" "$cond" + fi + done | { + result=`cat` + if [ -n "$result" ]; then + echo "<h2>$guide</h2>" + echo "<table class=\"b\">$nl $result$nl</table>" + fi + } +)