#!/usr/bin/perl
use CGI;
use lib qw(../setting/lib); #ライブラリの場所
use DBI;
require "../setting/loginMySQL.pl";
require "../setting/dirConfig.pl"; #デイレクトリ設定ファイル
######### リンク先 ############
$DOWNLOAD_LOG = "../logpdf/logpdf_eng.cgi"; # ダウンロード登録ページ
$DETAIL = "./detail_eng_open.cgi"; # 詳細表示ページ
$SAVE = $dirConfig::UPLOAD_PDF; # PDF保管フォルダ
$LINK_LAB_OUTTOP="http://www-toralab.ics.nitech.ac.jp/"; #新谷研トップ
$LINK_TOP = $LINK_LAB_OUTTOP; #新谷研トップ
$TSEARCH="./search_open.cgi";
$TNOWPAGE="./search_eng_open.cgi";
###############################
print "Content-type: text/html;charset=EUC-JP\n\n";
######################################################
sub get_Authors{
my $use_db = 'TPUBLIC'; #使うデータベースを指定
my $use_table = 'author'; #使うテーブルを指定
my $db = &loginMySQL::loginDB($use_db, $use_table); #データベースにアクセス
my $authors = $_[0];
my @author = split(/,/,$authors);
my $num = @author;
my @name=();
my $return_name='';
for(my $fukuoka=0;$fukuoka<$num;$fukuoka++){
my $jouken = "'".$author[$fukuoka]."'";
my $sthx = $db->prepare("select * from $use_table where author_id = $jouken");
$sthx->execute;
@a = $sthx->fetchrow_array;
$name[$fukuoka] = $a[3];#english
if($fukuoka==0){
$return_name .= "$name[$fukuoka]";
}
else{
$return_name .= ", "."$name[$fukuoka]";
}
$sthx->finish;
}
$db->disconnect;
return($return_name);
}
#####################################################
sub get_Publication{
my $use_db = 'TPUBLIC'; #使うデータベースを指定
my $use_table = 'publication'; #使うテーブルを指定
my $db = &loginMySQL::loginDB($use_db, $use_table); #データベースにアクセス
my $pub_id = $_[0];
$pub_id = "'".$pub_id."'";
my $sth = $db->prepare("select * from $use_table where publication_id = $pub_id");
$sth->execute;
my $num_rows = $sth->rows;
my @a = $sth->fetchrow_array;
my $pub_title_jpn = $a[1];
my $pub_title_eng = $a[2];
$sth->finish;
$db->disconnect;
return($pub_title_eng);
}
######################################################
print <<"__HTML__";
Search Publications
Shintani. LAB TOP PAGE
__HTML__
my $w = new CGI; ##検索窓用CGIのデータ読み込み
my $aid = $w->param("search_title");
print <<"__FORM__";
__HTML2__
####################################################
$form = new CGI;
$select_Field = '*'; #表示するフィールドを指定
$search_Field = 'title_jpn'; #検索対象とするフィールドを指定
$search_Query = $form->param('search_title'); #検索ワードを指定
$search_Query_authors = $form->param('search_authors');
if($search_Query_authors eq ''){
$search_Query_authors = -1;
}
$search_Query_year = $form->param('search_year');
if($search_Query_year eq ''){
$search_Query_year = 'ally';
}
$search_Query_category = $form->param('search_category');
if($search_Query_year eq ''){
$search_Query_category = -1;
}
$search_Query =~ s/ / /g; #全角空白を半角空白に置き換え
$count = $search_Query =~ s/\s+/ /g; #空白文字をカウント
@search_Words = split(/\s/ , $search_Query); #空白文字で分割
$word_Num = 100; #検索ワードの前後何文字を表示するか指定(半角)
###################################################
####-----------------------------------------------
$use_db = 'TPUBLIC'; #使うデータベースを指定
$use_table = 'article'; #使うテーブルを指定
$db = &loginMySQL::loginDB($use_db, $use_table); #データベースにアクセス
if($search_Query_authors >= 0){
# print "検索著者 : $search_Query_authors
";
}
$category_onflag = $search_Query_category; #条件のカテゴリID
if( $category_onflag > 0){
$use_table = "article,publication";# 2つのテーブルをくっつける
$sql_Query = "SELECT $select_Field FROM $use_table WHERE ";
### -----------------------------
## //////
##
## 1、指定されたカテゴリの掲載誌を抽出
## 2、その掲載誌に登録されている論文だけを抽出
##
## //////
### 1,カテゴリ指定
$sql_category = "category_id = $category_onflag";
### 2,掲載誌指定
$sql_pub = "article.publication_id = publication.publication_id";
### ------------------------------
### 要求するSQL文の条件を合成
$sql_Query .= $sql_pub." and ".$sql_category;
}else{ #カテゴリの条件なし
$sql_Query = "SELECT $select_Field FROM $use_table";
}#category_off
###//----------------------------------------------
### キーワードが指定してある
###
if(length($search_Query) > 0){
# --- 検索キーワードあり
###---------------------------
# カテゴリの条件とキーワードの条件を
# 'and'もしくは'where'でつなぐ
if( $category_onflag > 0 ){
# カテゴリ条件がある
$sql_Query .= " and ";
}else{
# カテゴリ条件がなし
$sql_Query .= " where ";
}
#
###---------------------------
$search_Query =~ s/</g;
$search_Query =~ s/>/>/g;
for($i=0; $i<$count+1; $i++){
if($i==0){
#最初はandが要らない
$sql_Query .= " $search_Field LIKE('%$search_Words[$i]%')";
}else{
$sql_Query .= " and $search_Field LIKE ('%$search_Words[$i]%')";
}
}
}
######### 著者が指定してある,もしくはすべて ###########
if($search_Query_authors >= 0){
###---------------------------
# カテゴリ、キーワードの条件と著者の条件を
# 'and'もしくは'where'でつなぐ
if( $category_onflag > 0 ){
# カテゴリ条件がある
$sql_Query .= " and ";
}else{
# カテゴリ条件がなし
# キーワードが存在
if(length($search_Query) > 0){
# キーワードが存在
$sql_Query .= " and ";
}else{
# キーワードもなし
$sql_Query .= " where ";
}
}
#
###---------------------------
## 著者条件(第1著者)
$search_auid = "'".$search_Query_authors."'";
$sql_Query .= " author_id = $search_auid";
}
elsif($search_Query_authors < 0){}
########## 発行年が指定してある,もしくはすべて ########
#
#if($search_Query_year ne 'ally'){
#
# $search_year = "'".$search_Query_year."'";
#
# if($search_Query_authors < 0 && length($search_Query) <= 0){
# $sql_Query .= " WHERE year = $search_year";
# }
# else{
# $sql_Query .= " and ";
# $sql_Query .= "year = $search_year";
# }
#}
#elsif($search_Query_year eq 'ally'){
#
#}
########################################################
$sql_Query .= " order by year DESC"; #年でソートして
########################################################
$sth = $db->prepare($sql_Query); #sqlコマンドを準備
$sth->execute; #sqlコマンドを実行
######debug
print "Results: ".$sth->rows."
";
###### debug
if($sth->rows>0){
for($i=0; $i<($sth->rows); $i++){
@search_Result = $sth->fetchrow_array;
$article_id[$i] = $search_Result[0]; #article_id
$authors_id[$i] = $search_Result[4]; #authors
$publication_id[$i] = $search_Result[5]; #publication_id
$year[$i] = $search_Result[10]; #year
$month[$i] = $search_Result[11]; #month
$pdf_file[$i] = $search_Result[12]; #pdf_filename
$title[$i] = $search_Result[2]; #title
$title_eng[$i] = $search_Result[3]; #title
$volume[$i] = $search_Result[6]; #volume
$number[$i] = $search_Result[7]; #number
$frompage[$i] = $search_Result[8]; #frompage
$topage[$i] = $search_Result[9]; #topage
$pub_flag[$i] = $search_Result[13]; #publish_flag
$open_flag[$i] = $search_Result[14]; #open flag
$aus_name[$i] = &get_Authors($authors_id[$i]); #get_Author
$pub_name[$i] = &get_Publication($publication_id[$i]);
}
$display_year = $year[0];
print "$year[0]";
for($i=0; $i<($sth->rows); $i++){
if($display_year ne $year[$i]){
print "/$year[$i]";
$display_year = $year[$i];
}
}
$display_year = $year[0];
print "
$year[0] TOP
";
for($i=0; $i<($sth->rows); $i++){
if($display_year ne $year[$i]){
print "
$year[$i] TOP
";
$display_year = $year[$i];
}
print "- ";
##############
&tpublic_rename_words ($aus_name[$i]);
&tpublic_rename_words ($title_eng[$i]);
&tpublic_rename_words ($pub_name[$i]);
&tpublic_rename_words ($frompage[$i]);
&tpublic_rename_words ($topage[$i]);
############
print $aus_name[$i]."
";
print '"'.$title_eng[$i].'"'."
";
print "".$pub_name[$i]." ";
&tpublic_page_show($frompage[$i],$topage[$i],$volume[$i],$number[$i]);
print "";
&chmonth($month[$i]);
print " ".$year[$i];
print "";
if($pub_flag[$i] eq '11'){
print "(To Appear)";
}
print "
";
print " ";
print '';
print ""."Show Detail"."";
print " ";
if($open_flag[$i] == 11){
if($pdf_file[$i] ne ''){
print '';
print ""."PDF"."";
print " ";
}
}
print "
";
}
}
$sth->finish;
$db->disconnect;
print "