733 lines
22 KiB
PHP
733 lines
22 KiB
PHP
<?php
|
||
|
||
use PHPMailer\PHPMailer\PHPMailer;
|
||
use think\Db;
|
||
use think\Env;
|
||
use think\Cache;
|
||
|
||
//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);
|
||
}
|
||
|
||
/**
|
||
* @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
|
||
|
||
//组合邮件模板的头尾
|
||
$pre = Env::get('emailtemplete.pre');
|
||
$net = Env::get('emailtemplete.net');
|
||
$net = str_replace("{{email}}", $memail, $net);
|
||
|
||
// $mail->msgHTML($pre.$content.$net);
|
||
$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++) {
|
||
if ($attachmentFile[$i] != '') {
|
||
$mail->addAttachment($attachmentFile[$i], substr($attachmentFile[$i], strrpos($attachmentFile[$i], DS) + 1)); //这里可以是多维数组,然后循环附件的文件和名称
|
||
}
|
||
}
|
||
} else {
|
||
if ($attachmentFile != '') {
|
||
//Attach an image file
|
||
$mail->addAttachment($attachmentFile, substr($attachmentFile, strrpos($attachmentFile, DS) + 1));
|
||
}
|
||
}
|
||
//send the message, check for errors
|
||
if (!$mail->send()) {
|
||
$status = 0;
|
||
$data = "邮件发送失败" . $mail->ErrorInfo;;
|
||
} else {
|
||
$status = 1;
|
||
$data = "邮件发送成功";
|
||
}
|
||
return ['status' => $status, 'data' => $data]; //返回值(可选)
|
||
}
|
||
|
||
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 get_str()
|
||
{
|
||
|
||
$length = 32;
|
||
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||
$len = strlen($str) - 1;
|
||
$randstr = '';
|
||
for ($i = 0; $i < $length; $i++) {
|
||
$num = mt_rand(0, $len);
|
||
$randstr .= $str[$num];
|
||
}
|
||
return md5($randstr . time());
|
||
}
|
||
|
||
function getRandPassword()
|
||
{
|
||
|
||
$length = 8;
|
||
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||
$len = strlen($str) - 1;
|
||
$randstr = '';
|
||
for ($i = 0; $i < $length; $i++) {
|
||
$num = mt_rand(0, $len);
|
||
$randstr .= $str[$num];
|
||
}
|
||
return $randstr;
|
||
}
|
||
|
||
|
||
function proofState($article_id)
|
||
{
|
||
$p_article_obj = Db::name('production_article');
|
||
$p_article_obj->where('article_id', $article_id)->where('state', '<>', 1)->where('proof_etime', '<', time())->where('proof_state', 1)->update(['proof_state' => 2]);
|
||
}
|
||
|
||
/**
|
||
* 生成文章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;
|
||
}
|
||
|
||
function translateType($type)
|
||
{
|
||
$frag = '';
|
||
switch ($type) {
|
||
case "A":
|
||
$frag = 'ARTICLE';
|
||
break;
|
||
case 'B':
|
||
$frag = 'REVIEW';
|
||
break;
|
||
case 'C':
|
||
$frag = 'CASE REPORT';
|
||
break;
|
||
case 'P':
|
||
$frag = 'RESEARCH PROPOSAL';
|
||
break;
|
||
case 'N':
|
||
$frag = 'NEWS';
|
||
break;
|
||
case 'T':
|
||
$frag = 'COMMENT';
|
||
break;
|
||
case 'CT':
|
||
$frag = 'CORRECTION';
|
||
break;
|
||
case 'HT':
|
||
$frag = 'HYPOTHESIS';
|
||
break;
|
||
case 'PF':
|
||
$frag = 'PREFACE';
|
||
break;
|
||
case 'ET':
|
||
$frag = 'EDITORIAL';
|
||
break;
|
||
case 'RP':
|
||
$frag = 'REPORT';
|
||
break;
|
||
case 'LR':
|
||
$frag = 'LETTER';
|
||
break;
|
||
case 'EF':
|
||
$frag = 'EMPIRICAL FORMULA';
|
||
break;
|
||
case 'EM':
|
||
$frag = 'EVIDENCE-BASED MEDICINE';
|
||
break;
|
||
case 'EC':
|
||
$frag = 'EXPERT CONSENSUS';
|
||
break;
|
||
case 'LTE':
|
||
$frag = 'LETTER TO EDITOR';
|
||
break;
|
||
case 'QI':
|
||
$frag = 'QUESTIONNAIRE INVESTIGATION';
|
||
break;
|
||
case 'PT':
|
||
$frag = 'PROTOCOL';
|
||
break;
|
||
case 'CS':
|
||
$frag = 'CASE SERIES';
|
||
break;
|
||
case 'RT':
|
||
$frag = 'RETRACTION';
|
||
break;
|
||
case 'MR':
|
||
$frag = 'MINI REVIEW';
|
||
break;
|
||
default:
|
||
$frag = 'OTHERS';
|
||
break;
|
||
}
|
||
return $frag;
|
||
}
|
||
|
||
function search_array_val($arr, $val)
|
||
{
|
||
foreach ($arr as $k => $v) {
|
||
if ($v == $val) {
|
||
return $k;
|
||
}
|
||
}
|
||
}
|
||
|
||
function GptChar($message,$ckey)
|
||
{
|
||
$url = 'https://api.openai.com/v1/chat/completions';
|
||
|
||
// OpenAI API key
|
||
$api_key = Env::get("gpt.api_key");
|
||
|
||
|
||
// Request data
|
||
$data = array(
|
||
'model' => 'gpt-3.5-turbo',
|
||
'messages' => $message,
|
||
'temperature' => 0.2,
|
||
'max_tokens' => 2048,
|
||
'n' => 1,
|
||
'stop' => '',
|
||
'stream' => true // Use streaming mode
|
||
);
|
||
|
||
// Create request headers
|
||
$headers = array(
|
||
'Content-Type: application/json',
|
||
'Authorization: Bearer ' . $api_key
|
||
);
|
||
|
||
// Create context for request
|
||
$context = stream_context_create(array(
|
||
'http' => array(
|
||
'method' => 'POST',
|
||
'header' => $headers,
|
||
'content' => json_encode($data),
|
||
'ignore_errors' => true
|
||
)
|
||
));
|
||
|
||
// Open connection to API endpoint
|
||
$fp = fopen($url, 'r', false, $context);
|
||
$cache_id = '';
|
||
// Read response data
|
||
if ($fp) {
|
||
while (!feof($fp)) {
|
||
$chunk = fgets($fp);
|
||
// echo $chunk;
|
||
$cache = object_to_array(json_decode(substr($chunk,6)));
|
||
if(isset($cache['choices'][0]['delta']['content'])){
|
||
$cc = Cache::get($ckey)?Cache::get($ckey):'';
|
||
Cache::set($ckey,$cc.$cache['choices'][0]['delta']['content'],3600);
|
||
}
|
||
if(isset($cache['id'])&&$cache['id']!=''){
|
||
$cache_id = $cache['id'];
|
||
}
|
||
// ob_flush();
|
||
// flush();
|
||
}
|
||
fclose($fp);
|
||
}
|
||
if($cache_id!=''){
|
||
Cache::set($ckey."_id",$cache_id);
|
||
}
|
||
Cache::set($ckey,(Cache::get($ckey)?Cache::get($ckey):'')."[{enddata}]",3600);
|
||
|
||
}
|
||
|
||
|
||
function freshContent($production_obj){
|
||
$production_article_main_obj = Db::name('production_article_main');
|
||
$gpt_res =object_to_array(json_decode(pushGpt("请帮我按照学术期刊的校对规则 将以下这段文字进行校对 目标是校对格式 不要改动文本内容 除非确认有拼写或语法错误 ,并且不要去掉<i></i><b></b>这四个标签 直接改在原文:".$production_obj['content']))) ;
|
||
$production_article_main_obj->where('p_main_id',$production_obj['p_main_id'])->update(['content_g'=>$gpt_res['choices'][0]['message']['content']]);
|
||
$production_article_main_obj->close();
|
||
|
||
}
|
||
|
||
|
||
function pushGpt($content){
|
||
// die;
|
||
$url = 'https://api.openai.com/v1/chat/completions';
|
||
$api_key = Env::get("gpt.api_key");
|
||
// Request data
|
||
$mes['role'] = "user";
|
||
$mes['content'] = $content;
|
||
$data = array(
|
||
'model' => 'gpt-3.5-turbo',
|
||
'messages' => [$mes],
|
||
'temperature' => 0.2,
|
||
'max_tokens' => 2048,
|
||
'n' => 1,
|
||
'stop' => ''
|
||
);
|
||
|
||
$headers = array(
|
||
'Content-Type: application/json',
|
||
'Authorization: Bearer '.$api_key
|
||
);
|
||
|
||
$ch = curl_init();
|
||
|
||
curl_setopt($ch, CURLOPT_URL, $url);
|
||
curl_setopt($ch, CURLOPT_POST, 1);
|
||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||
|
||
$result = curl_exec($ch);
|
||
|
||
if(curl_errno($ch)) {
|
||
echo 'Error:' . curl_error($ch);
|
||
}
|
||
|
||
curl_close($ch);
|
||
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* GET 请求
|
||
* @param string $url
|
||
*/
|
||
function myGet($url)
|
||
{
|
||
$oCurl = curl_init();
|
||
if (stripos($url, "https://") !== FALSE) {
|
||
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
|
||
curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
|
||
}
|
||
curl_setopt($oCurl, CURLOPT_URL, $url); //目标URL
|
||
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1); //设定是否显示头信息,1为显示
|
||
curl_setopt($oCurl, CURLOPT_BINARYTRANSFER, true); //在启用CURLOPT_RETURNTRANSFER时候将获取数据返回
|
||
$sContent = curl_exec($oCurl);
|
||
$aStatus = curl_getinfo($oCurl); //获取页面各种信息
|
||
curl_close($oCurl);
|
||
if (intval($aStatus["http_code"]) == 200) {
|
||
return $sContent;
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
function my_doiToFrag($data)
|
||
{
|
||
$ts_refer_obj = Db::name('ts_refer');
|
||
if ($data['refer_doi'] == '') {
|
||
return 0;
|
||
}
|
||
$doi = str_replace('/', '%2F', $data['refer_doi']);
|
||
$url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US";
|
||
$res = myGet($url);
|
||
$frag = trim(substr($res, strpos($res, '.') + 1));
|
||
$f = '';
|
||
$cs = 0;
|
||
if ($frag == "") {
|
||
$f = $data['refer_content'];
|
||
} else {
|
||
$c_frag = rtrim($frag, '.');
|
||
$f = substr_replace($c_frag, PHP_EOL, strripos($c_frag, "http"), 0);
|
||
$cs = 1;
|
||
}
|
||
$ts_refer_obj->where('ts_refer_id', $data['ts_refer_id'])->update(['refer_frag' => $f, "cs" => $cs]);
|
||
$ts_refer_obj->close();
|
||
}
|
||
|
||
function my_doiToFrag1($data)
|
||
{
|
||
$p_refer_obj = Db::name('production_article_refer');
|
||
if ($data['refer_doi'] == '') {
|
||
return 0;
|
||
}
|
||
$doi = str_replace('/', '%2F', $data['refer_doi']);
|
||
// $url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US";
|
||
$url = "https://citation.crosscite.org/format?doi=$doi&style=cancer-translational-medicine&lang=en-US";
|
||
$res = myGet($url);
|
||
$frag = trim(substr($res, strpos($res, '.') + 1));
|
||
$f = '';
|
||
$cs = 0;
|
||
if ($frag == "") {
|
||
$f = $data['refer_content'];
|
||
} else {
|
||
$c_frag = rtrim($frag, '.');
|
||
// $f = substr_replace($c_frag,PHP_EOL,strripos($c_frag,"http"),0);
|
||
$f = $c_frag . " Available at: " . PHP_EOL . "http://doi.org/" . $data['refer_doi'];
|
||
$cs = 1;
|
||
}
|
||
$p_refer_obj->where('p_refer_id', $data['p_refer_id'])->update(['refer_frag' => $f, "cs" => $cs]);
|
||
$p_refer_obj->close();
|
||
}
|
||
|
||
/**
|
||
* 增加用户积分log信息
|
||
*/
|
||
function addUserScoreLog($user_id, $score, $content, $ctime, $act = '+')
|
||
{
|
||
$score_obj = Db::name('user_score_log');
|
||
$insert['user_id'] = $user_id;
|
||
$insert['content'] = trim($content);
|
||
$insert['score'] = $score;
|
||
$insert['act'] = $act;
|
||
$insert['ctime'] = $ctime;
|
||
$score_obj->insert($insert);
|
||
}
|
||
|
||
|
||
function my_doiToFrag2($data)
|
||
{
|
||
$p_refer_obj = Db::name('production_article_refer');
|
||
if ($data['refer_doi'] == '') {
|
||
return 0;
|
||
}
|
||
$doi = str_replace('/', '%2F', $data['refer_doi']);
|
||
// $url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US";
|
||
$url = "https://citation.crosscite.org/format?doi=$doi&style=cancer-translational-medicine&lang=en-US";
|
||
$res = myGet($url);
|
||
$frag = trim(substr($res, strpos($res, '.') + 1));
|
||
$update = [];
|
||
if ($frag == "") {
|
||
$update['refer_frag'] = $data['refer_content'];
|
||
} else {
|
||
// preg_match("/[0-9]{4}/",$frag,$math);
|
||
// $year = $math[0];
|
||
// $qbj=trim(substr($frag,0,stripos($frag,$year))) ;
|
||
if (mb_substr_count($frag, '.') != 3) {
|
||
$f = $frag . " Available at: " . PHP_EOL . "http://doi.org/" . $data['refer_doi'];
|
||
$update['refer_frag'] = $f;
|
||
$update['cs'] = 1;
|
||
} else {
|
||
$res = explode('.', $frag);
|
||
$update['author'] = prgeAuthor($res[0]);
|
||
$update['title'] = trim($res[1]);
|
||
$bj = bekjournal($res[2]);
|
||
$joura = formateJournal(trim($bj[0]));
|
||
$update['joura'] = $joura;
|
||
$is_js = 0;
|
||
if ($joura == trim($bj[0])) {
|
||
}
|
||
$update['is_ja'] = $joura == trim($bj[0]) ? 0 : 1;
|
||
$update['dateno'] = str_replace(' ', '', str_replace('-', '–', trim($bj[1])));
|
||
$update['doilink'] = strpos($data['refer_doi'],"http")===false?"http://doi.org/" . $data['refer_doi']:$data['refer_doi'];
|
||
$update['cs'] = 1;
|
||
}
|
||
}
|
||
$p_refer_obj->where('p_refer_id', $data['p_refer_id'])->update($update);
|
||
$p_refer_obj->close();
|
||
}
|
||
|
||
function bekjournal($str)
|
||
{
|
||
preg_match("/[0-9]{4}/", $str, $math);
|
||
$year = $math[0];
|
||
$frag[0] = trim(substr($str, 0, stripos($str, $year)));
|
||
$frag[1] = substr($str, stripos($str, $year));
|
||
return $frag;
|
||
}
|
||
|
||
function formateJournal($fullname)
|
||
{
|
||
$obj = Db::name('journal_abbr');
|
||
$r = $obj->where('full_name', $fullname)->find();
|
||
if ($r) {
|
||
return $r['little_name'];
|
||
} else {
|
||
return $fullname;
|
||
}
|
||
}
|
||
|
||
function prgeAuthor($author)
|
||
{
|
||
$a = explode(',', $author);
|
||
if (count($a) < 7) {
|
||
return $author . '.';
|
||
} else {
|
||
return trim($a[0]) . ', ' . trim($a[1]) . ', ' . trim($a[2]) . ', et al.';
|
||
}
|
||
}
|
||
|
||
|
||
function my_tg_pushmail($data)
|
||
{
|
||
$res = sendEmail($data['email'], $data['title'], $data['title'], $data['content'], $data['tmail'], $data['tpassword'], $data['attachmentFile']);
|
||
if (isset($res['status'])) {
|
||
$log_obj = Db::name('email_log');
|
||
$insert['article_id'] = $data['article_id'];
|
||
$insert['email'] = $data['email'];
|
||
$insert['content'] = $data['content'];
|
||
$insert['is_success'] = $res['status'];
|
||
$insert['attachment'] = $data['attachmentFile'] != '' ? substr($data['attachmentFile'], strrpos($data['attachmentFile'], 'enclosure/') + 10) : '';
|
||
$insert['ctime'] = time();
|
||
$log_obj->insert($insert);
|
||
$log_obj->close();
|
||
}
|
||
}
|
||
|
||
|
||
function getMajorStr($major_id)
|
||
{
|
||
$major_obj = Db::name('major');
|
||
$frag = '';
|
||
$major_info = $major_obj->where('major_id', $major_id)->find();
|
||
if ($major_info == null) {
|
||
return '';
|
||
}
|
||
if ($major_info['major_level'] == 1) {
|
||
return 'Medicine';
|
||
} else {
|
||
$frag = getMajorStr($major_info['pid']) . ' > ' . $major_info['major_title'];
|
||
}
|
||
return $frag;
|
||
}
|
||
|
||
function getMajorShu($major)
|
||
{
|
||
$major_obj = Db::name('major');
|
||
if ($major == 0) {
|
||
return;
|
||
}
|
||
$res = $major_obj->where('major_id', $major)->find();
|
||
if ($res['pid'] == 1) {
|
||
return $res['major_id'];
|
||
}
|
||
|
||
$p = getMajorShu($res['pid']);
|
||
return $p . ',' . $res['major_id'];
|
||
}
|
||
|
||
function getReviewerCvs($reviewer_id){
|
||
$cvs = Db::name('user_cv')->where('user_id',$reviewer_id)->where('state',0)->select();
|
||
return $cvs;
|
||
}
|
||
|
||
function aliemail($email,$title,$content,$has_hb=1){
|
||
vendor('aliemail.email');
|
||
$mailto=$email;
|
||
$mailsubject=$title;
|
||
//组合邮件公共样式
|
||
$pre = Env::get('emailtemplete.pre');
|
||
$net = Env::get('emailtemplete.net');
|
||
$net1 = str_replace("{{email}}",$email,$net);
|
||
$mailbody=$has_hb==1?$pre.$content.$net1:$content;
|
||
$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;
|
||
}
|
||
|
||
/**
|
||
* 增加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 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";
|
||
}
|
||
return $jabbr;
|
||
}
|
||
|
||
|
||
|
||
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_SSL_VERIFYPEER, false);
|
||
|
||
// curl_setopt($httph, CURLOPT_RETURNTRANSFER,0);
|
||
// curl_setopt($httph, CURLOPT_HEADER,1);
|
||
|
||
$rst = curl_exec($httph);
|
||
|
||
curl_close($httph);
|
||
|
||
return $rst;
|
||
}
|
||
|
||
function myPost1($url, $param = array())
|
||
{
|
||
|
||
if (!is_array($param)) {
|
||
|
||
throw new Exception("参数必须为array");
|
||
}
|
||
$data = json_encode($param);
|
||
|
||
$httph = curl_init($url);
|
||
curl_setopt($httph, CURLOPT_HTTPHEADER, array(
|
||
'Content-Type: application/json',
|
||
));
|
||
|
||
// 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, $data);
|
||
|
||
// curl_setopt($httph, CURLOPT_RETURNTRANSFER,0);
|
||
// curl_setopt($httph, CURLOPT_HEADER,1);
|
||
|
||
$rst = curl_exec($httph);
|
||
|
||
curl_close($httph);
|
||
|
||
return $rst;
|
||
}
|