#!/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__";
	<html>
	<head></head>
	<body>
	<div align='right'><a href=$TSEARCH>In Jpnanese</a></div></FONT>
	<A NAME=top>
    <FONT COLOR='#0000ff'><FONT SIZE=6>Search Publications</FONT></FONT><FONT SIZE=6><BR></FONT><HR color='blue' SIZE=15>
	
	<A HREF="$LINK_LAB_OUTTOP">Shintani. LAB TOP PAGE</A>

__HTML__


my $w = new CGI;  ##検索窓用CGIのデータ読み込み
my $aid = $w->param("search_title");

print <<"__FORM__";
<BR><BR>
	
	<form method="GET" action=$TNOWPAGE>
	<table  height="10" border="0" cellpadding="5" cellspacing="5">
	<tr><td><a href="$TNOWPAGE"><font size=+1 color="#555500">All Publications</font></a></td></tr>
    <td width="120" bgcolor="#FFFFCC">Keyword</td>
    <td  bgcolor="#CCFFFF">
		<input name="search_title" type="text" size="40" value="$aid"></td>
    <td width="120" bgcolor="#FFFFCC">Author</td>
    <td  bgcolor="#CCFFFF">
	
__FORM__


########### select author #############

$use_db = 'TPUBLIC';  #使うデータベースを指定
$use_table = 'author';  #使うテーブルを指定

$db = &loginMySQL::loginDB($use_db, $use_table); #データベースにアクセス

$sth = $db->prepare("select * from $use_table");

$sth->execute;
$num_rows = $sth->rows;

$sel0 ='';

my $aid = $w->param("search_authors");


print "<select name='search_authors' >";
print "<option value='-1'>all</option>";
  for(my $i=0;$i<$num_rows;$i++){
        @a = $sth->fetchrow_array;
	    $a_id = $a[1];
	    $a_name_jpn = $a[2];
		$a_name_eng = $a[3];
		if($aid eq $a_id){
		 $sel0 = 'selected';
		}
		
		print "<option value=$a_id $sel0>$a_name_eng</option>\n";
		$sel0 = '';
      }
   
print "</select>";

$sth->finish;
#$db->disconnect;



######################################

######################################
###                                ###
###         select category        ###

print '<td width="120" bgcolor="#FFFFCC">Category</td>';
print '<td  bgcolor="#CCFFFF">';

#$use_db = 'TPUBLIC';      #使うデータベースを指定
$use_table = 'category';  #使うテーブルを指定

$db = &loginMySQL::loginDB($use_db, $use_table); #データベースにアクセス

$sth = $db->prepare("select * from $use_table");

$sth->execute;
$num_rows = $sth->rows;

$sel0 ='';

#my $w = new CGI;
my $aid = $w->param("search_category");


print "<select name='search_category' >";
print "<option value='-1'>all</option>\n";
  for(my $i=0;$i<$num_rows;$i++){
        @a = $sth->fetchrow_array;
	    $a_id = $a[0];
	    $a_category_jpn = $a[1];
	    $a_category_eng = $a[2];
		
		if($aid eq $a_id){
		 $sel0 = 'selected';
		}
		
		print "<option value=$a_id $sel0>$a_category_eng</option>";
		$sel0 = '';
      }
   
print "</select>";

$sth->finish;
$db->disconnect;



######################################
	
print <<"__HTML2__";
	
	</td>



	<td>
	<input type="submit" value="Search">
	</td>
	</tr>
	</table>
	</form>
	</body>
</html>
__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 <br><br>";
}

$category_onflag = $search_Query_category;   #条件のカテゴリID
	
if( $category_onflag > 0){
	
	$use_table = "article,publication";#　２つのテーブルをくっつける
	
	$sql_Query = "SELECT $select_Field FROM $use_table WHERE ";
	
	### -----------------------------
	
	## //////
	##
	##  １、指定されたカテゴリの掲載誌を抽出
	##  ２、その掲載誌に登録されている論文だけを抽出
	##
	## //////
	###  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/</&lt;/g;
	$search_Query =~ s/>/&gt;/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 ";
		}
	}
	#
	###---------------------------
	
	## 著者条件（第１著者）
	 $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."    <BR><BR> ";
	###### 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 "<FONT size='4'><a href='";
