admin_obj = Db::name('admin');
$this->journal_obj = Db::name('journal');
$this->article_obj = Db::name('article');
$this->article_author_obj = Db::name('article_author');
$this->article_organ_obj = Db::name('article_organ');
$this->article_ltai_obj = Db::name('article_ltai');
$this->article_author_to_organ_obj = Db::name('article_author_to_organ');
$this->journal_topic_obj = Db::name('journal_topic');
$this->journal_stage_obj = Db::name('journal_stage');
$this->journal_notices_obj = Db::name('journal_notices');
$this->journal_abs_obj = Db::name('journal_abstracting');
$this->article_to_topic_obj = Db::name('article_to_topic');
$this->article_main_obj = Db::name('article_main');
$this->article_cite_obj = Db::name("article_cite");
}
public function mmmttt(){
$data = $this->request->post();
$get_url = "https://doi.crossref.org/servlet/getForwardLinks";
$get_data["usr"] = "books@tmrjournals.com/tmrp";
$get_data["pwd"] = "849192806pnX";
$get_data["doi"] = $data["doi"];
$r = xml_to_array(myGet($get_url,$get_data));
return jsonSuccess($r);
}
public function getRelationArticles(){
$data = $this->request->post();
$rule = new Validate([
"article_id" => "require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
}
/**
* @title 获取文章详情
* @description 获取文章详情
* @author wangjinlei
* @url /api/Article/getArticleDetail
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
* @return articleInfo:文章信息#
* @return journalInfo:期刊信息#
* @return stageInfo:分期信息#
* @return author:作者信息#
* @return cite:引用#
*
*/
public function getArticleDetail() {
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
//获取文章作者相关
$authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$organs = $this->article_organ_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$atto = $this->article_author_to_organ_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$author = $this->sys_author($authors, $organs, $atto);
//标题斜体
$caches = $this->article_ltai_obj->where('article_id', $article_info['article_id'])->where('state', 0)->column('content');
$cache_title = $article_info['title'];
$article_info['old_title'] = $article_info['title'];
foreach ($caches as $val) {
$cache_title = str_replace($val, '' . $val . '', $cache_title);
}
$article_info['title'] = $cache_title;
//组合cite信息
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
if ($journal_info['journal_id'] == 22) {
$cite = $article_info['abbr'] . '. ' . $article_info['title'] . '[J]. ' . choiseJabbr($article_info['article_id'],$journal_info['jabbr']) . ',' . $stage_info['stage_year'] . ',' . $stage_info['stage_vol'] . $no . $article_info['npp'] . '. doi:' . $article_info['doi'];
} else {
$cite = $article_info['abbr'] . '. ' . $article_info['title'] . '. ' . choiseJabbr($article_info['article_id'], $journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $article_info['npp'] . '. doi:' . $article_info['doi'];
}
if (stripos($article_info['npp'], '-')) {
$cc = explode('-', $article_info['npp']);
$article_info['first_page'] = $cc[0];
$article_info['last_page'] = $cc[1];
}
if($article_info['journal_id']==1&&$article_info['article_id']<1540){
$article_info['ordoi'] = str_replace("10.53388", "10.12032", $article_info['doi']);
}elseif($article_info['journal_id']==14&&$article_info['article_id']<1540){
$article_info['ordoi'] = str_replace("10.53388", "10.12032", $article_info['doi']);
}elseif($article_info['journal_id']==17&&$article_info['article_id']<=1534){
$article_info['ordoi'] = str_replace("10.53388", "10.12032", $article_info['doi']);
}elseif($article_info['journal_id']==8&&$article_info['article_id']<=1535){
$article_info['ordoi'] = str_replace("10.53388", "10.12032", $article_info['doi']);
}elseif($article_info['journal_id']==13&&$article_info['article_id']<=1486){
$article_info['ordoi'] = str_replace("10.53388", "10.12032", $article_info['doi']);
}elseif($article_info['journal_id']==4&&$article_info['article_id']<=1508){
$article_info['ordoi'] = str_replace("10.53388", "10.12032", $article_info['doi']);
}elseif($article_info['journal_id']==24&&($article_info['journal_stage_id']==242||$article_info['journal_stage_id']==251)){
$article_info['ordoi'] = str_replace("10.53388", "10.12032", $article_info['doi']);
}else{
$article_info['ordoi'] = '';
}
$article_info['publication'] = date('Y/m/d', strtotime($article_info['pub_date']));
//修改keywords
$article_info['keywords'] = str_replace(',', ' ', $article_info['keywords']);
$article_info['has_html'] = hasHtml($article_info['article_id']);
//更改适应期刊改名后的期刊名称
$journal_info['title'] = choiseti1($article_info['article_id'],$journal_info['title']);
//返回数据
$re['articleInfo'] = $article_info;
$re['journalInfo'] = $journal_info;
$re['stageInfo'] = $stage_info;
$re['author'] = $author;
$re['cite'] = $cite;
// $re['html'] = hasHtml($data['article_id']);
// if((($article_info['journal_id']==13||$article_info['journal_id']==19||$article_info['journal_id']==9)&&($article_info['ctime']>1688140800))
// ||(($article_info['journal_id']!=13||$article_info['journal_id']!=19||$article_info['journal_id']!=9)&&($article_info['ctime']>1682870400))
//
// ){
$stack = getArticleTracks($article_info['doi']);
//增加online
if(count($stack)>0){
$stack[] = [
"type"=>9,
"time"=>$article_info['ctime']
];
}
// }else{
// $stack = [];
// }
grabCiteFromCrossref($data['article_id']);
$re["track"] = $stack;
return jsonSuccess($re);
}
public function mmmm(){
grabCiteFromCrossref(400);
}
public function getArticleDetailHtml(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$re = [];
$re['mains'] = getArticleMains($data['article_id']);
$re['refers'] = getArticleRefers($data['article_id']);
return jsonSuccess($re);
}
public function getArticleDetailHtmlFor2(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$article_info = $this->article_obj->where("article_id",$data['article_id'])->find();
if($article_info['html_type']!=2){
return jsonError("type error");
}
$ree = getArticleMainsFor2($data['article_id']);
if($ree==[]){
return jsonError("not find");
}
$re['mains'] = $ree;
$re['refers'] = getArticleRefers($data['article_id']);
return jsonSuccess($re);
}
public function getHtmlByPAID(){
$data = $this->request->post();
$rule = new Validate([
"p_article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$url = "http://api.tmrjournals.com/public/index.php/api/Web/getArticleMainsByPID";
$program['p_article_id'] = $data['p_article_id'];
$res = object_to_array(json_decode(myPost($url, $program)));
$mains = isset($res['data']['mains']) ? $res['data']['mains'] : [];
$refers = isset($res['data']['refers'])?$res['data']['refers']:[];
return jsonSuccess(['list'=>$mains,"refers"=>$refers]);
}
public function getArticleDetailCites(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$rr = pCrossrefCite($data['article_id']);
return jsonSuccess($rr);
}
public function myttt() {
echo 'ok';
}
/**
* @title 获取文章话题
* @description 获取文章话题
* @author wangjinlei
* @url /api/Article/getTopicsForArticle
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
* @return topics:话题列表#
*/
public function getTopicsForArticle() {
$data = $this->request->post();
$list = $this->article_to_topic_obj
->field("j_journal_topic.*")
->join("j_journal_topic", "j_journal_topic.journal_topic_id = j_article_to_topic.topic_id", "left")
->where("j_article_to_topic.article_id", $data['article_id'])
->where('j_article_to_topic.state', 0)
->select();
$re['topics'] = $list;
return jsonSuccess($re);
}
public function mytest() {
$article_info = $this->article_obj->where('article_id', 1689)->find();
echo ($article_info['article_id'] < 1799 && $article_info['npp'] == 'Cancer Adv' ? 'TMR Cancer' : $article_info['npp']);
}
/**
* @title 获取关键词相关文章
* @description 获取关键词相关文章
* @author wangjinlei
* @url /api/Article/getArticleByKeywords
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
*
*/
public function getArticleByKeywords() {
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$res_key = [];
$res_rel = $this->article_obj
->field("j_article.*")
->join("j_journal_stage","j_journal_stage.journal_stage_id = j_article.journal_stage_id","left")
->where("j_article.article_id", "in", object_to_array(json_decode($article_info['related'])))
// ->where("j_journal_stage.stage_year",">",date("Y")-2)
->where('j_article.state', 0)
->select();
if ($article_info['keywords'] != '' && count($res_rel) < 5) {
$keywords = explode(',', $article_info['keywords']);
$where = '';
foreach ($keywords as $v) {
$where .= ' keywords like "%' . $v . '%" or';
}
$whe = substr($where, 0, -2);
$wstr = 'journal_id = ' . $article_info['journal_id'] . ' and state = 0 and article_id<>' . $data['article_id'] . ' and (' . $whe . ')';
$res_key = $this->article_obj->where($wstr)->limit(5 - count($res_rel))->select();
}
$res = array_merge($res_rel, $res_key);
$frag = [];
foreach ($res as $k => $v) {
$frag[$v['article_id']] = $v;
$frag[$v['article_id']]['journal'] = $this->journal_obj->where('journal_id', $v['journal_id'])->find();
$frag[$v['article_id']]['stage'] = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
if ($frag[$v['article_id']]['stage']['stage_year'] == (date('Y') - 1)) {
$frag[$v['article_id']]['ysort'] = 1;
} else if ($frag[$v['article_id']]['stage']['stage_year'] == (date('Y') - 2)) {
$frag[$v['article_id']]['ysort'] = 2;
} else if ($frag[$v['article_id']]['stage']['stage_year'] == date('Y')) {
$frag[$v['article_id']]['ysort'] = 3;
} else {
$frag[$v['article_id']]['ysort'] = 4;
}
}
$f = [];
foreach ($frag as $v){
$f[] = $v;
}
for ($i = 0; $i < count($f); $i++) {
for ($j = $i + 1; $j < count($f); $j++) {
if ($f[$i]['ysort'] > $f[$j]['ysort']) {
$tmp = $f[$j];
$f[$j] = $f[$i];
$f[$i] = $tmp;
}
}
}
return jsonSuccess($f);
}
private function sys_author($authors, $organs, $atto) {
$cache = [];
foreach ($organs as $k => $v) {
$cache[$v['article_organ_id']] = $k + 1;
$organs[$k]['alias'] = $k + 1;
}
foreach ($authors as $key => $val) {
$authors[$key]['ors'] = '';
foreach ($atto as $vv) {
if ($vv['article_author_id'] == $val['article_author_id']) {
$authors[$key]['ors'] = $authors[$key]['ors'] == '' ? '' . $cache[$vv['article_organ_id']] : $authors[$key]['ors'] . ', ' . $cache[$vv['article_organ_id']];
}
}
}
return ['authors' => $authors, 'organs' => $organs];
}
/**
* @title 获取话题文章列表
* @description 获取话题文章列表
* @author wangjinlei
* @url /api/Article/getTopicArticles
* @method POST
*
* @param name:topic_id type:int require:1 desc:话题id
* @param name:pageIndex type:int require:1 desc:当前页码数
* @param name:pageSize type:int require:1 desc:单页数据条数
*
* @return topicInfo:话题信息#
* @return articleList:文章信息#
* @return count:总数
*/
public function getTopicArticles() {
$data = $this->request->post();
$topic_info = $this->journal_topic_obj->where('journal_topic_id', $data['topic_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $topic_info['journal_id'])->find();
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
$list = $this->article_to_topic_obj->field('j_article.*,j_journal_stage.*')
->join(array(['j_article', 'j_article_to_topic.article_id = j_article.article_id', 'LEFT'], ['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT']))
->where('j_article_to_topic.topic_id', $data['topic_id'])
->where('j_article_to_topic.state', 0)
// ->where('j_journal_stage.stage_year','>',intval(date('Y'))-3)
->orderRaw('j_journal_stage.stage_year desc ,(abs_num+pdf_num) desc')
// ->order('j_article.journal_stage_id desc , j_article.article_id desc')
->limit($limit_start, $data['pageSize'])
->select();
$count = $this->article_to_topic_obj
->join(array(['j_article', 'j_article_to_topic.article_id = j_article.article_id', 'LEFT'], ['j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT']))
->where('j_article_to_topic.topic_id', $data['topic_id'])
->where('j_article_to_topic.state', 0)
// ->where('j_journal_stage.stage_year','>',intval(date('Y'))-3)
->count();
$re['topicInfo'] = $topic_info;
$re['articleList'] = strongArticleList($list);
$re['count'] = $count;
return jsonSuccess($re);
}
private function getAuthor($article) {
$where['article_id'] = $article['article_id'];
$where['state'] = 0;
$list = $this->article_author_obj->where($where)->select();
$frag = '';
foreach ($list as $k => $v) {
$ca = '';
if ($v['orcid'] != '') {
$ca = '
';
}
$frag = $frag == '' ? '' . $v['author_name'] . $ca : $frag . ', ' . $v['author_name'] . $ca;
}
return $frag;
}
/**
* @title 获取stage文章列表
* @description 获取stage文章列表
* @author wangjinlei
* @url /api/Article/getStageArticles
* @method POST
*
* @param name:stage_id type:int require:1 desc:分期id
*
* @return stageInfo:分期#
* @return articleList:文章信息#
*/
public function getStageArticles() {
$data = $this->request->post();
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $data['stage_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $stage_info['journal_id'])->find();
$order = "j_article.sort asc";
if(($journal_info['journal_id']==2&&$stage_info['journal_stage_id']>=337)||($journal_info['journal_id']==17&&$stage_info['journal_stage_id']>=346)||($journal_info['journal_id']==18&&$stage_info['journal_stage_id']>=338)){
$order = "j_article.sort desc";
}
$list = $this->article_obj->field('j_article.*,j_journal_stage.*,j_journal.title journal_title')
->join("j_journal", 'j_journal.journal_id = j_article.journal_id', 'left')
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.journal_stage_id', $data['stage_id'])
->where('j_article.state', 0)
->order($order)
->select();
$l = strongArticleList(choiseJtitle($list));
$re['stageInfo'] = $stage_info;
$re['articleList'] = $l;
return jsonSuccess($re);
}
/**
* @title 增加文章阅读数量
* @description 增加文章阅读数量
* @author wangjinlei
* @url /api/Article/addArticleNum
* @method POST
*
* @param name:article_id type:int require:1 desc:期刊id
* @param name:type type:string require:1 desc:类型(abs/html/pdf)
*
* @return article:文章详情
*/
public function addArticleNum() {
$data = $this->request->post();
$this->article_obj->where('article_id', $data['article_id'])->setInc($data['type'] . '_num');
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$re['article'] = $article_info;
return jsonSuccess($re);
}
/**
* @title 获取top文章列表
* @description 获取top文章列表
* @author wangjinlei
* @url /api/Article/getTopArt
* @method POST
*
* @param name:journal_id type:int require:1 desc:期刊id
* @param name:type type:string require:1 desc:类型(cited/read/download)
* @param name:pageIndex type:int require:1 desc:当前页码数
* @param name:pageSize type:int require:1 desc:单页数据条数
*
* @return articleList:文章信息#
* @return count:总数
*
*/
public function getTopArt() {
$data = $this->request->post();
$journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find();
$limit_start = ($data['pageIndex'] - 1) * $data['pageSize'];
$list = [];
if ($data['type'] == 'cited') {
$list = $this->article_obj->field('j_article.*,j_journal_stage.*')
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.journal_id', $data['journal_id'])
->where('j_article.state', 0)
->where('j_journal_stage.stage_year', '>=', '2019')
->where('j_journal_stage.is_publish', 1)
->order('j_article.cited desc')
->limit($limit_start, $data['pageSize'])
->select();
} else if ($data['type'] == 'read') {
$list = $this->article_obj->field('j_article.*,j_journal_stage.*')
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.journal_id', $data['journal_id'])
->where('j_article.state', 0)
->where('j_journal_stage.is_publish', 1)
->where('j_journal_stage.stage_year', '>=', '2019')
->order('j_article.abs_num desc')
->limit($limit_start, $data['pageSize'])
->select();
} else {
$list = $this->article_obj->field('j_article.*,j_journal_stage.*')
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.journal_id', $data['journal_id'])
->where('j_article.state', 0)
->where('j_journal_stage.is_publish', 1)
->where('j_journal_stage.stage_year', '>=', '2019')
->orderRaw('j_article.html_num+j_article.pdf_num desc')
->limit($limit_start, $data['pageSize'])
->select();
}
$count = $this->article_obj
->join('j_journal_stage', 'j_article.journal_stage_id = j_journal_stage.journal_stage_id', 'LEFT')
->where('j_article.journal_id', $data['journal_id'])
->where('j_article.state', 0)
->where('j_journal_stage.is_publish', 1)
->where('j_journal_stage.stage_year', '>=', '2019')
->count();
$re['articleList'] = strongArticleList($list,false);
$re['count'] = $count;
return jsonSuccess($re);
}
/**获取文章引用
* @return void
*/
public function getArticleCites(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$list = $this->article_cite_obj->where("article_id",$data['article_id'])->where("state",1)->where("is_wos",1)->select();
$re['list'] = $list;
return jsonSuccess($re);
}
/**
* @title 获取文章ris文件
* @description 获取文章ris文件
* @author wangjinlei
* @url /api/Article/getArticleRis
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
* @return url:地址
*/
public function getArticleRis() {
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/ris/' . $filename . '.ris';
if (!file_exists($file_path)) {
//创建ris文件的内容
$ris = 'TY - JOUR' . "\n";
$ris .= 'T1 - ' . $article_info['title'] . "\n";
$authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
foreach ($authors as $vv) {
$ris .= 'AU - ' . $vv['last_name'] . ', ' . $vv['first_name'] . "\n";
}
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$ris .= 'JO - ' . $journal['title'] . "\n";
$ris .= 'VL - ' . $stage_info['stage_vol'] . "\n";
$ca_fq = explode('-', $stage_info['stage_page']);
$ris .= 'SP - ' . $ca_fq[0] . "\n";
if (isset($ca_fq[1])) {
$ris .= 'EP - ' . $ca_fq[1] . "\n";
}
$ris .= 'PY - ' . $stage_info['stage_year'] . "\n";
$ris .= 'DA - ' . $this->chendate($stage_info['issue_date']) . "\n";
$ris .= 'SN - ' . $journal['issn'] . "\n";
$ris .= 'DO - https://doi.org/' . $article_info['doi'] . "\n";
$ris .= 'UR - https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . "\n";
$ris .= 'J2 - ' . $journal['jabbr'] . "\n";
$ris .= 'JF - ' . $journal['title'] . "\n";
$kws = explode(', ', $article_info['keywords']);
foreach ($kws as $vvv) {
$ris .= 'KW - ' . str_replace('', '', str_replace('', '', $vvv)) . "\n";
}
$abs = str_replace('Abstract', '', strip_tags(str_replace(" ", "", htmlspecialchars_decode($article_info['abstract']))));
$ris .= 'AB - ' . $abs . "\n";
$ris .= 'ER - ' . "\n";
//生成ris文件
file_put_contents($file_path, $ris);
}
$re['url'] = '/public/article/ris/' . $filename . '.ris';
return jsonSuccess($re);
}
/**
* @title 获取文章enw文件
* @description 获取文章enw文件
* @author wangjinlei
* @url /api/Article/getArticleenw
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
* @return url:地址
*/
public function getArticleenw() {
$data = $this->request->post();
// $data['article_id'] = 3;
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/enw/' . $filename . '.enw';
if (!file_exists($file_path)) {
//创建ris文件的内容
$ris = 'TY - JOUR' . "\n";
$ris .= 'T1 - ' . $article_info['title'] . "\n";
$authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
foreach ($authors as $vv) {
$ris .= 'AU - ' . $vv['last_name'] . ', ' . $vv['first_name'] . "\n";
}
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$ris .= 'JO - ' . $journal['title'] . "\n";
$ris .= 'VL - ' . $stage_info['stage_vol'] . "\n";
$ca_fq = explode('-', $stage_info['stage_page']);
$ris .= 'SP - ' . $ca_fq[0] . "\n";
if (isset($ca_fq[1])) {
$ris .= 'EP - ' . $ca_fq[1] . "\n";
}
$ris .= 'PY - ' . $stage_info['stage_year'] . "\n";
$ris .= 'DA - ' . $this->chendate($stage_info['issue_date']) . "\n";
$ris .= 'SN - ' . $journal['issn'] . "\n";
$ris .= 'DO - https://doi.org/' . $article_info['doi'] . "\n";
$ris .= 'UR - https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . "\n";
$ris .= 'J2 - ' . $journal['jabbr'] . "\n";
$ris .= 'JF - ' . $journal['title'] . "\n";
$kws = explode(', ', $article_info['keywords']);
foreach ($kws as $vvv) {
$ris .= 'KW - ' . str_replace('', '', str_replace('', '', $vvv)) . "\n";
}
$abs = str_replace('Abstract', '', strip_tags(str_replace(" ", "", htmlspecialchars_decode($article_info['abstract']))));
$ris .= 'AB - ' . $abs . "\n";
$ris .= 'ER - ' . "\n";
//生成ris文件
file_put_contents($file_path, $ris);
}
$re['url'] = '/public/article/enw/' . $filename . '.enw';
return jsonSuccess($re);
}
/**
* @title 获取文章bib文件
* @description 获取文章bib文件
* @author wangjinlei
* @url /api/Article/getArticlebib
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
* @return url:地址
*/
public function getArticlebib() {
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/bib/' . $filename . '.bib';
if (!file_exists($file_path)) {
//创建ris文件的内容
$ris = '@article{' . $article_info['doi'] . ",\n";
$ris .= 'title = "' . $article_info['title'] . '"' . ",\n";
$authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$ris .= 'journal = "' . $journal['title'] . '"' . ",\n";
$ris .= 'volume = "' . $stage_info['stage_vol'] . '"' . ",\n";
$ris .= 'pages = "' . $stage_info['stage_page'] . '"' . ",\n";
$ris .= 'year = "' . $stage_info['stage_year'] . '"' . ",\n";
$ris .= 'issn = "' . $journal['issn'] . '"' . ",\n";
$ris .= 'doi = "https://doi.org/' . $article_info['doi'] . '"' . ",\n";
$ris .= 'url = "https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . '"' . ",\n";
$auts = '';
foreach ($authors as $vv) {
$auts .= $vv['first_name'] . ' ' . $vv['last_name'] . " and ";
}
$ris .= 'author = "' . substr($auts, 0, -5) . '"' . ",\n";
$ris .= 'keywords = "' . str_replace('', '', str_replace('', '', $article_info['keywords'])) . '"' . ".\n";
$ris .= 'abstract = "' . str_replace('Abstract', '', strip_tags(str_replace(" ", "", htmlspecialchars_decode($article_info['abstract'])))) . '"' . "\n";
$ris .= '}';
file_put_contents($file_path, $ris);
}
$re['url'] = '/public/article/bib/' . $filename . '.bib';
return jsonSuccess($re);
}
/**
* 获取liferesearch的文章详情
*/
public function getLifeResearch() {
echo "Life Research
";
$list = $this->article_obj->where('journal_id', 14)->where('state', 0)->select();
echo "Total number of articles:" . count($list) . "
";
foreach ($list as $k => $v) {
echo '' . ($k + 1) . '. ' . $v['title'] . '(' . $v['type'] . ')
';
$au = $this->article_author_obj->where('article_id', $v['article_id'])->where('state', 0)->select();
foreach ($au as $val) {
echo ' ';
echo $val['author_name'] . '(' . $val['author_country'] . ')
';
}
echo '
';
}
}
/**
* @title 获取文章text文件
* @description 获取文章text文件
* @author wangjinlei
* @url /api/Article/getArticletext
* @method POST
*
* @param name:article_id type:int require:1 desc:文章id
*
* @return url:地址
*/
public function getArticletext() {
$data = $this->request->post();
$article_info = $this->article_obj->where('article_id', $data['article_id'])->find();
$filename = trim(strrchr($article_info['doi'], '/'), '/');
$file_path = '../public/article/text/' . $filename . '.txt';
if (!file_exists($file_path)) {
$authors = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('state', 0)->select();
$journal = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find();
$stage_info = $this->journal_stage_obj->where('journal_stage_id', $article_info['journal_stage_id'])->find();
$auts = '';
foreach ($authors as $vv) {
$auts .= $vv['first_name'] . ' ' . $vv['last_name'] . ", ";
}
$ris = substr($auts, 0, -2) . ",\n";
$ris .= $article_info['title'] . ",\n";
$ris .= $journal['title'] . ",\n";
$ris .= 'Volume ' . $stage_info['stage_vol'] . ",\n";
$ris .= $stage_info['stage_year'] . ",\n";
$ris .= 'Pages ' . $stage_info['stage_page'] . ",\n";
$ris .= 'ISSN ' . $journal['issn'] . ",\n";
$ris .= 'https://doi.org/' . $article_info['doi'] . ",\n";
$ris .= '(https://www.tmrjournals.com/article.html?J_num=' . $journal['journal_id'] . '&a_id=' . $article_info['article_id'] . ')' . "\n";
$ris .= 'Abstract:' . str_replace('Abstract', '', strip_tags(str_replace(" ", "", htmlspecialchars_decode($article_info['abstract'])))) . "\n";
$ris .= 'Keywords:' . str_replace('', '', str_replace('', '', str_replace(',', ';', $article_info['keywords']))) . "\n";
file_put_contents($file_path, $ris);
}
$re['url'] = '/public/article/text/' . $filename . '.txt';
return jsonSuccess($re);
}
private function chendate($rq) {
$st = explode(' ', $rq);
$yf = '01';
if (!isset($st[1])) {
return $rq;
}
switch ($st[1]) {
case 'January':
$yf = '01';
break;
case 'February':
$yf = '02';
break;
case 'March';
$yf = '03';
break;
case 'April';
$yf = '04';
break;
case 'May';
$yf = '05';
break;
case 'June';
$yf = '06';
break;
case 'July';
$yf = '07';
break;
case 'August';
$yf = '08';
break;
case 'September';
$yf = '09';
break;
case 'October';
$yf = '10';
break;
case 'November';
$yf = '11';
break;
case 'December';
$yf = '12';
break;
}
return $st[2] . '/' . $yf . '/' . $st[0] . '/';
}
}