diff --git a/application/api/controller/Article.php b/application/api/controller/Article.php index 359c14c..44a71ca 100644 --- a/application/api/controller/Article.php +++ b/application/api/controller/Article.php @@ -71,32 +71,32 @@ class Article extends Controller { $author = $this->sys_author($authors, $organs, $atto); //标题斜体 - $caches = $this->article_ltai_obj->where('article_id',$article_info['article_id'])->where('state',0)->column('content'); + $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); + 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){ + if ($journal_info['journal_id'] == 22) { $cite = $article_info['abbr'] . '. ' . $article_info['title'] . '[J]. ' . $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']; + } 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']; } - + // echo ($article_info['article_id']<1799&&$article_info['npp']=='Cancer Adv'?'TMR Cancer':$article_info['npp']); - - if(stripos($article_info['npp'], '-')){ + + if (stripos($article_info['npp'], '-')) { $cc = explode('-', $article_info['npp']); $article_info['first_page'] = $cc[0]; $article_info['last_page'] = $cc[1]; } - + $article_info['publication'] = date('Y/m/d', strtotime($article_info['pub_date'])); - + //修改keywords $article_info['keywords'] = str_replace(',', '    ', $article_info['keywords']); @@ -108,12 +108,11 @@ class Article extends Controller { $re['cite'] = $cite; return jsonSuccess($re); } - - - public function myttt(){ + + public function myttt() { echo 'ok'; } - + /** * @title 获取文章话题 * @description 获取文章话题 @@ -125,23 +124,23 @@ class Article extends Controller { * * @return topics:话题列表# */ - public function getTopicsForArticle(){ + 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) + ->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']); + + 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 获取关键词相关文章 @@ -153,27 +152,30 @@ class Article extends Controller { * * */ - public function getArticleByKeywords(){ + public function getArticleByKeywords() { $data = $this->request->post(); - $article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); - if($article_info['keywords']==''){ - return jsonSuccess([]); + $article_info = $this->article_obj->where('article_id', $data['article_id'])->find(); + $res_key = []; + $res_rel = $this->article_obj->where("article_id","in", object_to_array(json_decode($article_info['related'])))->where('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(); } - $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 = $this->article_obj->where($wstr)->limit(5)->select(); - foreach ($res as $k => $v){ - $res[$k]['journal'] = $this->journal_obj->where('journal_id',$v['journal_id'])->find(); - $res[$k]['stage'] = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); + + $res = array_merge($res_key,$res_rel); + foreach ($res as $k => $v) { + $res[$k]['journal'] = $this->journal_obj->where('journal_id', $v['journal_id'])->find(); + $res[$k]['stage'] = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find(); } return jsonSuccess($res); } - + private function sys_author($authors, $organs, $atto) { $cache = []; foreach ($organs as $k => $v) { @@ -209,7 +211,7 @@ class Article extends Controller { 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(); + $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'])) @@ -218,7 +220,7 @@ class Article extends Controller { // ->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']) + ->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'])) @@ -228,11 +230,11 @@ class Article extends Controller { ->count(); //获取作者 foreach ($list as $k => $v) { - $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); + $stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find(); //组合cite信息 $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; - $cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; - $cache_topic = $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',$v['article_id'])->where('j_article_to_topic.state',0)->select(); + $cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'], $journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; + $cache_topic = $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', $v['article_id'])->where('j_article_to_topic.state', 0)->select(); $list[$k]['topic'] = $cache_topic; $list[$k]['cite'] = $cite; @@ -252,6 +254,7 @@ class Article extends Controller { $re['count'] = $count; return jsonSuccess($re); } + private function getAuthor($article) { $where['article_id'] = $article['article_id']; $where['state'] = 0; @@ -259,10 +262,10 @@ class Article extends Controller { $frag = ''; foreach ($list as $k => $v) { $ca = ''; - if($v['orcid']!=''){ - $ca = ''; + if ($v['orcid'] != '') { + $ca = ''; } - $frag = $frag == '' ? '' . $v['author_name'].$ca : $frag . ', ' . $v['author_name'].$ca; + $frag = $frag == '' ? '' . $v['author_name'] . $ca : $frag . ', ' . $v['author_name'] . $ca; } return $frag; } @@ -282,9 +285,9 @@ class Article extends Controller { 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(); + $journal_info = $this->journal_obj->where('journal_id', $stage_info['journal_id'])->find(); $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", '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) @@ -292,11 +295,11 @@ class Article extends Controller { ->select(); //获取作者 foreach ($list as $k => $v) { - $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); + $stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find(); //组合cite信息 $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; - $cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; - $cache_topic = $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',$v['article_id'])->where('j_article_to_topic.state',0)->select(); + $cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'], $journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; + $cache_topic = $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', $v['article_id'])->where('j_article_to_topic.state', 0)->select(); $list[$k]['topic'] = $cache_topic; $list[$k]['cite'] = $cite; @@ -316,7 +319,7 @@ class Article extends Controller { $re['articleList'] = $l; return jsonSuccess($re); } - + /** * @title 增加文章阅读数量 * @description 增加文章阅读数量 @@ -329,12 +332,12 @@ class Article extends Controller { * * @return article:文章详情 */ - public function addArticleNum(){ + 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(); - + + $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); } @@ -357,7 +360,7 @@ class Article extends Controller { */ public function getTopArt() { $data = $this->request->post(); - $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); + $journal_info = $this->journal_obj->where('journal_id', $data['journal_id'])->find(); $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $list = []; if ($data['type'] == 'cited') { @@ -365,52 +368,52 @@ class Article extends Controller { ->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) + ->where('j_journal_stage.stage_year', '>=', '2019') + ->where('j_journal_stage.is_publish', 1) ->order('j_article.cited desc') - ->limit($limit_start,$data['pageSize']) + ->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') + ->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']) + ->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') + ->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']) + ->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') + ->where('j_journal_stage.is_publish', 1) + ->where('j_journal_stage.stage_year', '>=', '2019') ->count(); //获取作者 foreach ($list as $k => $v) { - $stage_info = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); + $stage_info = $this->journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find(); //组合cite信息 $no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):'; - $cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; - $cache_topic = $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',$v['article_id'])->where('j_article_to_topic.state',0)->select(); + $cite = $v['abbr'] . '. ' . $v['title'] . '. ' . choiseJabbr($v['article_id'], $journal_info['jabbr']) . '. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi']; + $cache_topic = $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', $v['article_id'])->where('j_article_to_topic.state', 0)->select(); $list[$k]['topic'] = $cache_topic; $list[$k]['cite'] = $cite; $list[$k]['authortitle'] = $this->getAuthor($v); } - + //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); @@ -425,7 +428,7 @@ class Article extends Controller { $re['count'] = $count; return jsonSuccess($re); } - + /** * @title 获取文章ris文件 * @description 获取文章ris文件 @@ -437,48 +440,49 @@ class Article extends Controller { * * @return url:地址 */ - public function getArticleRis(){ + 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)){ + $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"; + $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"; + $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 .= '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"; + $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"; + 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"; + $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); + file_put_contents($file_path, $ris); } - $re['url'] = '/public/article/ris/'.$filename.'.ris'; + $re['url'] = '/public/article/ris/' . $filename . '.ris'; return jsonSuccess($re); } - + /** * @title 获取文章enw文件 * @description 获取文章enw文件 @@ -490,50 +494,50 @@ class Article extends Controller { * * @return url:地址 */ - public function getArticleenw(){ + 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)){ + $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"; + $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"; + $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 .= '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"; + $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"; + 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"; + $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); + file_put_contents($file_path, $ris); } - $re['url'] = '/public/article/enw/'.$filename.'.enw'; + $re['url'] = '/public/article/enw/' . $filename . '.enw'; return jsonSuccess($re); } - + /** * @title 获取文章bib文件 * @description 获取文章bib文件 @@ -545,58 +549,58 @@ class Article extends Controller { * * @return url:地址 */ - public function getArticlebib(){ + 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)){ + $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"; + $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 "; + 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 .= '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); + + file_put_contents($file_path, $ris); } - $re['url'] = '/public/article/bib/'.$filename.'.bib'; + $re['url'] = '/public/article/bib/' . $filename . '.bib'; return jsonSuccess($re); } - + /** * 获取liferesearch的文章详情 */ - public function getLifeResearch(){ + 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)."


"; + $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 '' . ($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 $val['author_name'] . '(' . $val['author_country'] . ')
'; } echo '
'; } } - + /** * @title 获取文章text文件 * @description 获取文章text文件 @@ -608,44 +612,44 @@ class Article extends Controller { * * @return url:地址 */ - public function getArticletext(){ + 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(); + $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'].", "; + 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); + $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'; + $re['url'] = '/public/article/text/' . $filename . '.txt'; return jsonSuccess($re); } - + private function chendate($rq) { $st = explode(' ', $rq); $yf = '01'; - if(!isset($st[1])){ + if (!isset($st[1])) { return $rq; } - switch ($st[1]){ + switch ($st[1]) { case 'January': $yf = '01'; break; @@ -683,7 +687,7 @@ class Article extends Controller { $yf = '12'; break; } - return $st[2].'/'.$yf.'/'.$st[0].'/'; + return $st[2] . '/' . $yf . '/' . $st[0] . '/'; } - + } diff --git a/application/master/controller/Article.php b/application/master/controller/Article.php index 118e27a..cadf9c1 100644 --- a/application/master/controller/Article.php +++ b/application/master/controller/Article.php @@ -1394,6 +1394,96 @@ http://www.crossref.org/schemas/crossref4.3.7.xsd">' . PHP_EOL . PHP_EOL; $txt = ROOT_PATH . 'public' . DS . 'xml' . DS . 'all_1.xml'; file_put_contents($txt, $xml); } + + /** + * @title 增加相关文章 + * @description 增加相关文章 + * @author wangjinlei + * @url /master/Article/addRelatedArticle + * @method POST + * + * @param name:article_id type:int require:1 desc:文章id + * @param name:add_article_id type:int require:1 desc:增加的文章id + */ + public function addRelatedArticle(){ + $data = $this->request->post(); + $article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); + $frag = []; + if($article_info['related']==""){ + $frag[] = $data['add_article_id']; + }else{ + if(in_array($data['add_article_id'], object_to_array(json_decode($article_info['related'])))){ + return jsonError("重复添加!!"); + } + $frag = array_merge(object_to_array(json_decode($article_info['related'])),[$data['add_article_id']]); + } + $this->article_obj->where("article_id",$data['article_id'])->update(['related'=> json_encode($frag)]); + return jsonSuccess([]); + } + + /** + * @title 删除相关文章 + * @description 删除相关文章 + * @author wangjinlei + * @url /master/Article/delRelatedArticle + * @method POST + * + * @param name:article_id type:int require:1 desc:文章id + * @param name:del_article_id type:int require:1 desc:增加的文章id + */ + public function delRelatedArticle(){ + $data = $this->request->post(); + $article_info = $this->article_obj->where("article_id",$data['article_id'])->find(); + $frag = object_to_array(json_decode($article_info['related'])); + foreach ($frag as $k => $v){ + if($v==$data['del_article_id']){ + unset($frag[$k]); + } + } + $this->article_obj->where("article_id",$data['article_id'])->update(['related'=> json_encode($frag)]); + return jsonSuccess([]); + } + + /** + * @title 获取相关文章 + * @description 获取相关文章 + * @author wangjinlei + * @url /master/Article/getRelatedArticles + * @method POST + * + * @param name:article_id type:int require:1 desc:文章id + * + * @return articles:文章列表# + */ + public function getRelatedArticles(){ + $data = $this->request->post(); + $article_info = $this->article_obj->where("article_id",$data['article_id'])->find(); + $list = $this->article_obj->where("article_id","in", object_to_array(json_decode($article_info['related'])))->select(); + $re['articles'] = $list; + return jsonSuccess($re); + } + + /** + * @title 获取期刊分期文章 + * @description 获取期刊分期文章 + * @author wangjinlei + * @url /master/Article/getArticlesByStages + * @method POST + * + * @param name:journal_id type:int require:1 desc:期刊id + * + * @return stages:文章列表# + */ + public function getArticlesByStages(){ + $data = $this->request->post(); + //获取期刊分期 + $stage = $this->journal_stage_obj->where('journal_id',$data['journal_id'])->where("state",0)->order('stage_vol desc,stage_no')->select(); + foreach ($stage as $k => $v){ + $stage[$k]['articles'] = $this->article_obj->where('journal_stage_id',$v['journal_stage_id'])->where('state',0)->select(); + } + $re['stages'] = $stage; + return jsonSuccess($re); + } /** * @title 注册doi