print "\#".$year[0]."'>$year[0]</a></FONT>";
for($i=0; $i<($sth->rows); $i++){	
	if($display_year ne $year[$i]){	
		print "<FONT size='4' >/<a href='";
		print"\#".$year[$i]."'>$year[$i]</a></FONT>";
		$display_year = $year[$i];
	}
}

$display_year = $year[0];
print "<br><br><FONT size='4'><a name=$year[0]>$year[0]</a>　</FONT><A HREF='#top'><img src='./img/wr2.gif'>TOP</A><br><ul>";

    for($i=0; $i<($sth->rows); $i++){	

        if($display_year ne $year[$i]){	
			
			print "</ul><FONT size='4' ><a name=$year[$i]>$year[$i]</a>　</FONT><A HREF='#top'><img src='./img/wr2.gif'>TOP</A><br><ul>";
			
			$display_year = $year[$i];
         }
		print "<li>";
		
##############		
		&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]."<br>";
		print '"'.$title_eng[$i].'"'."<br>";
		print "<FONT color='#888888'>".$pub_name[$i]." ";
		&tpublic_page_show($frompage[$i],$topage[$i],$volume[$i],$number[$i]);
		print "</FONT>";
		&chmonth($month[$i]);
		print " ".$year[$i];
		print "</FONT>";
		if($pub_flag[$i] eq '11'){
		print "<FONT color='#ff0000'>(To Appear)</font>";
		}
		print "<br>";
		print "</li>";
		print '<img src="./img/wr.gif">';
		print "<a href='$DETAIL?article_id=$article_id[$i]'>"."Show Detail"."</a>";
		print "　　";
		if($open_flag[$i] == 11){
			if($pdf_file[$i] ne ''){
				print '<img src="./img/wr.gif">';
				print "<a href='$DOWNLOAD_LOG?article_id=$article_id[$i]'>"."PDF"."</a>";
				print "　　";
			}
		}
		print "<br><br>";
		
		}
}	
	$sth->finish;
	$db->disconnect;


print "</body></html>";

#ページ数を表示#####################
sub tpublic_page_show (&@){
	my $tpublic_from = @_[0];
	my $tpublic_to = @_[1];
	my $tpublic_vol = @_[2];
	my $tpublic_no = @_[3];
	my $tpublic_flag =0;
	
	if($tpublic_vol ==0){}
	else{
		$tpublic_flag =1;
		print " vol.".$tpublic_vol;
	}
	if($tpublic_no ==0){}
	else{
		$tpublic_flag =1;
		print " no.".$tpublic_no;
	}
	if($tpublic_from ==0){}
	elsif($tpublic_to ==0){
		print " pp.".$tpublic_from." ";
	}
	else{
		print " pp.".$tpublic_from;
		print "-".$tpublic_to." ";
	}
}






#タグを変換する#####################
sub tpublic_rename_words (&@){
	$tpublic_words = @_[0];
	$tpublic_words =~ s/</&lt;/g;
	$tpublic_words =~ s/>/&gt;/g;
	return $tpublic_words; 
}


#日付変換#####################
sub chmonth {
	my $tmonth= @_[0];
	$tmonth = $tmonth + 1;
	print"<FONT color='#888888'>";
	if($tmonth eq 1){print 'Jan. '; }
	elsif($tmonth eq 2){ print 'Feb. ';}
	elsif($tmonth eq 3){ print 'Mar. '; }
	elsif($tmonth eq 4){ print 'Apr. '; }
	elsif($tmonth eq 5){ print 'May '; }
	elsif($tmonth eq 6){ print 'June '; }
	elsif($tmonth eq 7){ print 'July '; }
	elsif($tmonth eq 8){ print 'Aug. '; }
	elsif($tmonth eq 9){ print 'Sep. '; }
	elsif($tmonth eq 10){ print 'Oct. '; }
	elsif($tmonth eq 11){ print 'Nov. '; }
	elsif($tmonth eq 12){ print 'Dec. '; }
}