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`