# HG changeset patch # User HIROSE Yuuji # Date 1437538446 -32400 # Node ID 54dba4c5e61d3df0fee664de9deabf297ca2629b # Parent 28002403556634889b9dba4a010f4c3b05f6d430 Use group-id, not gname diff -r 280024035566 -r 54dba4c5e61d s4-funcs.sh --- a/s4-funcs.sh Wed Jul 22 09:38:28 2015 +0900 +++ b/s4-funcs.sh Wed Jul 22 13:14:06 2015 +0900 @@ -509,8 +509,8 @@ fi done pk=`gettblpkey $1` -# key=`sq $db "select $pk from $1 where rowid=$3"` key=`query "select $pk from $1 where rowid=$3;"` + getkey="(select $pk from $1 where rowid=$3)" ### err "select $pk from $1 where rowid=$3" - key=$key '$4(tmp)'=$4 for kt in s m; do td=${4:-$tmpd} @@ -519,10 +519,9 @@ for c in `gettbl_${kt}_cols $1`; do vcount=1 # count(val) if [ x"$2" = x"$c" ]; then - cond="$t where $pk=\"$key\" and key=\"$c\"" - ###val=`query "select val from $cond;"` + #### cond="$t where $pk=\"$key\" and key=\"$c\"" #2015-07-22 + cond="$t where $pk=$getkey and key=\"$c\"" val=`query "select val from $cond limit 1;"` - ###type=`query "select type from $cond;"` type=`query "select type from $cond limit 1;"` if [ $kt = m ]; then ###vcount=`sq $db "select count(val) from $cond"` @@ -1202,7 +1201,7 @@ # $1=user/group $2=SearchKeyword $3=condition(if any) # Referring variable $iamowner=$grp to attach owner-request links err listentry: \$1=$1 \$2=$2 \$3=$3 - cond= + cond='' offset=`getpar offset` offset=${offset%%[!0-9]*} offset=$((offset + 0)) # change to numeric forcibly @@ -1213,10 +1212,12 @@ hrb="$myname?home" deficon=person-default.png entity="ユーザ" tbl=user link=rowid nm=name stage=mems + gcs=gecos else # if group hrb="$myname?grp" deficon=group-default.png entity="グループ" tbl=grp link=rowid nm=gname stage=grps + gcs=name tagline=`grep :tag: $formdir/grp.def|cut -d: -f5-` if [ -n "$tagline" ]; then tagconv=`echo $tagline|sed 's/\([^= :]*\)=\([^= :]*\)/-D\2=\1/g'` @@ -1232,11 +1233,14 @@ fi # XX: これ複雑すぎるかな。もっとシンプルにしたい。$3条件も。2015-07-08 - qgrp=`sqlquote $grp` - qgrp=${qgrp:-'""'} - sql="select a.rowid, a.$link, coalesce(b.gecos, a.$nm) as nick, b.tag, + # grpは呼出し元の動的スコープ変数でよくないな... + ##qgrp=`sqlquote $grp` + getgrp="(select gname from grp where rowid=${rowid:--1})" + sql="select a.rowid, a.$link, coalesce(b.$gcs, a.$nm) as nick, + coalesce(b.gecos, a.$nm) as name, + b.tag, case when a.$nm in (select user from grp_adm - where gname=$qgrp) then '(管理者)' -- from group mode + where gname=$getgrp) then '(管理者)' -- from group mode when '$user' in (select user from grp_adm where gname=a.$nm) then '(ADMIN)' when '$iamowner' = '' then '' @@ -1260,7 +1264,7 @@ echo '' fi cat<${total}件中の${offset}件めから${kwd:+" - 検索語: $kwd"}

+

${total}件中の$((offset+1))件めから${kwd:+" - 検索語: $kwd"}

