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|\(本人か、グループ管理者しか加入操作はできません。
" 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 @@