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'); } /** * @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']; } // //获取html // if($article_info['file_html']==''){ // $caches = $this->article_main_obj->where('article_id',$article_info['article_id'])->where('state',0)->select(); // if($caches){ // $article_info['file_html'] = $caches; // } // } if (stripos($article_info['npp'], '-')) { $cc = explode('-', $article_info['npp']); $article_info['first_page'] = $cc[0]; $article_info['last_page'] = $cc[1]; } //添加orDoi // 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']>=735&&$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']>=591&&$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']>=256&&$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']>=872&&$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'] = ''; // } 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']); //更改适应期刊改名后的期刊名称 $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['mains'] = getArticleMains($data['article_id']); return jsonSuccess($re); } 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->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(); } $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(); //获取作者 foreach ($list as $k => $v) { $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(); $list[$k]['topic'] = $cache_topic; $list[$k]['cite'] = $cite; $list[$k]['authortitle'] = $this->getAuthor($v); $list[$k]['mains'] = getArticleMains($v['article_id']); } //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } //连续出版判断,决定是否显示出版时间 foreach ($list as $k => $v){ $ca_stage = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); if(($v['journal_id']==2&&$ca_stage['stage_year']>=2022)||($v['journal_id']==18&&$ca_stage['stage_year']>=2022)||($v['journal_id']==17&&$ca_stage['stage_year']>=2019)){ $list[$k]['isShowOtime'] = 1; }else{ $list[$k]['isShowOtime'] = 0; } } $re['topicInfo'] = $topic_info; $re['articleList'] = $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(); //获取作者 foreach ($list as $k => $v) { $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(); $list[$k]['topic'] = $cache_topic; $list[$k]['cite'] = $cite; $list[$k]['journal_title'] = choiseti1($v['article_id'],$journal_info['title']); $list[$k]['authortitle'] = $this->getAuthor($v); $list[$k]['mains'] = getArticleMains($v['article_id']); } //标题斜体 foreach ($list as $k => $v) { $caches = $this->article_ltai_obj->where('article_id', $v['article_id'])->where('state', 0)->column('content'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } //连续出版判断,决定是否显示出版时间 foreach ($list as $k => $v){ $ca_stage = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); if(($v['journal_id']==2&&$ca_stage['stage_year']>=2022)||($v['journal_id']==18&&$ca_stage['stage_year']>=2022)||($v['journal_id']==17&&$ca_stage['stage_year']>=2019)){ $list[$k]['isShowOtime'] = 1; }else{ $list[$k]['isShowOtime'] = 0; } } $l = 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(); //获取作者 foreach ($list as $k => $v) { $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(); $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'); $cache_title = $v['title']; foreach ($caches as $val) { $cache_title = str_replace($val, '' . $val . '', $cache_title); } $list[$k]['title'] = $cache_title; } //连续出版判断,决定是否显示出版时间 foreach ($list as $k => $v){ $ca_stage = $this->journal_stage_obj->where('journal_stage_id',$v['journal_stage_id'])->find(); if(($v['journal_id']==2&&$ca_stage['stage_year']>=2022)||($v['journal_id']==18&&$ca_stage['stage_year']>=2022)||($v['journal_id']==17&&$ca_stage['stage_year']>=2019)){ $list[$k]['isShowOtime'] = 1; }else{ $list[$k]['isShowOtime'] = 0; } } $re['articleList'] = $list; $re['count'] = $count; 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] . '/'; } }