# 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