diff --git a/mpsplit.rb b/mpsplit.rb index 19827fd..fee11c5 100755 --- a/mpsplit.rb +++ b/mpsplit.rb @@ -24,8 +24,6 @@ printf("%s:filename=%s\n", name, fn.unpack("H*")[0]) elsif /name=(['\"]?)(.*?)\1/ =~ header v=$2 -# out=NKF::nkf("-w -MQ", body).gsub(/([^=])\n/, "\\1=0a").gsub(/=\n/, "") -# printf("%s=%s\n", v, out) printf("%s=%s\n", v, body.unpack("H*")[0]) end end diff --git a/templ/form/grp.def b/templ/form/grp.def index 6d9d00e..f2f420b 100644 --- a/templ/form/grp.def +++ b/templ/form/grp.def @@ -4,3 +4,4 @@ 所有者:owner:m:*grp_adm: プロフィール画像:profimg:m:image: メンバー:member:m:*grp_mem:maxlength="4M" +更新:mtime:s:stamp: diff --git a/y4-blog.sh b/y4-blog.sh index 2ca8202..be5f7c7 100644 --- a/y4-blog.sh +++ b/y4-blog.sh @@ -355,7 +355,7 @@ if isuser "$owner"; then subtitle="`gecos $owner` さんの話題" else - subtitle="$owner での話題" + subtitle="`gecos $owner` での話題" fi if [ -z "$title" ]; then echo "

日記番号指定が無効です。

" diff --git a/y4-funcs.sh b/y4-funcs.sh index 55ce9d4..9087ebe 100755 --- a/y4-funcs.sh +++ b/y4-funcs.sh @@ -43,6 +43,8 @@ 締切設定 一斉送信 自分の提出物リスト + getparfilename の tmpd の扱い + やっぱりs4にしようかな 7/18 ○書込著者からホームへのリンク 7/17 ○個人blogに「レポート提出用」がついたときの挙動 ○添付ファイル回収 @@ -418,7 +420,7 @@ getparfilename() { # null if type of $1 is not file (f=`query "select val from par where var='$1' and sessid='$session' and type='file' $2;"` - [ -n "$f" ] && echo $tmpdir/$f) + [ -n "$f" ] && echo $f) } sqlquote() { (v="$1" @@ -489,7 +491,7 @@ key=`query "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:-$tmpdir} + td=${4:-$tmpd} [ -d $td ] || mkdir -p $td t=${1}_$kt for c in `gettbl_${kt}_cols $1`; do @@ -945,8 +947,10 @@ getcookie case "$REQUEST_METHOD" in get|GET) s="$QUERY_STRING" ;; - post|POST) dd count=$CONTENT_LENGTH bs=1 of=$tmpf 2>/dev/null - # cat > $tmpf + post|POST) ## dd count=$CONTENT_LENGTH bs=1 of=$tmpf 2>/dev/null #slow + # cat > $tmpf # too much? + head -c $CONTENT_LENGTH > $tmpf # safe? + (echo CL=$CONTENT_LENGTH; ls -lF $tmpf) 1>&3 s="`cat tmp/stream`" tmpfiles=$tmpfiles"${tmpfiles+ }$tmpf" ;; @@ -954,8 +958,8 @@ case "$CONTENT_TYPE" in *boundary*) bndry=${CONTENT_TYPE#*boundary=} - #for us in `LC_CTYPE=C ./mpsplit.rb "$bndry" $tmpdir < $tmpf` - for us in `LC_CTYPE=C ./mpsplit.pl "$bndry" $tmpdir < $tmpf` + #for us in `LC_CTYPE=C ./mpsplit.rb "$bndry" $tmpd < $tmpf` + for us in `LC_CTYPE=C ./mpsplit.pl "$bndry" $tmpd < $tmpf` do k=${us%%\=*} #echo u=$us @@ -965,9 +969,10 @@ case "$k" in *:filename) type='file'; k=${k%:filename} - case `file --mime-type $tmpdir/$v|cut -d' ' -f2` in +(echo k=$k; ls -lF $tmpd/$v; file --mime-type $tmpd/$v) 1>&3 + case `file --mime-type $tmpd/$v|cut -d' ' -f2` in [Ii]mage/*) - mogrify -resize $maximagexy'>' $tmpdir/$v + mogrify -resize $maximagexy'>' $tmpd/$v ;; esac ;; @@ -1119,8 +1124,9 @@ and="${1:+and }" href="' -err ListGRP: query "select val from grp_s where key='tag' $and$* group by val;" - for tag in `query "select val from grp_s where key='tag' $and$* group by val;"` + sql="select val from grp_s where key='tag' $and$* group by val order by ctime desc;" +err ListGRP: query + for tag in `query "$sql"` do err ListGrp: tag=$tag tn=${tagline%%=${tag}*} @@ -1184,9 +1190,11 @@ # XX: これ複雑すぎるかな。もっとシンプルにしたい。$3条件も。2015-07-08 sql="select a.rowid, a.$link, coalesce(b.gecos, a.$nm) as nick, b.tag, - case when '$iamowner' = '' then '' - when a.$nm in (select user from grp_adm - where gname='$grp') then '(管理者)' + case when a.$nm in (select user from grp_adm + where gname='$grp') then '(管理者)' -- from group mode + when '$user' in (select user from grp_adm where gname=a.$nm) + then '(ADMIN)' + when '$iamowner' = '' then '' else ',not='||a.rowid end as ownerlink from $tbl a left join (select $nm as name, @@ -1227,7 +1235,7 @@ EOF fi - err `echo $sql\;` + err ListEntry: `echo $sql\;` query "$sql limit $limit ${offset:+offset $offset};" \ | while IFS='|' read id lnk name tag ownerp; do @@ -1254,12 +1262,21 @@ } showgroup() { grp=$1 - - showgroupsub $formdir/grp.def $grp | \ - m4 -D_TITLE_="グループ $grp" \ - -D_FORM_="syscmd(\`cat')" \ - -D_DUMPTABLE_="" \ - $layout/groupman.m4.html + + gname=`getpar gname` + if [ -n "$gname" ]; then + err REMOVING::::::: + par2table $formdir/grp.def + fi + if isgroup "$grp"; then + showgroupsub $formdir/grp.def "$grp" | \ + m4 -D_TITLE_="グループ $grp" \ + -D_FORM_="syscmd(\`cat')" \ + -D_DUMPTABLE_="" \ + $layout/groupman.m4.html + else # if $grp is removed at par2table + listgroup + fi } showgroupsub() { # $1=def-file $2=group @@ -1272,16 +1289,16 @@ val=`getvalbyid grp profimg $rowid $tmpd` # 6/14の次グループのHOMEで出す情報を作る Done viewtable $1 grp $rowid - if isgrpowner $user $grp; then + if isgrpowner "$user" "$grp"; then echo "

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