EOF if [ $((offset+limit)) -lt $total ]; then cat<$name${ownerp:+
$ownerp}" echo "" @@ -1307,18 +1311,17 @@ listgroup() { listentry group "$@" } -showgroup() { - grp=$1 -err showgroup1: grp=$grp qgrp="[$(sqlquote $grp)]" +showgroup() { # $1=group-rowid gname=`getpar gname` if [ -n "$gname" ]; then err UPdating/Removing of group::::::: par2table $formdir/grp.def fi + grp=`getgroupbyid $1` err showgroup2: grp=$grp qgrp="[$(sqlquote $grp)]" if isgroup "$grp"; then - showgroupsub $formdir/grp.def "$grp" | \ + showgroupsub $formdir/grp.def "$1" | \ m4 -D_TITLE_="グループ $grp" \ -D_FORM_="syscmd(\`cat')" \ -D_DUMPTABLE_="" \ @@ -1328,21 +1331,22 @@ fi } showgroupsub() { - # $1=def-file $2=group - grp=$2 + # $1=def-file $2=group-rowid + rowid=$2 + grp=`getgroupbyid $2` qgrp=`sqlquote $grp` - rowid=`sq $db "select rowid from grp where gname=$qgrp"` + #rowid=`sq $db "select rowid from grp where gname=$qgrp"` if [ -z "$rowid" ]; then - rowid=`sq $db "select rowid from grp where rowid=$grp"` - grp=`sq $db "select gname from grp where rowid=$grp"` + #rowid=`sq $db "select rowid from grp where rowid=$grp"` + #grp=`sq $db "select gname from grp where rowid=$grp"` + echo "

showgroupsub: invalid argument($1 $2)

"; return fi - mmgrp=`echo "$grp"|nkf -Ww -MQ|tr '=' '%'` val=`getvalbyid grp profimg $rowid $tmpd` # 6/14の次グループのHOMEで出す情報を作る Done viewtable $1 grp $rowid if isgrpowner "$user" "$grp"; then echo "

グループ情報の編集" - iamowner=$grp + iamowner=$rowid fi if ismember "$user" "$grp"; then echo "${iamowner:+ / }グループの新規話題作成

" @@ -1387,7 +1391,7 @@ 同じでよい場合は空欄に) `cgi_text email $eml` -`cgi_hidden grp $grp` +`cgi_hidden grp $rowid` EOF echo '' echo '

話題一覧

' @@ -1399,8 +1403,9 @@ DT_CHLD=article:blogid \ DT_VIEW=replyblog dumptable html blog 'ctime title heading' "$cond" - c="group by b.name having b.name in (select user from grp_mem where gname='$grp')" - cm="?commission+$mmgrp" + getgname="(select gname from grp where rowid=$rowid)" + c="group by b.name having b.name in (select user from grp_mem where gname=$getgname)" + cm="?commission+$rowid" thumbxy=50x50 listmember "" "$c" \ |sed -e "s|\(
\),not=\(.*\)|\1管理者委託|" } @@ -1444,26 +1449,27 @@ return fi fi - cond="where gname='$1' and user='$2'" + qgname=`sqlquote $1` + cond="where gname=$qgname and user='$2'" if [ x"$3" = x"yes" ]; then - query "replace into grp_mem values('$1', '$2');" + query "replace into grp_mem values($qgname, '$2');" if [ -n "$4" ]; then if msg=`emaildomaincheck "$4"`; then -err "replace into grp_mem_s values('$1', '$user', 'email', \ +err "replace into grp_mem_s values($qgname, '$user', 'email', \ 'string', '$4', NULL);" - query "replace into grp_mem_s values('$1', '$user', 'email', \ + query "replace into grp_mem_s values($qgname, '$user', 'email', \ 'string', '$4', NULL);" if [ -n "$5" ]; then # as ADMIN # Coming here means newly created group sql="select case\ - when (select count(*) from grp_mem where gname='$1')=1\ + when (select count(*) from grp_mem where gname=$qgname)=1\ then (select user from grp_mem\ - where gname='$1' and user='$user')\ + where gname=$qgname and user='$user')\ else '' end;" err NewGrpChk: $sql if [ -n "`query \"$sql\"`" ]; then - err ADMIN: "replace into grp_adm values('$1', '$user');" - query "replace into grp_adm values('$1', '$user');" + err ADMIN: "replace into grp_adm values($qgname, '$user');" + query "replace into grp_adm values($qgname, '$user');" fi fi else @@ -1479,21 +1485,26 @@ fi } grp_reg_adm() { - # $1=grp $2=user-rowid - if ! isgrpowner $user $1; then - echo "

$1 グループの管理者しかこの操作はできません。"; return + # $1=grp-rowid $2=user-rowid + grp=`getgroupbyid "$1"` + if [ -z "$grp" ]; then + echo "

無効なグループIDです

"; return + fi + if ! isgrpowner $user "$grp"; then + echo "

$grp グループの管理者しかこの操作はできません。"; return fi newadm=`query "select name from user where rowid=$2;"` if [ -z "$newadm" ]; then echo "

指定ユーザIDがおかしいようです。

"; return fi -err GRP_reg_adm: "replace into grp_adm values('$1', '$newadm');" -err ismember $newadm $1 - if ismember $newadm $1; then +err GRP_reg_adm: "replace into grp_adm values(`sqlquote $grp`, '$newadm');" +err ismember $newadm $grp + if ismember $newadm $grp; then # OK, go ahead - query "replace into grp_adm values('$1', '$newadm');" + getgname="(select gname from grp where rowid=$1)" + query "replace into grp_adm values($getgname, '$newadm');" # confirm insertion - sql="select * from grp_adm where gname='$1' and user='$newadm'" + sql="select * from grp_adm where gname=$getgname and user='$newadm'" if [ -n "`query \"$sql;\"`" ]; then echo "

追加完了

" else @@ -1821,6 +1832,8 @@ form="" val="" if [ -n "$rowid" ]; then val=`getvalbyid $2 $name $rowid $tmpd` +err genform3a: getvalbyid $2 $name $rowid $tmpd +err genform3b: val="[$val]" fi if [ -n "$GF_VIEWONLY" ]; then is_hidden "$2" "$name" && continue