879 lines
30 KiB
PHP
879 lines
30 KiB
PHP
<?php
|
||
|
||
use PHPMailer\PHPMailer\PHPMailer;
|
||
use think\Db;
|
||
use think\Env;
|
||
use phpseclib3\Net\SFTP;
|
||
|
||
//use TCPDF;
|
||
|
||
// +----------------------------------------------------------------------
|
||
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||
// +----------------------------------------------------------------------
|
||
// | Author: 流年 <liu21st@gmail.com>
|
||
// +----------------------------------------------------------------------
|
||
// 应用公共文件
|
||
function authcode($str)
|
||
{
|
||
$key = substr(md5('ThinkPHP.CN'), 5, 8);
|
||
$str1 = substr(md5($str), 8, 10);
|
||
return md5($key . $str1);
|
||
}
|
||
|
||
/**
|
||
* 对象 转 数组
|
||
*
|
||
* @param object $obj 对象
|
||
* @return array
|
||
*/
|
||
function object_to_array($obj)
|
||
{
|
||
$obj = (array)$obj;
|
||
foreach ($obj as $k => $v) {
|
||
if (gettype($v) == 'resource') {
|
||
return;
|
||
}
|
||
if (gettype($v) == 'object' || gettype($v) == 'array') {
|
||
$obj[$k] = (array)object_to_array($v);
|
||
}
|
||
}
|
||
return $obj;
|
||
}
|
||
|
||
function choiseJabbr($article_id, $jabbr)
|
||
{
|
||
if ($article_id < 1799 && $jabbr == "Cancer Adv") {
|
||
return "TMR Cancer";
|
||
}
|
||
if ($article_id < 910 && $jabbr == "Microenviron Microecol Res") {
|
||
return "Tumor Microenviron Res";
|
||
}
|
||
if ($article_id < 1799 && $jabbr == "Med Theor Hypothesis") {
|
||
return "TMR Theory Hypoth";
|
||
}
|
||
if ($article_id < 1821 && $jabbr == "Clin Res Commun") {
|
||
return "TMR Clin Res";
|
||
}
|
||
if ($article_id < 1665 && $jabbr == "Aging Commun" && $article_id != 1612) {
|
||
return "TMR Aging";
|
||
}
|
||
if ($article_id < 1869 && $jabbr == "Nurs Commun") {
|
||
return "TMR Integr Nurs";
|
||
}
|
||
if ($article_id < 1981 && $jabbr == "Toxicol Adv") {
|
||
return "Asian Toxicol Res";
|
||
}
|
||
if ($article_id >= 1981 && $article_id < 2358 && $jabbr == 'Toxicol Adv') {
|
||
return "Toxicol Commun";
|
||
}
|
||
if ($article_id < 2190 && $jabbr == "Food Health") {
|
||
return "Food Ther Health Care";
|
||
}
|
||
if ($article_id < 2520 && $jabbr == "Chin Quintessence Res") {
|
||
return "经典中医研究";
|
||
}
|
||
if ($article_id < 2980 && $jabbr == "Integr Med Discov") {
|
||
return "TMR Integr Med";
|
||
}
|
||
if ($article_id < 3051 && $jabbr == "Pharmacol Discov") {
|
||
return "TMR Pharmacol Res";
|
||
}
|
||
if ($article_id < 3200 && $jabbr == "Nat Ther Adv") {
|
||
return "TMR Modern Herb Med";
|
||
}
|
||
|
||
return $jabbr;
|
||
}
|
||
|
||
function getArticleMains($article_id)
|
||
{
|
||
$article_main_obj = Db::name("article_main");
|
||
$list = $article_main_obj->where('article_id', $article_id)->where('state', 0)->where('is_add', 0)->select();
|
||
$frag = [];
|
||
foreach ($list as $v) {
|
||
$frag[] = $v;
|
||
$pre = $v['article_main_id'];
|
||
while ($pre != 0) {
|
||
$ca = $article_main_obj->where("pre_id", $pre)->where('state', 0)->find();
|
||
if ($ca) {
|
||
$frag[] = $ca;
|
||
$pre = $ca['article_main_id'];
|
||
} else {
|
||
$pre = 0;
|
||
}
|
||
}
|
||
}
|
||
return $frag;
|
||
}
|
||
|
||
function grabCiteFromCrossref($article_id,$act="zd"){
|
||
$article_obj = Db::name("article");
|
||
$article_cite_obj = Db::name("article_cite");
|
||
$article_info = $article_obj->where("article_id",$article_id)->find();
|
||
$cite_days = (time()-$article_info['cite_time'])/3600*24;
|
||
if($act=="zd"&&$cite_days<7){
|
||
return ;
|
||
}
|
||
$rr = pCrossrefCite($article_id);
|
||
foreach ($rr as $v){
|
||
$c = $article_cite_obj->where("doi",$v['doi'])->find();
|
||
if($c){continue;}
|
||
$articleEntity['article_id'] = $article_id;
|
||
$articleEntity['journal_id'] = $article_info['journal_id'];
|
||
$articleEntity['doi'] = $v['doi'];
|
||
$articleEntity['journal_name'] = $v['journal_title'];
|
||
$articleEntity['article_name'] = $v['article_title'];
|
||
$articleEntity['author'] = formateAuthor(isset($v['contributors']['contributor'])?$v['contributors']['contributor']:null);
|
||
$articleEntity['vol'] = formateVol($v);
|
||
$articleEntity['ctime'] = time();
|
||
$articleEntity['state'] = 1;
|
||
$article_cite_obj->insert($articleEntity);
|
||
}
|
||
$article_obj->where("article_id",$article_id)->update(['cite_time'=>time()]);
|
||
|
||
}
|
||
|
||
function formateVol($v){
|
||
$flag = "";
|
||
if(isset($v['year'])) {
|
||
$flag .= $v['year']." ";
|
||
}
|
||
if(isset($v['volume'])) {
|
||
$flag .= $v['volume']." ";
|
||
}
|
||
if(isset($v['first_page'])) {
|
||
$flag .= $v['first_page']." ";
|
||
}
|
||
if(isset($v['item_number'])&&!isset($v['first_page'])) {
|
||
$flag .= $v['item_number']." ";
|
||
}
|
||
if(isset($v['issue'])) {
|
||
$flag .= $v['issue']." ";
|
||
}
|
||
return trim($flag);
|
||
}
|
||
|
||
function formateAuthor($list){
|
||
$flag = '';
|
||
if (count($list)<=3){
|
||
foreach ($list as $v){
|
||
$flag .= (isset($v['given_name'])?$v['given_name']:"")." ".(isset($v['surname'])?$v['surname']:"").", ";
|
||
}
|
||
$flag = trim(trim($flag),",");
|
||
}else{
|
||
for ($i=0;$i<3;$i++){
|
||
$flag .= $list[$i]['given_name']." ".$list[$i]['surname'].", ";
|
||
}
|
||
$flag .= "et al";
|
||
}
|
||
|
||
return $flag;
|
||
}
|
||
|
||
|
||
|
||
function pCrossrefCite($article_id){
|
||
$article_obj = Db::name("article");
|
||
$article_info = $article_obj->where("article_id",$article_id)->find();
|
||
$get_url = "https://doi.crossref.org/servlet/getForwardLinks";
|
||
$get_data["usr"] = "books@tmrjournals.com/tmrp";
|
||
$get_data["pwd"] = "849192806pnX";
|
||
$get_data["doi"] = $article_info['doi'];
|
||
$r = xml_to_array(myGet($get_url,$get_data));
|
||
$re = isset($r['crossref_result']['query_result']["body"]['forward_link'])?$r['crossref_result']['query_result']["body"]['forward_link']:null;
|
||
if($re==null){
|
||
return jsonSuccess(null);
|
||
}
|
||
$rr = [];
|
||
if(isset($re['journal_cite'])){
|
||
$rr[] = $re['journal_cite'];
|
||
}else{
|
||
foreach ($re as $kk=>$k){
|
||
if(!isset($k['journal_cite'])){continue;}
|
||
$rr[] = $k['journal_cite'];
|
||
}
|
||
}
|
||
return $rr;
|
||
}
|
||
|
||
|
||
|
||
function hasHtml($article_id){
|
||
$article_main_obj = Db::name("article_main");
|
||
$article_obj = Db::name("article");
|
||
$article_info = $article_obj->where("article_id",$article_id)->find();
|
||
$list = $article_main_obj->where('article_id', $article_id)->where('state', 0)->where('is_add', 0)->find();
|
||
if($article_info['file_html']!=""||$list){
|
||
return 1;
|
||
}elseif ($article_info['html_type']==2){
|
||
if($article_info['journal_stage_id'] == 579||$article_info['journal_stage_id'] == 582||$article_info['journal_stage_id'] == 586||$article_info['journal_stage_id'] == 587){
|
||
return 0;
|
||
}
|
||
if($article_id>3435){
|
||
return 1;
|
||
}else{
|
||
$url = "http://api.tmrjournals.com/public/index.php/api/Web/checkArticleMain";
|
||
$program['article_id'] = $article_id;
|
||
$res = object_to_array(json_decode(myPost($url, $program)));
|
||
if(isset($res['data']['check'])){
|
||
return $res['data']['check'];
|
||
}else{
|
||
return 0;
|
||
}
|
||
}
|
||
} else{
|
||
return 0;
|
||
}
|
||
}
|
||
|
||
function getArticleRefers($article_id)
|
||
{
|
||
$article_obj = Db::name("article");
|
||
$article_info = $article_obj->where('article_id', $article_id)->find();
|
||
$url = "http://api.tmrjournals.com/public/index.php/api/Web/getRefers";
|
||
$program['w_article_id'] = $article_info['article_id'];
|
||
$dois = explode("/", $article_info['doi']);
|
||
$program['doi'] = $dois[1];
|
||
$res = object_to_array(json_decode(myPost($url, $program)));
|
||
$refers = isset($res['data']['refers']) ? $res['data']['refers'] : [];
|
||
return $refers;
|
||
}
|
||
|
||
|
||
|
||
function getArticleMainsFor2($article_id){
|
||
$url = "http://api.tmrjournals.com/public/index.php/api/Web/getArticleMainsForJournal";
|
||
$program['article_id'] = $article_id;
|
||
$res = object_to_array(json_decode(myPost($url, $program)));
|
||
$refers = isset($res['data']['list']) ? $res['data']['list'] : [];
|
||
return $refers;
|
||
}
|
||
|
||
|
||
function getArticleTracks($doi)
|
||
{
|
||
$url = "http://api.tmrjournals.com/public/index.php/api/Web/getStackByDoi";
|
||
$program["doi"] = $doi;
|
||
$res = object_to_array(json_decode(myPost($url, $program)));
|
||
if ($res['code'] == 1) {
|
||
return [];
|
||
} else {
|
||
return $res['data']['msgs'];
|
||
}
|
||
}
|
||
|
||
|
||
function getAuthor($article) {
|
||
$article_author_obj = Db::name("article_author");
|
||
$where['article_id'] = $article['article_id'];
|
||
$where['state'] = 0;
|
||
$list = $article_author_obj->where($where)->select();
|
||
$frag = '';
|
||
foreach ($list as $k => $v) {
|
||
$ca = '';
|
||
if($v['orcid']!=''){
|
||
$ca = '<a href="https://orcid.org/'.$v['orcid'].'" target="_blank"><img src="img/or_id.png" alt="" style="width: 13px;margin-left: 3px;"></a>';
|
||
}
|
||
$frag = $frag == '' ? '' . $v['author_name'].$ca : $frag . ', ' . $v['author_name'].$ca;
|
||
}
|
||
return $frag;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function pushSFTPForScopus($file,$pdf_file,$stage_info)
|
||
{
|
||
$host = 'sftp-opsbank2.elsevier.com';
|
||
$port = 22; // SFTP 默认端口号
|
||
$username = 'pdf-e';
|
||
$password = '?b#W5=T4';
|
||
|
||
// 创建 SFTP 连接
|
||
$sftp = new SFTP($host, $port);
|
||
|
||
if (!$sftp->login($username, $password)) {
|
||
exit('SFTP 登录失败');
|
||
}
|
||
|
||
// 列出远程服务器的文件
|
||
// $fileList = $sftp->nlist();
|
||
// print_r($fileList);
|
||
|
||
// 上传文件到 SFTP 服务器
|
||
// if($stage_info !=null){
|
||
// $bb = '/data/incoming/tmr/'.$stage_info['stage_year']."tmr-".$stage_info['stage_vol']."-".$stage_info['stage_no']."/";
|
||
// }else{
|
||
$bb = '/data/incoming/tmr/';
|
||
// }
|
||
$localFile = ROOT_PATH."public/articleXML/".$file;
|
||
$remoteFile = $bb.$stage_info['stage_year']."v".$stage_info['stage_vol']."n".$stage_info['stage_no']."-".$file;
|
||
|
||
$res = $sftp->put($remoteFile, $localFile, SFTP::SOURCE_LOCAL_FILE);
|
||
|
||
//上传pdf
|
||
$localPdf = ROOT_PATH."public/articlePDF/".$pdf_file;
|
||
|
||
$remoteFilePdf = $bb.$stage_info['stage_year']."v".$stage_info['stage_vol']."n".$stage_info['stage_no']."-".str_replace(".xml",".pdf",$file);
|
||
|
||
$res1 = $sftp->put($remoteFilePdf,$localPdf,SFTP::SOURCE_LOCAL_FILE);
|
||
if ($res&$res1) {
|
||
echo "文件上传成功!";
|
||
} else {
|
||
// echo $sftp->getErrors();
|
||
var_dump($sftp->getErrors());
|
||
// return $sftp;
|
||
}
|
||
}
|
||
|
||
|
||
function strongArticleList($list){
|
||
$journal_stage_obj = Db::name("journal_stage");
|
||
$journal_obj = Db::name("journal");
|
||
$journals_ltai_obj = Db::name("article_ltai");
|
||
$article_cite_obj = Db::name("article_cite");
|
||
foreach ($list as $k => $v) {
|
||
$stage_info = $journal_stage_obj->where('journal_stage_id', $v['journal_stage_id'])->find();
|
||
$journal_info = $journal_obj->where('journal_id', $v['journal_id'])->find();
|
||
//组合cite信息
|
||
$no = $stage_info['stage_no'] == 0 ? ':' : '(' . $stage_info['stage_no'] . '):';
|
||
$cite = $v['abbr'] . '. ' . $v['title'] . '. <i>' . choiseJabbr($v['article_id'],$journal_info['jabbr']) . '</i>. ' . $stage_info['stage_year'] . ';' . $stage_info['stage_vol'] . $no . $v['npp'] . '. doi:' . $v['doi'];
|
||
$list[$k]['cite'] = $cite;
|
||
$list[$k]['authortitle'] = getAuthor($v);
|
||
$list[$k]["mains"] = null;
|
||
$list[$k]['has_html'] = hasHtml($v['article_id']);
|
||
$list[$k]["cite_num"] = $article_cite_obj->where("article_id",$v['article_id'])->where("state",1)->where("is_wos",1)->count();
|
||
$list[$k]['stage_year'] = $stage_info['stage_year'];
|
||
$list[$k]['journal_short'] = $journal_info["jabbr"];
|
||
$list[$k]['journal_title'] = choiseti1($v['article_id'],$journal_info['title']);
|
||
$list[$k]['stage_vol'] = $stage_info['stage_vol'];
|
||
$list[$k]['stage_no'] = $stage_info['stage_no'];
|
||
$list[$k]['usx'] = $journal_info['usx'];
|
||
}
|
||
|
||
//标题斜体
|
||
foreach ($list as $k => $v) {
|
||
$caches = $journals_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, '<i>' . $val . '</i>', $cache_title);
|
||
}
|
||
$list[$k]['title'] = $cache_title;
|
||
}
|
||
//连续出版判断,决定是否显示出版时间
|
||
foreach ($list as $k => $v){
|
||
$ca_stage = $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;
|
||
}
|
||
}
|
||
return $list;
|
||
}
|
||
|
||
function choiseJtitle($list)
|
||
{
|
||
foreach ($list as $k => $v) {
|
||
$list[$k]['journal_title'] = choiseti($v);
|
||
}
|
||
return $list;
|
||
}
|
||
|
||
function choiseti($v)
|
||
{
|
||
if ($v['article_id'] < 1799 && $v['journal_title'] == "Cancer Advances") {
|
||
return "TMR Cancer";
|
||
}
|
||
if ($v['article_id'] < 910 && $v['journal_title'] == "Microenvironment & Microecology Research") {
|
||
return "Tumor Microenvironment Research";
|
||
}
|
||
if ($v['article_id'] < 1799 && $v['journal_title'] == "Medical Theory and Hypothesis") {
|
||
return "TMR Theory and Hypothesis";
|
||
}
|
||
if ($v['article_id'] < 1821 && $v['journal_title'] == "Clinical Research Communications") {
|
||
return "TMR Clinical Research";
|
||
}
|
||
if ($v['article_id'] < 1665 && $v['journal_title'] == "Aging Communications" && $v['article_id'] != 1612) {
|
||
return "TMR Aging";
|
||
}
|
||
if ($v['article_id'] < 1869 && $v['journal_title'] == "Nursing Communications") {
|
||
return "TMR Integrative Nursing";
|
||
}
|
||
if ($v['article_id'] < 1981 && $v['journal_title'] == "Toxicology Advances") {
|
||
return "Asian Toxicology Research";
|
||
}
|
||
if ($v['article_id'] >= 1981 && $v['article_id'] < 2358 && $v['journal_title'] == "Toxicology Advances") {
|
||
return "Toxicology Communications";
|
||
}
|
||
if ($v['article_id'] < 2190 && $v['journal_title'] == "Food and Health") {
|
||
return "Food Therapy and Health Care";
|
||
}
|
||
if ($v['article_id'] < 2520 && $v['journal_title'] == "Chin Quintessence Res") {
|
||
return "经典中医研究";
|
||
}
|
||
if ($v['article_id'] < 2980 && $v['journal_title'] == "Integrative Medicine Discovery") {
|
||
return "TMR Integrative Medicine";
|
||
}
|
||
if ($v["article_id"] < 3051 && $v['journal_title'] == "Pharmacology Discovery") {
|
||
return "TMR Pharmacology Research";
|
||
}
|
||
if ($v["article_id"] < 3200 && $v['journal_title'] == "Natural Therapy Advances") {
|
||
return "TMR Modern Herbal Medicine";
|
||
}
|
||
return $v['journal_title'];
|
||
}
|
||
|
||
function choiseti1($article_id, $journal_title)
|
||
{
|
||
if ($article_id < 1799 && $journal_title == "Cancer Advances") {
|
||
return "TMR Cancer";
|
||
}
|
||
if ($article_id < 910 && $journal_title == "Microenvironment & Microecology Research") {
|
||
return "Tumor Microenvironment Research";
|
||
}
|
||
if ($article_id < 1799 && $journal_title == "Medical Theory and Hypothesis") {
|
||
return "TMR Theory and Hypothesis";
|
||
}
|
||
if ($article_id < 1821 && $journal_title == "Clinical Research Communications") {
|
||
return "TMR Clinical Research";
|
||
}
|
||
if ($article_id < 1665 && $journal_title == "Aging Communications" && $article_id != 1612) {
|
||
return "TMR Aging";
|
||
}
|
||
if ($article_id < 1869 && $journal_title == "Nursing Communications") {
|
||
return "TMR Integrative Nursing";
|
||
}
|
||
if ($article_id < 1981 && $journal_title == "Toxicology Advances") {
|
||
return "Asian Toxicology Research";
|
||
}
|
||
if ($article_id >= 1981 && $article_id < 2358 && $journal_title == "Toxicology Advances") {
|
||
return "Toxicology Communications";
|
||
}
|
||
if ($article_id < 2190 && $journal_title == "Food and Health") {
|
||
return "Food Therapy and Health Care";
|
||
}
|
||
if ($article_id < 2520 && $journal_title == "Chinese Quintessence Research") {
|
||
return "Classical Chinese Medicine Research";
|
||
}
|
||
if ($article_id < 2980 && $journal_title == "Integrative Medicine Discovery") {
|
||
return "TMR Integrative Medicine";
|
||
}
|
||
if ($article_id < 3051 && $journal_title == "Pharmacology Discovery") {
|
||
return "TMR Pharmacology Research";
|
||
}
|
||
if ($article_id < 3200 && $journal_title == "Natural Therapy Advances") {
|
||
return "TMR Modern Herbal Medicine";
|
||
}
|
||
return $journal_title;
|
||
}
|
||
|
||
/**
|
||
* @function sendEmail
|
||
* @intro 发送邮件(带附件)
|
||
* @param $email 接收邮箱
|
||
* @param $title 邮件标题
|
||
* @param $from_name 发件人
|
||
* @param $content 邮件内容
|
||
* @param $memail 邮件内容
|
||
* @param $mpassword 邮件内容
|
||
* @param $attachmentFile 附件 (string | array)
|
||
* @return array
|
||
*/
|
||
function sendEmail($email = '', $title = '', $from_name = '', $content = '', $memail = '', $mpassword = '', $attachmentFile = '')
|
||
{
|
||
date_default_timezone_set('PRC');
|
||
//Create a new PHPMailer instance
|
||
$mail = new PHPMailer;
|
||
//Tell PHPMailer to use SMTP
|
||
$mail->isSMTP();
|
||
//Enable SMTP debugging
|
||
// 0 = off (for production use)
|
||
// 1 = client messages
|
||
// 2 = client and server messages
|
||
$mail->SMTPDebug = 0;
|
||
//Ask for HTML-friendly debug output
|
||
$mail->Debugoutput = 'html';
|
||
//charset
|
||
$mail->CharSet = 'UTF-8';
|
||
//Set the hostname of the mail server
|
||
$mail->Host = "smtp.qiye.aliyun.com"; //请填写你的邮箱服务器
|
||
//Set the SMTP port number - likely to be 25, 465 or 587
|
||
$mail->Port = 25; //端口号
|
||
//Whether to use SMTP authentication
|
||
$mail->SMTPAuth = true;
|
||
//Username to use for SMTP authentication
|
||
$mail->Username = $memail == '' ? "tmrweb@tmrjournals.com" : $memail; //发件邮箱用户名
|
||
//Password to use for SMTP authentication
|
||
$mail->Password = $mpassword == '' ? "Wu999999tmrwe" : $mpassword; //发件邮箱密码
|
||
//Set who the message is to be sent from
|
||
$mail->setFrom($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name);
|
||
//Set an alternative reply-to address(用户直接回复邮件的地址)
|
||
$mail->addReplyTo($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name);
|
||
//Set who the message is to be sent to
|
||
$mail->addAddress($email);
|
||
//Set the subject line
|
||
$mail->Subject = $title;
|
||
//Read an HTML message body from an external file, convert referenced images to embedded,
|
||
//convert HTML into a basic plain-text alternative body
|
||
$mail->msgHTML($content);
|
||
//Replace the plain text body with one created manually
|
||
$mail->AltBody = '';
|
||
if (is_array($attachmentFile)) {
|
||
for ($i = 0; $i < count($attachmentFile); $i++) {
|
||
$mail->addAttachment($attachmentFile[$i], 'thanks.pdf' . $i); //这里可以是多维数组,然后循环附件的文件和名称
|
||
}
|
||
} else {
|
||
if ($attachmentFile != '') {
|
||
//Attach an image file
|
||
$mail->addAttachment($attachmentFile, 'thanks.pdf');
|
||
}
|
||
}
|
||
//send the message, check for errors
|
||
if (!$mail->send()) {
|
||
$status = 0;
|
||
$data = "邮件发送失败" . $mail->ErrorInfo;;
|
||
} else {
|
||
$status = 1;
|
||
$data = "邮件发送成功";
|
||
}
|
||
return ['status' => $status, 'data' => $data]; //返回值(可选)
|
||
}
|
||
|
||
function sendEmail_data($email = '', $title = '', $from_name = '', $content = '', $memail = '', $mpassword = '', $attachmentFile = '')
|
||
{
|
||
ini_set('memory_limit', '3200M');
|
||
date_default_timezone_set('PRC');
|
||
//Create a new PHPMailer instance
|
||
$mail = new PHPMailer;
|
||
//Tell PHPMailer to use SMTP
|
||
$mail->isSMTP();
|
||
//Enable SMTP debugging
|
||
// 0 = off (for production use)
|
||
// 1 = client messages
|
||
// 2 = client and server messages
|
||
$mail->SMTPDebug = 0;
|
||
//Ask for HTML-friendly debug output
|
||
$mail->Debugoutput = 'html';
|
||
//charset
|
||
$mail->CharSet = 'UTF-8';
|
||
//Set the hostname of the mail server
|
||
$mail->Host = "smtp.qiye.aliyun.com"; //请填写你的邮箱服务器
|
||
//Set the SMTP port number - likely to be 25, 465 or 587
|
||
$mail->Port = 25; //端口号
|
||
//Whether to use SMTP authentication
|
||
$mail->SMTPAuth = true;
|
||
//Username to use for SMTP authentication
|
||
$mail->Username = $memail == '' ? "tmrweb@tmrjournals.com" : $memail; //发件邮箱用户名
|
||
//Password to use for SMTP authentication
|
||
$mail->Password = $mpassword == '' ? "Wu999999tmrwe" : $mpassword; //发件邮箱密码
|
||
//Set who the message is to be sent from
|
||
$mail->setFrom($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name);
|
||
//Set an alternative reply-to address(用户直接回复邮件的地址)
|
||
$mail->addReplyTo($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name);
|
||
//Set who the message is to be sent to
|
||
$mail->addAddress($email);
|
||
//Set the subject line
|
||
$mail->Subject = $title;
|
||
//Read an HTML message body from an external file, convert referenced images to embedded,
|
||
//convert HTML into a basic plain-text alternative body
|
||
$mail->msgHTML($content);
|
||
//Replace the plain text body with one created manually
|
||
$mail->AltBody = '';
|
||
// if (is_array($attachmentFile)) {
|
||
// for ($i = 0; $i < count($attachmentFile); $i++) {
|
||
// $mail->addAttachment($attachmentFile[$i], 'thanks.pdf' . $i); //这里可以是多维数组,然后循环附件的文件和名称
|
||
// }
|
||
// } else {
|
||
if ($attachmentFile != '') {
|
||
//Attach an image file
|
||
$mail->addAttachment($attachmentFile, 'journal.zip');
|
||
}
|
||
// }
|
||
//send the message, check for errors
|
||
if (!$mail->send()) {
|
||
$status = 0;
|
||
$data = "邮件发送失败" . $mail->ErrorInfo;;
|
||
} else {
|
||
$status = 1;
|
||
$data = "邮件发送成功";
|
||
}
|
||
return ['status' => $status, 'data' => $data]; //返回值(可选)
|
||
}
|
||
|
||
function sendEmail1($email = '', $title = '', $from_name = '', $content = '', $memail = '', $mpassword = '', $attachmentFile = '')
|
||
{
|
||
date_default_timezone_set('PRC');
|
||
//Create a new PHPMailer instance
|
||
$mail = new PHPMailer;
|
||
//Tell PHPMailer to use SMTP
|
||
$mail->isSMTP();
|
||
//Enable SMTP debugging
|
||
// 0 = off (for production use)
|
||
// 1 = client messages
|
||
// 2 = client and server messages
|
||
$mail->SMTPDebug = 0;
|
||
//Ask for HTML-friendly debug output
|
||
$mail->Debugoutput = 'html';
|
||
//charset
|
||
$mail->CharSet = 'UTF-8';
|
||
//Set the hostname of the mail server
|
||
$mail->Host = "smtp.yeah.net"; //请填写你的邮箱服务器
|
||
// $mail->Host = "smtp.126.com";
|
||
//Set the SMTP port number - likely to be 25, 465 or 587
|
||
$mail->Port = 25; //端口号
|
||
//Whether to use SMTP authentication
|
||
$mail->SMTPAuth = true;
|
||
//Username to use for SMTP authentication
|
||
$mail->Username = $memail == '' ? "tmrweb@tmrjournals.com" : $memail; //发件邮箱用户名
|
||
//Password to use for SMTP authentication
|
||
$mail->Password = 'OBRTWMJCTWRKRMRP';//$mpassword == '' ? "Wu999999tmrwe" : $mpassword; //发件邮箱密码
|
||
//Set who the message is to be sent from
|
||
$mail->setFrom($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name);
|
||
//Set an alternative reply-to address(用户直接回复邮件的地址)
|
||
$mail->addReplyTo($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name);
|
||
//Set who the message is to be sent to
|
||
$mail->addAddress($email);
|
||
//Set the subject line
|
||
$mail->Subject = $title;
|
||
//Read an HTML message body from an external file, convert referenced images to embedded,
|
||
//convert HTML into a basic plain-text alternative body
|
||
$mail->msgHTML($content);
|
||
//Replace the plain text body with one created manually
|
||
$mail->AltBody = '';
|
||
if (is_array($attachmentFile)) {
|
||
for ($i = 0; $i < count($attachmentFile); $i++) {
|
||
$mail->addAttachment($attachmentFile[$i], 'thanks.pdf' . $i); //这里可以是多维数组,然后循环附件的文件和名称
|
||
}
|
||
} else {
|
||
if ($attachmentFile != '') {
|
||
//Attach an image file
|
||
$mail->addAttachment($attachmentFile, 'thanks.pdf');
|
||
}
|
||
}
|
||
//send the message, check for errors
|
||
if (!$mail->send()) {
|
||
$status = 0;
|
||
$data = "邮件发送失败" . $mail->ErrorInfo;
|
||
} else {
|
||
$status = 1;
|
||
$data = "邮件发送成功";
|
||
}
|
||
return ['status' => $status, 'data' => $data]; //返回值(可选)
|
||
}
|
||
|
||
function aliemail($email, $title, $content)
|
||
{
|
||
// file_put_contents('/usr/a.txt', $email,FILE_APPEND);
|
||
vendor('aliemail.email');
|
||
$mailto = $email;
|
||
$mailsubject = $title;
|
||
//组合邮件公共样式
|
||
$pre = Env::get('emailtemplete.pre');
|
||
$net = Env::get('emailtemplete.net');
|
||
$net1 = str_replace("{{email}}", $email, $net);
|
||
$mailbody = $pre . $content . $net1;
|
||
$smtpserver = "smtpdm-ap-southeast-1.aliyun.com";
|
||
$smtpserverport = 80;
|
||
$smtpusermail = "propa@hellotmr.top";
|
||
// 发件人的账号,填写控制台配置的发信地址,比如xxx@xxx.com
|
||
$smtpuser = "propa@hellotmr.top";
|
||
// 访问SMTP服务时需要提供的密码(在控制台选择发信地址进行设置)
|
||
$smtppass = "Wu751019Pnx";
|
||
$mailsubject = "=?UTF-8?B?" . base64_encode($mailsubject) . "?=";
|
||
$mailtype = "HTML";
|
||
//可选,设置回信地址
|
||
$smtpreplyto = "tmr@tmrjournals.com";
|
||
$smtp = new \smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass);
|
||
$smtp->debug = false;
|
||
$cc = "";
|
||
$bcc = "";
|
||
$additional_headers = "";
|
||
//设置发件人名称,名称用户可以自定义填写。
|
||
$sender = $title;
|
||
$res = $smtp->sendmail($mailto, $smtpusermail, $mailsubject, $mailbody, $mailtype, $cc, $bcc, $additional_headers, $sender, $smtpreplyto);
|
||
return $res;
|
||
}
|
||
|
||
/**
|
||
* 生成文章sn号
|
||
* @return type
|
||
*/
|
||
function getArticleSN($abbr, $type)
|
||
{
|
||
$str = $abbr;
|
||
$str .= date('Y', time()) . $type . date('md', time());
|
||
$where['accept_sn'] = ['like', "$str%"];
|
||
$nowres = Db::name('article')->where($where)->select();
|
||
$last_num = 1;
|
||
if ($nowres) {
|
||
foreach ($nowres as $v) {
|
||
$now_num = intval(substr($v['accept_sn'], -3));
|
||
$last_num = $now_num > $last_num ? $now_num : $last_num;
|
||
}
|
||
$last_num += 1;
|
||
}
|
||
$last_str = sprintf("%03d", $last_num);
|
||
$str .= $last_str;
|
||
return $str;
|
||
}
|
||
|
||
/**
|
||
* 增加usermsg
|
||
*/
|
||
function add_usermsg($userid, $content, $url)
|
||
{
|
||
$msg_obj = Db::name('user_msg');
|
||
$msg_info = $msg_obj->where('user_id', $userid)
|
||
->where('url', $url)
|
||
->where('state', 0)
|
||
->find();
|
||
if ($msg_info) {
|
||
return true;
|
||
}
|
||
$msgdata['user_id'] = $userid;
|
||
$msgdata['content'] = $content;
|
||
$msgdata['url'] = $url;
|
||
$msgdata['ctime'] = time();
|
||
return $msg_obj->insert($msgdata);
|
||
}
|
||
|
||
function jsonSuccess($data)
|
||
{
|
||
return json(['code' => 0, 'msg' => 'success', 'data' => $data]);
|
||
}
|
||
|
||
function jsonError($msg)
|
||
{
|
||
return json(['code' => 1, 'msg' => $msg]);
|
||
}
|
||
|
||
function myPost($url, $param = array())
|
||
{
|
||
|
||
if (!is_array($param)) {
|
||
|
||
throw new Exception("参数必须为array");
|
||
|
||
}
|
||
|
||
$httph = curl_init($url);
|
||
|
||
// curl_setopt($httph, CURLOPT_SSL_VERIFYPEER, 0);
|
||
|
||
// curl_setopt($httph, CURLOPT_SSL_VERIFYHOST, 1);
|
||
|
||
curl_setopt($httph, CURLOPT_RETURNTRANSFER, 1);
|
||
|
||
curl_setopt($httph, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
|
||
|
||
curl_setopt($httph, CURLOPT_POST, 1);//设置为POST方式
|
||
|
||
curl_setopt($httph, CURLOPT_POSTFIELDS, $param);
|
||
|
||
// curl_setopt($httph, CURLOPT_RETURNTRANSFER,0);
|
||
|
||
// curl_setopt($httph, CURLOPT_HEADER,1);
|
||
|
||
$rst = curl_exec($httph);
|
||
|
||
curl_close($httph);
|
||
|
||
return $rst;
|
||
|
||
}
|
||
|
||
|
||
function myGet($url,$params)
|
||
{
|
||
$query_string = http_build_query($params);
|
||
$full_url = $url . '?' . $query_string;
|
||
$ch = curl_init();
|
||
curl_setopt($ch, CURLOPT_URL, $full_url); // 设置请求URL
|
||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 设置返回数据而不是直接输出
|
||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 禁用SSL验证
|
||
$response = curl_exec($ch);
|
||
if (curl_errno($ch)) {
|
||
echo 'Error:' . curl_error($ch);
|
||
}
|
||
curl_close($ch);
|
||
return $response;
|
||
}
|
||
|
||
function xml_to_array($xml)
|
||
{
|
||
$reg = "/<(\\w+)[^>]*?>([\\x00-\\xFF]*?)<\\/\\1>/";
|
||
if(preg_match_all($reg, $xml, $matches))
|
||
{
|
||
$count = count($matches[0]);
|
||
$arr = array();
|
||
for($i = 0; $i < $count; $i++)
|
||
{
|
||
$key = $matches[1][$i];
|
||
$val = xml_to_array( $matches[2][$i] ); // 递归
|
||
if(array_key_exists($key, $arr))
|
||
{
|
||
if(is_array($arr[$key]))
|
||
{
|
||
if(!array_key_exists(0,$arr[$key]))
|
||
{
|
||
$arr[$key] = array($arr[$key]);
|
||
}
|
||
}else{
|
||
$arr[$key] = array($arr[$key]);
|
||
}
|
||
$arr[$key][] = $val;
|
||
}else{
|
||
$arr[$key] = $val;
|
||
}
|
||
}
|
||
return $arr;
|
||
}else{
|
||
return $xml;
|
||
}
|
||
}
|
||
|
||
|
||
function ORCIDPost($url, $param = array())
|
||
{
|
||
|
||
if (!is_array($param)) {
|
||
|
||
throw new Exception("参数必须为array");
|
||
|
||
}
|
||
$headerArray = ['Content-Type: application/x-www-form-urlencoded'];
|
||
$httph = curl_init($url);
|
||
|
||
curl_setopt($httph, CURLOPT_SSL_VERIFYPEER, false);
|
||
|
||
// curl_setopt($httph, CURLOPT_SSL_VERIFYHOST, 1);
|
||
|
||
curl_setopt($httph, CURLOPT_RETURNTRANSFER, 1);
|
||
|
||
curl_setopt($httph, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
|
||
|
||
curl_setopt($httph, CURLOPT_POST, 1);//设置为POST方式
|
||
|
||
curl_setopt($httph, CURLOPT_POSTFIELDS, $param);
|
||
|
||
curl_setopt($httph, CURLOPT_HTTPHEADER, $headerArray);
|
||
|
||
// curl_setopt($httph, CURLOPT_RETURNTRANSFER,0);
|
||
|
||
// curl_setopt($httph, CURLOPT_HEADER,1);
|
||
|
||
$rst = curl_exec($httph);
|
||
|
||
curl_close($httph);
|
||
|
||
return $rst;
|
||
|
||
}
|
||
|