" fi # 加入ボタン + 加入者リスト err ismember $user $grp - ismember $user $grp && ismem='checked' || nomem='checked' + ismember "$user" "$grp" && ismem='checked' || nomem='checked' # このグループでの加入アドレス eml=`query "select val from grp_mem_s where gname='$2' and user='$user' \ and key='email';"` @@ -1317,10 +1334,11 @@ |sed -e "s|\(
\),not=\(.*\)|\1管理者委託|" } joingrp() { - # $1=group $2=user $3=yes/no $4=email(if any) + # $1=group $2=user $3=yes/no $4=email(if any $5=AsAdmin) err joingrp: \$1=$1 \$2=$2 \$3=$3 \$4=$4 + isgrpowner "$user" "$1" && isowner="yes" || isowner="" if [ x"$2" != x"$user" ]; then # if user is not login user - if ! isgrpowner $user $1; then + if [ -z "$isowner" ; then echo "

本人か、グループ管理者しか加入操作はできません。

" return fi @@ -1334,6 +1352,19 @@ 'string', '$4', NULL);" query "replace into grp_mem_s values('$1', '$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\ + then (select user from grp_mem\ + where gname='$1' 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');" + fi + fi else echo $msg fi @@ -1371,7 +1402,7 @@ showgroup $1 } dumptable() { - # $1=mode $2=Table $3=column-list(defaults to *) $4=conditions(if any) + # $1=mode $2=Table $3=column-list-of-*_s(defaults to *) $4=conditions(if any) # textのフィールドだけ全てダンプにしたほうがいいか # $DT_VIEW sets link # 6/17の次: editリンクじゃなくてスレッドVIEWリンクでいいんちゃう? @@ -1398,8 +1429,12 @@ substr=${dumpcollen:+"substr(val, 0, $dumpcollen)"} substr=${substr:-val} for col in ${3:-`gettbl_s_cols $2`}; do - eav=$eav${eav:+,}" max(case key when '$col' then $substr end) as $col" - scols="$scols${scols:+, }b.$col" + case $col in + *:*) col=${col%:*} as=${col#*:} ;; + *) as=${col} ;; + esac + eav=$eav${eav:+,}" max(case key when '$col' then $substr end) as $as" + scols="$scols${scols:+, }b.$as" done #case author when '$user' then a.rowid else '---' end as ID, sql="select \ @@ -1432,13 +1467,15 @@ if [ x"$tbl" = x"user" ]; then rowowner=`query "select name from $tbl where rowid=$rowid;"` elif [ x"$tbl" = x"grp" ]; then - isgrpowner $user `query "select gname from $tbl where rowid=$rowid;"` \ - && rowowner=$user + sql="select gname from $tbl where rowid=$rowid;" + ##err p2t:grp:q $sql + isgrpowner $user "`query $sql`" && rowowner=$user else rowowner=`query "select owner from $tbl where rowid=$rowid;"` rowowner=${rowowner:-`query "select author from $tbl where rowid=$rowid;"`} fi + ### err rowowner=$rowowner if [ x"$user" != x"$rowowner" ]; then echo "

他人のレコードはいじれないの

" return @@ -1528,7 +1565,7 @@ edit) case `gettbl_coltype $tbl/$origcol` in image|document|binary) - file=`getparfilename $v` + file=$tmpd/`getparfilename $v` err type=file=$file [ -z "$file" ] && continue bn=${file##*/} @@ -1568,7 +1605,7 @@ bin=NULL err partype$col=`getpartype $col "$limit"` case $ptype in - file) file=`getparfilename $col "$limit"` + file) file=$tmpd/`getparfilename $col "$limit"` err parfile-$col=$file [ -z "$file" ] && continue bin="X'"$(hexize $file)"'" @@ -1605,7 +1642,7 @@ fi ;; esac - #err "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" +err p2t: "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" echo "replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" \ | sq $db done @@ -1807,6 +1844,7 @@ $forms
$hiddens + ${GF_STAGE:+`cgi_hidden stage $GF_STAGE`} ${rowid:+} EOF if [ -z $GF_VIEWONLY ]; then diff --git a/y4-init.sh b/y4-init.sh index 39dd21b..0081a1e 100755 --- a/y4-init.sh +++ b/y4-init.sh @@ -44,6 +44,7 @@ addcol=$col case $keytype in *pf*|*fp*) + pkey="$pkey${pkey:+, }$col" fkey="${fkey}, foreign key($col) references $objtype on delete cascade on update cascade" fkey2="${fkey2}, foreign key($col) references $objtype on delete cascade on update cascade" ;; *p*) @@ -95,7 +96,7 @@ create_struct $formdir/grp_adm.def create_struct $formdir/blog.def create_struct $formdir/article.def -create_struct $formdir/diary.def +#### create_struct $formdir/diary.def create table acclog "(user, tbl, rowid, time, \ primary key(user, tbl, rowid), \ diff --git a/y4.cgi b/y4.cgi index 350df72..1af1846 100755 --- a/y4.cgi +++ b/y4.cgi @@ -22,7 +22,7 @@ ;; esac -## err 1=$1 2=$2 3=$3 4=$4 +err 1=$1 2=$2 3=$3 4=$4 stage=`getpar stage` stage=${stage:-$1} case ${stage} in @@ -55,10 +55,14 @@ "groupman") contenttype; echo gname=`getpar gname` - [ -n "$gname" ] && par2table $formdir/grp.def + if [ -n "$gname" ]; then + par2table $formdir/grp.def + joingrp "$gname" "$user" yes "$user" as-admin + fi + GF_STAGE=groupman m4 -D_TITLE_="グループ作成" \ -D_FORM_="`genform $formdir/grp.def`" \ - -D_DUMPTABLE_="`DT_VIEW=grp dumptable html grp 'gname gecos'`" \ + -D_DUMPTABLE_="`DT_VIEW=grp dumptable html grp 'gname gecos:DESC mtime:TIME' 'order by b.TIME desc'`" \ $layout/html.m4.html $layout/groupman.m4.html ;; "edittable") @@ -80,7 +84,7 @@ contenttype; echo m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html kwd=`getpar kwd` - listmember $kwd | tee tmp/listmem.out + listmember $kwd ;; "grps") contenttype; echo @@ -113,7 +117,7 @@ fi m4 -D_TITLE_="グループ $grp" \ $layout/html.m4.html - showgroup $grp + showgroup "$grp" ;; "commission")