s4

annotate y4.cgi @ 8:3db7524d3dea

Add default images
author HIROSE Yuuji <yuuji@gentei.org>
date Mon, 20 Jul 2015 11:30:39 +0900
parents 6822f4362bf9
children 63c0e22870bb
rev   line source
yuuji@4 1 #!/bin/sh
yuuji@4 2 # 愛
yuuji@4 3 PATH=/usr/local/sqlite3/bin:$PATH
yuuji@4 4 myname=`basename $0`
yuuji@4 5 mydir=`dirname $0`
yuuji@4 6 . $mydir/y4-funcs.sh
yuuji@4 7
yuuji@4 8 cgiinit
yuuji@4 9 if [ x"$1" = x"reg" ]; then
yuuji@4 10 contenttype; echo
yuuji@4 11 regist $2
yuuji@4 12 putfooter
yuuji@4 13 exit
yuuji@4 14 fi
yuuji@4 15
yuuji@4 16 dologin
yuuji@4 17 #gencookie; echo
yuuji@4 18
yuuji@4 19 case ${SERVER_SOFTWARE} in
yuuji@4 20 bozohttp*)
yuuji@4 21 set -- `echo "$@"|(IFS=+ read a b c d e f g; echo $a $b $c $d $e $f $g)`
yuuji@4 22 ;;
yuuji@4 23 esac
yuuji@4 24
yuuji@4 25 ## err 1=$1 2=$2 3=$3 4=$4
yuuji@4 26 stage=`getpar stage`
yuuji@4 27 stage=${stage:-$1}
yuuji@4 28 case ${stage} in
yuuji@8 29 # "")
yuuji@8 30 # contenttype; echo
yuuji@8 31 # m4 -D_SITE_="S System" $layout/welcome.m4.html
yuuji@8 32 # # echo "<pre>"; gencookie "user=$user" "skey=$skey"; echo "</pre>"
yuuji@8 33 # # echo "<pre>`env|sort -u`</pre>"
yuuji@8 34 # ;;
yuuji@8 35 "home"|"")
yuuji@4 36 contenttype; echo
yuuji@8 37 err HOME: just in rowid=`getpar rowid`
yuuji@8 38 [ -n "`getpar rowid`" ] && par2table $formdir/user.def
yuuji@8 39 showhome ${2:-$user}
yuuji@4 40 ;;
yuuji@8 41 # "diary")
yuuji@8 42 # contenttype; echo
yuuji@8 43 # title=`getpar title` #diary=`getpar diary` wday=`getpar wday`
yuuji@8 44 # [ -n "$title" ] && par2table $formdir/diary.def
yuuji@8 45 # m4 -D_TITLE_="$title" -D_DIARY_="$diary" \
yuuji@8 46 # -D_FORM_="`genform templ/form/diary.def`" \
yuuji@8 47 # -D_FORM2_="syscmd(\`genform templ/form/diary.def')" \
yuuji@8 48 # -D_DUMPTABLE_="`dumptable html diary title,wday,diary`" \
yuuji@8 49 # $layout/html.m4.html $layout/diary.m4.html
yuuji@8 50 # ;;
yuuji@4 51 "invite")
yuuji@4 52 contenttype; echo
yuuji@4 53 invite
yuuji@4 54 ;;
yuuji@4 55 "groupman")
yuuji@4 56 contenttype; echo
yuuji@4 57 gname=`getpar gname`
yuuji@4 58 [ -n "$gname" ] && par2table $formdir/grp.def
yuuji@4 59 m4 -D_TITLE_="グループ作成" \
yuuji@4 60 -D_FORM_="`genform $formdir/grp.def`" \
yuuji@4 61 -D_DUMPTABLE_="`DT_VIEW=grp dumptable html grp 'gname gecos'`" \
yuuji@4 62 $layout/html.m4.html $layout/groupman.m4.html
yuuji@4 63 ;;
yuuji@4 64 "edittable")
yuuji@4 65 contenttype; echo
yuuji@4 66 m4 -D_TITLE_="グループ編集/削除" $layout/html.m4.html
yuuji@4 67 edittable "$formdir/$2.def" "$2" "$3"
yuuji@4 68 ;;
yuuji@4 69 "userconf")
yuuji@4 70 contenttype; echo
yuuji@4 71 [ -n "`getpar rowid`" ] && par2table $formdir/user.def
yuuji@4 72 userconf
yuuji@4 73 ;;
yuuji@4 74 "groupconf")
yuuji@4 75 contenttype; echo
yuuji@4 76 [ -n "`getpar rowid`" ] && par2table $formdir/grp.def
yuuji@4 77 groupconf "$2"
yuuji@4 78 ;;
yuuji@4 79 "mems")
yuuji@4 80 contenttype; echo
yuuji@4 81 m4 -D_TITLE_="参加者一覧" -D_BODYCLASS_=listmember $layout/html.m4.html
yuuji@4 82 kwd=`getpar kwd`
yuuji@4 83 listmember $kwd | tee tmp/listmem.out
yuuji@4 84 ;;
yuuji@4 85 "grps")
yuuji@4 86 contenttype; echo
yuuji@4 87 m4 -D_TITLE_="グループ一覧" -D_BODYCLASS_=listgroup $layout/html.m4.html
yuuji@4 88 kwd=`getpar kwd`
yuuji@4 89 listgroup $kwd \
yuuji@4 90 | m4 -D_DUMPTABLE_="syscmd(\`cat')" \
yuuji@4 91 -D_TITLE_="グループ関連操作" \
yuuji@4 92 -D_FORM_="<a href=\"?groupman\">新規グループ作成</a>" \
yuuji@4 93 $layout/groupman.m4.html
yuuji@4 94
yuuji@4 95 ;;
yuuji@4 96 "grps2")
yuuji@4 97 contenttype; echo
yuuji@4 98 m4 -D_TITLE_="グループ一覧" \
yuuji@4 99 -D_FORM_="`listgroup2 $formdir/grp.def`" -D_DUMPTABLE_= \
yuuji@4 100 $layout/html.m4.html \
yuuji@4 101 $layout/groupman.m4.html
yuuji@4 102 ;;
yuuji@4 103 "grp") # $2=group
yuuji@4 104 contenttype; echo
yuuji@4 105 gpg=`getpar grp`
yuuji@4 106 grp=${2:-$gpg}
yuuji@4 107 ## . ./y4-blog.sh
yuuji@4 108 jg=`getpar joingrp`
yuuji@4 109 if [ -n "$jg" ]; then
yuuji@4 110 err jg=$jg, grp=$grp
yuuji@4 111 [ -n "$jg" -a -n "$grp" ] &&
yuuji@4 112 joingrp "$grp" "$user" "$jg" "`getpar email`"
yuuji@4 113 fi
yuuji@4 114 m4 -D_TITLE_="グループ $grp" \
yuuji@4 115 $layout/html.m4.html
yuuji@4 116 showgroup $grp
yuuji@4 117
yuuji@4 118 ;;
yuuji@4 119 "commission")
yuuji@4 120 # $2=grp $3=user-rowid
yuuji@4 121 contenttype; echo
yuuji@4 122 err commission: "$@"
yuuji@4 123 m4 -D_TITLE_="グループ $2 管理者委任" $layout/html.m4.html
yuuji@4 124 shift # $1=grp $2=user-rowid
yuuji@4 125 if [ -n "$2" ]; then
yuuji@4 126 grp_reg_adm "$@"
yuuji@4 127 else
yuuji@4 128 echo "<p>無効な指定です。普通のアクセスならここに来ないはず。</p>"
yuuji@4 129 fi
yuuji@4 130 ;;
yuuji@4 131 "blog")
yuuji@4 132 contenttype; echo
yuuji@4 133 . ./y4-blog.sh
yuuji@4 134 blog_addentry $2
yuuji@4 135 ;;
yuuji@4 136 "replyblog")
yuuji@4 137 contenttype; echo
yuuji@4 138 rowid=${2%%[!A-Z0-9a-z_]*}
yuuji@4 139 ## err ROWid=$rowid, '$2'=$2
yuuji@4 140 . ./y4-blog.sh
yuuji@4 141 err blog_reply $rowid
yuuji@4 142 blog_reply $rowid
yuuji@4 143 ;;
yuuji@4 144 "editheading")
yuuji@4 145 contenttype; echo
yuuji@4 146 rowid=${2%%[!A-Z0-9a-z_]*}
yuuji@4 147 # blogrowid=${3%%[!A-Z0-9a-z_]*}
yuuji@4 148 if [ -z "$rowid" ]; then
yuuji@4 149 echo "<p>話題番号が未指定です。</p>"
yuuji@4 150 return
yuuji@4 151 fi
yuuji@4 152 owner=`getvalbyid blog owner $2`
yuuji@4 153 title=`getvalbyid blog title $2`
yuuji@4 154 m4 -D_TITLE_="修正" \
yuuji@4 155 -D_SUBTITLE_="[$title]@$owner" -D_DIARY_="" \
yuuji@4 156 -D_BLOGS_="" -D_DUMPTABLE_="" \
yuuji@4 157 -D_FORM_="`GF_ACTION=\"?blog\" edittable $formdir/blog.def blog $rowid`" \
yuuji@4 158 $layout/html.m4.html $layout/diary.m4.html
yuuji@4 159 ;;
yuuji@4 160 "editart")
yuuji@4 161 contenttype; echo
yuuji@4 162 rowid=${2%%[!A-Z0-9a-z_]*}
yuuji@4 163 blogrowid=${3%%[!A-Z0-9a-z_]*}
yuuji@4 164 if [ -z "$rowid" -o -z "$blogrowid" ]; then
yuuji@4 165 echo "<p>表示する記事番号が未指定です。</p>"
yuuji@4 166 return
yuuji@4 167 fi
yuuji@4 168 owner=`getvalbyid blog owner $blogrowid`
yuuji@4 169 title=`getvalbyid blog title $blogrowid`
yuuji@4 170 author=`getvalbyid article author $rowid`
yuuji@4 171 err EDITart: owner=$owner, author=$author
yuuji@4 172 if isgrpowner $user $owner; then
yuuji@4 173 : EDIT OK
yuuji@4 174 elif [ x"$owner" != x"$user" -a x"$author" != x"$user" ]; then
yuuji@4 175 echo "<p>本人か所有者しか編集できません.</p>"
yuuji@4 176 return
yuuji@4 177 fi
yuuji@4 178 aid=`query "select id from article where rowid=$rowid;"`
yuuji@4 179 # title=`getvalbyid blog title $2`
yuuji@4 180 m4 -D_TITLE_="コメントの修正" -D_DIARY_="" \
yuuji@4 181 -D_FORM_="`GF_ACTION=\"?replyblog+$blogrowid#$aid\" edittable $formdir/article.def article $rowid`" \
yuuji@4 182 -D_SUBTITLE_="`gecos $owner`の「$title」" \
yuuji@4 183 -D_BLOGS_= -D_DUMPTABLE_= \
yuuji@4 184 $layout/html.m4.html $layout/diary.m4.html
yuuji@4 185 ;;
yuuji@4 186 "lshandout")
yuuji@4 187 contenttype; echo
yuuji@4 188 rowid=${2%%[!A-Z0-9a-z_]*}
yuuji@4 189 if [ -z "$rowid" ]; then
yuuji@4 190 echo "<p>話題番号が未指定です。</p>"
yuuji@4 191 return
yuuji@4 192 fi
yuuji@4 193 . ./y4-blog.sh
yuuji@4 194 lshandout $rowid
yuuji@4 195 ;;
yuuji@4 196 "gethandout")
yuuji@4 197 rowid=${2%%[!A-Z0-9a-z_]*}
yuuji@4 198 if [ -z "$rowid" ]; then
yuuji@4 199 echo "<p>話題番号が未指定です。</p>"
yuuji@4 200 return
yuuji@4 201 fi
yuuji@4 202 . ./y4-blog.sh
yuuji@4 203 gethandout $rowid
yuuji@4 204 ;;
yuuji@4 205 "searchart") # $2=blogowner
yuuji@4 206 contenttype; echo
yuuji@4 207 m4 -D_TITLE_="検索結果" $layout/html.m4.html
yuuji@4 208 kwd=`getpar kwd`
yuuji@4 209 if [ -z "$kwd" ]; then
yuuji@4 210 echo "<p>検索語を指定してください</p>"
yuuji@4 211 else
yuuji@4 212 owner=`getpar owner`
yuuji@4 213 owner=${owner:-$2}
yuuji@4 214 echo "<h2>「$kwd」による検索結果</h2>"
yuuji@4 215 if [ -n "$owner" ]; then
yuuji@4 216 cond="where key='owner' and val='$owner'"
yuuji@4 217 if isuser $owner; then
yuuji@4 218 echo "<p>(`linkhome $owner` さんの記録からの検索)</p>"
yuuji@4 219 else
yuuji@4 220 linkhome $owner 1>&3
yuuji@4 221 echo "<p>(`linkhome $owner` グループからの検索)</p>"
yuuji@4 222 fi
yuuji@4 223 fi
yuuji@4 224 # article_s: id=article-id, key='text', val='TEXT'
yuuji@4 225 # article: id=article-id, blogid=blogkd
yuuji@4 226 # blog: id=blog-id, author=LeaderAuthor
yuuji@4 227 # blog_s: id=blog-id, key='title', val='BLOG-TITLE'
yuuji@4 228 # WANT: blog-ROWid,article-id,val(TEXT)
yuuji@4 229 sql="select b.rowid||'#'||x.id as '',
yuuji@4 230 b.title as TITLE,
yuuji@4 231 substr(x.val, 0, 80) as TEXT
yuuji@4 232 from (select blog.rowid,blog.*,bs.val as title from blog join blog_s bs
yuuji@4 233 on blog.id=bs.id and bs.key='title') b
yuuji@4 234 join
yuuji@4 235 (select a.id,a.blogid,s.val from article a join article_s s
yuuji@4 236 on a.id=s.id where s.val like '%$kwd%')
yuuji@4 237 x on b.id=x.blogid
yuuji@4 238 where b.id in (select id from blog_s
yuuji@4 239 $cond);"
yuuji@4 240 sedopt="s,<TR><TD>\([^<]*\)</TD>,<TR><TD><a\
yuuji@4 241 href=\"?replyblog+\1\">VIEW</a></TD>,"
yuuji@4 242 cat<<EOF
yuuji@4 243 <table class="b searchart">
yuuji@4 244 `sq -header -html $db "$sql"|sed "$sedopt"`
yuuji@4 245 </table>
yuuji@4 246 EOF
yuuji@4 247 fi
yuuji@4 248 ;;
yuuji@4 249 "showattc")
yuuji@4 250 # $2=table_m $3=rowid $4=val
yuuji@4 251 if ! isfilereadable $user $2 $3; then
yuuji@4 252 contenttype; echo
yuuji@4 253 echo "<p>このファイルは管理者のみしか見られません</p>"
yuuji@4 254 putfooter; exit
yuuji@4 255 fi
yuuji@4 256 idir=`umask 002; mktemp -d -p $tmpdir -t $myname` || exit 1
yuuji@4 257 tmpfiles=$tmpfiles"${tmpfiles+ }$idir"
yuuji@4 258 bin=$idir/$myname-$$.bin
yuuji@4 259 ##sql="select quote(bin) from $2 where id='$3' and val='$4'"
yuuji@4 260 sql="select quote(bin) from $2 where rowid='$3'"
yuuji@4 261 sq $db "$sql" | xxd -r -p > $bin
yuuji@4 262 # type=`sq $db "select type from $2 where id='$3' and val='$4'"`
yuuji@4 263 tv=`sq $db "select type,val from $2 where rowid='$3'"`
yuuji@4 264 type=${tv%|*} fn=${tv#*|}
yuuji@4 265 err tv=$tv type=$type fn=$fn
yuuji@4 266 ct=${type#file:}
yuuji@4 267 case $ct in # all text/* changed to text/plain
yuuji@4 268 text/*)
yuuji@4 269 charset=`nkf -g $bin|cut -d' ' -f1`
yuuji@4 270 case $charset in
yuuji@4 271 ASCII*) charset="" ;;
yuuji@4 272 esac
yuuji@4 273 ct="text/plain${charset:+; charset=$charset}"
yuuji@4 274 ;;
yuuji@4 275 esac
yuuji@4 276 contenttype "$ct"
yuuji@4 277 echo "Content-Disposition: filename=\"$fn\""
yuuji@4 278 echo "Content-Length: " `cat $bin | wc -c`; echo
yuuji@4 279 #echo "Content-Type: " ${type#file:}; echo
yuuji@4 280 cat $bin
yuuji@4 281 exit 0
yuuji@4 282 ;;
yuuji@4 283 "gallery")
yuuji@4 284 ## contenttype "Image/jpeg"
yuuji@4 285 sql="select quote(b) from te where a='${2:-mikan.jpg}'"
yuuji@4 286 idir=`umask 002; mktemp -d -p $tmpdir -t $myname` || exit 1
yuuji@4 287 tmpfiles=$tmpfiles"${tmpfiles+ }$idir"
yuuji@4 288 img=$idir/$myname-$$.bin
yuuji@4 289 db=b.sq3
yuuji@4 290 sqlite3 $db "$sql" | xxd -r -p > $img
yuuji@4 291 len=`cat $img | wc -c`
yuuji@4 292 echo "Content-Length: $len"
yuuji@4 293 type=`file --mime-type $img | cut -d' ' -f2`
yuuji@4 294 echo 'Content-type: $type'; echo
yuuji@4 295 cat $img
yuuji@4 296 ;;
yuuji@4 297 esac
yuuji@4 298
yuuji@4 299
yuuji@4 300 putfooter