文献参数修改,调整入库策略

This commit is contained in:
wlx 2013-10-13 14:41:35 +00:00
parent f06a9ef590
commit d5034346f3
1 changed files with 36 additions and 11 deletions

View File

@ -137,7 +137,7 @@ class Ris
} }
//将解析好的ris数据写入数据库 //将解析好的ris数据写入数据库
public function pushToDataTable($data){ public function pushToDataTable($data,$create_ref=false){
if(!is_array($data) || count($data) < 1) if(!is_array($data) || count($data) < 1)
{ {
@ -148,14 +148,35 @@ class Ris
foreach($data as $k=>$ref) foreach($data as $k=>$ref)
{ {
$tags = $ref['tags']; @$tags = $ref['tags'];
$author = $ref['author']; @$author = $ref['author'];
unset($ref['tags']); unset($ref['tags']);
unset($ref['author']); unset($ref['author']);
if (is_null($ref['title'])) return;
$reference=$ref['author'].'. '.$ref['title'].', '.$ref['year'].', '.$ref['volume'].'('.$ref['issue'].'):'.$ref['pages'].'-'.$ref['endpage'].'. ';
if ($ref['doi']) $reference.='doi:'.$ref['doi'].'.';
unset($ref['pages']);
unset($ref['endpage']);
unset($ref['issue']);
unset($ref['volume']);
if ($create_ref)
{
$ref['reference']=$reference;
}
$ref['reference'] = $ref['title'].'---'.date("Y-m-d H:i:s").".".microtime().rand(); $ref['reference'] = $ref['title'].'---'.date("Y-m-d H:i:s").".".microtime().rand();
$sql="select * from reference where title='".$ref['title']."' and publisher='".$ref['publisher']."' and year=".$ref['year'];
$id = $dbh->insert($this->table->reference,$ref,true); $sth=$this->db->query($sql);
$row=$sth->fetch();
$id=$row['id'];
if ($row)
{
//update
$dbh->update($this->table->reference,$ref," id=".$row['id']);
} else {
$ref['reference']=$reference;
$id = $dbh->insert($this->table->reference,$ref,true);
}
if(is_array($tags) && count($tags) > 0) if(is_array($tags) && count($tags) > 0)
{ {
@ -185,8 +206,8 @@ class Ris
{ {
$arr = explode(",",$author); $arr = explode(",",$author);
return array( return array(
'firstname' => trim($arr[0]), 'lastname' => trim($arr[0]),
'lastname' => trim($arr[1]) 'firstname' => trim($arr[1])
); );
}else{ }else{
return array( return array(
@ -197,7 +218,7 @@ class Ris
} }
public $attr = array( public $attr = array(
'TP' => 'type', 'TY' => 'type',
'TI' => 'title', 'TI' => 'title',
'AU' => 'author', 'AU' => 'author',
'PY' => 'year', 'PY' => 'year',
@ -205,6 +226,10 @@ class Ris
'KW' => 'tags', 'KW' => 'tags',
'AB' => 'abstract', 'AB' => 'abstract',
'DO' => 'doi', 'DO' => 'doi',
'PB' => 'publisher' 'T2' => 'publisher',
'VL' => 'volume',
'IS' => 'issue',
'SP' => 'pages',
'EP' => 'endpage'
); );
} }