Mercurial > hgrepos > hgweb.cgi > s4
changeset 301:ba0730073d6f
Add (1)article-ID search, (2)DATE search
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Thu, 13 Oct 2016 09:35:26 +0859 |
parents | 973fb0ea5c2f |
children | 9edf8e87e198 |
files | s4-blog.sh s4-funcs.sh |
diffstat | 2 files changed, 30 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/s4-blog.sh Tue Oct 11 23:34:51 2016 +0859 +++ b/s4-blog.sh Thu Oct 13 09:35:26 2016 +0859 @@ -441,13 +441,29 @@ echo '</table>' } searchart() { - kwd=`getpar kwd` + kwd=`getpar kwd|nkf -wZ1` # Convert Zenkaku-SPC to ASCII-SPC + kwdgrp="" if [ -z "$kwd" ]; then echo "検索語を指定してください" | html p; return fi - for k in `echo "$kwd" | sed "s/'/''/g"`; do - kc=$kc${kc:+" AND "}"s.text LIKE '%$k%'" - done + if expr x"$kwd" : 'x#[1-9][0-9]*$' >/dev/null 1>&2; then + # Like '#1234', assume as artID + rowid=$((${kwd#\#} + 0)) # Force to be a number + kc="a.rowid = $rowid" + else + for k in `echo "$kwd" | sed "s/'/''/g"`; do + if expr x"$k" : 'x@[1-9][][0-9]*-[][0-9:-]*$' >/dev/null 1>&2; then + # Like '@2016-10-10', expands to "s.ctime GLOB '@2016-10-10'" + ctime=${k#@} + # Not sure GROUP BY a.blogid is comfortable for searchers...? + kc=$kc${kc:+" AND "}"s.ctime GLOB '${ctime}*'" + ##### kwdgrp=" GROUP BY a.blogid" + else + kc=$kc${kc:+" AND "}"s.text LIKE '%$k%'" + fi + done + fi + echo kc=$kc kwd=`echo "$kwd"|htmlescape` owner=`getpar owner` owner=${owner:-$1} @@ -472,9 +488,9 @@ substr(x.ctime, 0, 11) as DATE, substr(x.text, 0, 78) as TEXT FROM (SELECT blg.rid,blg.*,bs.val as title - FROM readableblogs blg join blog_s bs - ON blg.id=bs.id and bs.key='title') b - join + FROM readableblogs blg JOIN blog_s bs + ON blg.id=bs.id AND bs.key='title') b + JOIN (SELECT a.id, a.blogid, s.ctime, @@ -485,9 +501,9 @@ max(CASE key WHEN 'ctime' THEN val END) ctime, max(CASE key WHEN 'text' THEN val END) text FROM article_s GROUP BY id) s - ON a.id=s.id where $kc) - x on b.id=x.blogid - where b.id in (select id from blog_s $cond) + ON a.id=s.id WHERE $kc$kwdgrp) + x ON b.id=x.blogid + WHERE b.id IN (SELECT id FROM blog_s $cond) ORDER by x.ctime DESC;" sedopt="s,<TR><TD>\([^<]*\)</TD>,<TR><TD><a\ href=\"?replyblog+\1\">VIEW</a></TD>,"
--- a/s4-funcs.sh Tue Oct 11 23:34:51 2016 +0859 +++ b/s4-funcs.sh Thu Oct 13 09:35:26 2016 +0859 @@ -1459,10 +1459,13 @@ } search_form() { + help="(1)空白区切りの単語で本文検索 +(2)#番号 で記事ID検索 +(3)@YYYY-MM-DD 日付け(シェルパターン可)で日付け検索" cat<<-EOF <div class="fr"> <form action="$myname"> - <input type="text" name="kwd" value="" + <input type="text" name="kwd" value="" title="$help" placeholder=" 全記事からの検索 " width="10"> <input type="hidden" name="stage" value="searchart"> </form>