File: /www/wwwroot/hz.xxlht.com/application/api/controller/Ajax.php
<?php
/**
* 易优CMS
* ============================================================================
* 版权所有 2016-2028 海南赞赞网络科技有限公司,并保留所有权利。
* 网站地址: http://www.eyoucms.com
* ----------------------------------------------------------------------------
* 如果商业用途务必到官方购买正版授权, 以免引起不必要的法律纠纷.
* ============================================================================
* Author: 小虎哥 <1105415366@qq.com>
* Date: 2018-4-3
*/
namespace app\api\controller;
use think\Db;
class Ajax extends Base
{
/*
* 初始化操作
*/
public function _initialize() {
parent::_initialize();
}
/**
* 内容页浏览量的自增接口
*/
public function arcclick()
{
if (IS_AJAX) {
$aid = input('aid/d', 0);
$type = input('type/s', '');
$click = 0;
if (empty($aid)) {
echo($click);
exit;
}
if ($aid > 0) {
$archives_db = Db::name('archives');
if ('view' == $type) {
$archives_db->where(array('aid'=>$aid))->setInc('click');
}
$click = $archives_db->where(array('aid'=>$aid))->getField('click');
}
echo($click);
exit;
}
}
/**
* 文档下载次数
*/
public function downcount()
{
if (IS_AJAX) {
$aid = input('aid/d', 0);
$downcount = 0;
if (empty($aid)) {
echo($downcount);
exit;
}
if ($aid > 0) {
$archives_db = Db::name('archives');
$downcount = $archives_db->where(array('aid'=>$aid))->getField('downcount');
}
echo($downcount);
exit;
}
}
/**
* arclist列表分页arcpagelist标签接口
*/
public function arcpagelist()
{
$pnum = input('page/d', 0);
$pagesize = input('pagesize/d', 0);
$tagid = input('tagid/s', '');
$tagidmd5 = input('tagidmd5/s', '');
!empty($tagid) && $tagid = preg_replace("/[^a-zA-Z0-9-_]/",'', $tagid);
!empty($tagidmd5) && $tagidmd5 = preg_replace("/[^a-zA-Z0-9_]/",'', $tagidmd5);
if (empty($tagid) || empty($pnum) || empty($tagidmd5)) {
$this->error('参数有误');
}
$data = [
'code' => 1,
'msg' => '',
'lastpage' => 0,
];
$arcmulti_db = Db::name('arcmulti');
$arcmultiRow = $arcmulti_db->where(['tagid'=>$tagidmd5])->find();
if(!empty($arcmultiRow) && !empty($arcmultiRow['querysql']))
{
// arcpagelist标签属性pagesize优先级高于arclist标签属性pagesize
if (0 < intval($pagesize)) {
$arcmultiRow['pagesize'] = $pagesize;
}
// 取出属性并解析为变量
$attarray = unserialize(stripslashes($arcmultiRow['attstr']));
// extract($attarray, EXTR_SKIP); // 把数组中的键名直接注册为了变量
// 通过页面及总数解析当前页面数据范围
$pnum < 2 && $pnum = 2;
$strnum = intval($attarray['row']) + ($pnum - 2) * $arcmultiRow['pagesize'];
// 拼接完整的SQL
$querysql = preg_replace('#LIMIT(\s+)(\d+)(,\d+)?#i', '', $arcmultiRow['querysql']);
$querysql = preg_replace('#SELECT(\s+)(.*)(\s+)FROM#i', 'SELECT COUNT(*) AS totalNum FROM', $querysql);
$queryRow = Db::query($querysql);
if (!empty($queryRow)) {
$tpl_content = '';
$filename = './template/'.THEME_STYLE.'/'.'system/arclist_'.$tagid.'.'.\think\Config::get('template.view_suffix');
if (!file_exists($filename)) {
$data['code'] = -1;
$data['msg'] = "模板追加文件 arclist_{$tagid}.htm 不存在!";
$this->error("标签模板不存在", null, $data);
} else {
$tpl_content = @file_get_contents($filename);
}
if (empty($tpl_content)) {
$data['code'] = -1;
$data['msg'] = "模板追加文件 arclist_{$tagid}.htm 没有HTML代码!";
$this->error("标签模板不存在", null, $data);
}
/*拼接完整的arclist标签语法*/
$offset = intval($strnum);
$row = intval($offset) + intval($arcmultiRow['pagesize']);
$innertext = "{eyou:arclist";
foreach ($attarray as $key => $val) {
if (in_array($key, ['tagid','offset','row'])) {
continue;
}
$innertext .= " {$key}='{$val}'";
}
$innertext .= " limit='{$offset},{$row}'}";
$innertext .= $tpl_content;
$innertext .= "{/eyou:arclist}";
/*--end*/
$msg = $this->display($innertext); // 渲染模板标签语法
$data['msg'] = $msg;
//是否到了最终页
if (!empty($queryRow[0]['totalNum']) && $queryRow[0]['totalNum'] <= $row) {
$data['lastpage'] = 1;
}
} else {
$data['lastpage'] = 1;
}
}
$this->success('请求成功', null, $data);
}
/**
* 获取表单令牌
*/
public function get_token($name = '__token__')
{
if (IS_AJAX) {
echo $this->request->token($name);
exit;
}
}
/**
* 检验会员登录
*/
public function check_user()
{
if (IS_AJAX) {
$type = input('param.type/s', 'default');
$img = input('param.img/s');
$users_id = session('users_id');
if ('login' == $type) {
if (!empty($users_id)) {
$currentstyle = input('param.currentstyle/s');
$users = M('users')->field('username,nickname,head_pic')
->where([
'users_id' => $users_id,
'lang' => $this->home_lang,
])->find();
if (!empty($users)) {
$nickname = $users['nickname'];
if (empty($nickname)) {
$nickname = $users['username'];
}
$head_pic = get_head_pic($users['head_pic']);
if ('on' == $img) {
$users['html'] = "<img class='{$currentstyle}' alt='{$nickname}' src='{$head_pic}' />";
} else {
$users['html'] = $nickname;
}
$users['ey_is_login'] = 1;
$this->success('请求成功', null, $users);
}
}
$this->success('请先登录', null, ['ey_is_login'=>0]);
}
else if ('reg' == $type)
{
if (!empty($users_id)) {
$users['ey_is_login'] = 1;
} else {
$users['ey_is_login'] = 0;
}
$this->success('请求成功', null, $users);
}
else if ('logout' == $type)
{
if (!empty($users_id)) {
$users['ey_is_login'] = 1;
} else {
$users['ey_is_login'] = 0;
}
$this->success('请求成功', null, $users);
}
else if ('cart' == $type)
{
if (!empty($users_id)) {
$users['ey_is_login'] = 1;
$users['ey_cart_num_20191212'] = Db::name('shop_cart')->where(['users_id'=>$users_id])->sum('product_num');
} else {
$users['ey_is_login'] = 0;
$users['ey_cart_num_20191212'] = 0;
}
$this->success('请求成功', null, $users);
}
}
$this->error('访问错误');
}
/**
* 获取用户信息
*/
public function get_tag_user_info()
{
$t_uniqid = input('param.t_uniqid/s', '');
if (IS_AJAX && !empty($t_uniqid)) {
$users_id = session('users_id');
if (!empty($users_id)) {
$users = Db::name('users')->field('b.*, a.*')
->alias('a')
->join('__USERS_LEVEL__ b', 'a.level = b.level_id', 'LEFT')
->where([
'a.users_id' => $users_id,
'a.lang' => $this->home_lang,
])->find();
if (!empty($users)) {
$users['reg_time'] = MyDate('Y-m-d H:i:s', $users['reg_time']);
$users['update_time'] = MyDate('Y-m-d H:i:s', $users['update_time']);
} else {
$users = [];
$tableFields1 = Db::name('users')->getTableFields();
$tableFields2 = Db::name('users_level')->getTableFields();
$tableFields = array_merge($tableFields1, $tableFields2);
foreach ($tableFields as $key => $val) {
$users[$val] = '';
}
}
$users['url'] = url('user/Users/centre');
unset($users['password']);
unset($users['paypwd']);
$dtypes = [];
foreach ($users as $key => $val) {
$html_key = md5($key.'-'.$t_uniqid);
$users[$html_key] = $val;
$dtype = 'txt';
if (in_array($key, ['head_pic'])) {
$dtype = 'img';
} else if (in_array($key, ['url'])) {
$dtype = 'href';
}
$dtypes[$html_key] = $dtype;
unset($users[$key]);
}
$data = [
'ey_is_login' => 1,
'users' => $users,
'dtypes' => $dtypes,
];
$this->success('请求成功', null, $data);
}
$this->success('请先登录', null, ['ey_is_login'=>0]);
}
$this->error('访问错误');
}
// 验证码获取
public function vertify()
{
$time = getTime();
$type = input('param.type/s', 'default');
$token = input('param.token/s', '');
$configList = \think\Config::get('captcha');
$captchaArr = array_keys($configList);
if (in_array($type, $captchaArr)) {
/*验证码插件开关*/
$admin_login_captcha = config('captcha.'.$type);
$config = (!empty($admin_login_captcha['is_on']) && !empty($admin_login_captcha['config'])) ? $admin_login_captcha['config'] : config('captcha.default');
/*--end*/
ob_clean(); // 清空缓存,才能显示验证码
$Verify = new \think\Verify($config);
if (!empty($token)) {
$Verify->entry($token);
} else {
$Verify->entry($type);
}
}
exit();
}
/**
* 邮箱发送
*/
public function send_email()
{
// 超时后,断掉邮件发送
function_exists('set_time_limit') && set_time_limit(10);
$type = input('param.type/s');
// 留言发送邮件
if (IS_AJAX_POST && 'gbook_submit' == $type) {
$tid = input('param.tid/d');
$aid = input('param.aid/d');
$send_email_scene = config('send_email_scene');
$scene = $send_email_scene[1]['scene'];
$web_name = tpCache('web.web_name');
// 判断标题拼接
$arctype = M('arctype')->field('typename')->find($tid);
$web_name = $arctype['typename'].'-'.$web_name;
// 拼装发送的字符串内容
$row = M('guestbook_attribute')->field('a.attr_name, b.attr_value')
->alias('a')
->join('__GUESTBOOK_ATTR__ b', 'a.attr_id = b.attr_id AND a.typeid = '.$tid, 'LEFT')
->where([
'b.aid' => $aid,
])
->order('a.attr_id sac')
->select();
$content = '';
foreach ($row as $key => $val) {
if (preg_match('/(\.(jpg|gif|png|bmp|jpeg|ico|webp))$/i', $val['attr_value'])) {
if (!stristr($val['attr_value'], '|')) {
$val['attr_value'] = $this->request->domain().handle_subdir_pic($val['attr_value']);
$val['attr_value'] = "<a href='".$val['attr_value']."' target='_blank'><img src='".$val['attr_value']."' width='150' height='150' /></a>";
}
} else {
$val['attr_value'] = str_replace(PHP_EOL, ' | ', $val['attr_value']);
}
$content .= $val['attr_name'] . ':' . $val['attr_value'].'<br/>';
}
$html = "<p style='text-align: left;'>{$web_name}</p><p style='text-align: left;'>{$content}</p>";
if (isMobile()) {
$html .= "<p style='text-align: left;'>——来源:移动端</p>";
} else {
$html .= "<p style='text-align: left;'>——来源:电脑端</p>";
}
// 发送邮件
$res = send_email(null,null,$html, $scene);
if (intval($res['code']) == 1) {
$this->success($res['msg']);
} else {
$this->error($res['msg']);
}
}
}
// 判断文章内容阅读权限
public function get_arcrank()
{
$aid = input('param.aid/d');
if (!empty($aid)) {
// 用户ID
$users_id = session('users_id');
// 文章查看所需等级值
$Arcrank = M('archives')->alias('a')
->field('a.users_id, a.arcrank, b.level_value, b.level_name')
->join('__USERS_LEVEL__ b', 'a.arcrank = b.level_value', 'LEFT')
->where(['a.aid' => $aid])
->find();
if (!empty($users_id)) {
// 会员级别等级值
$UsersDataa = Db::name('users')->alias('a')
->field('a.users_id,b.level_value,b.level_name')
->join('__USERS_LEVEL__ b', 'a.level = b.level_id', 'LEFT')
->where(['a.users_id'=>$users_id])
->find();
if (0 == $Arcrank['arcrank']) {
if (IS_AJAX) {
$this->success('允许查阅!');
} else {
return true;
}
}else if (-1 == $Arcrank['arcrank']) {
if ($users_id == $Arcrank['users_id']) {
if (IS_AJAX) {
$this->success('允许查阅!');
} else {
return true;
}
}else{
$msg = '待审核稿件,你没有权限阅读!';
}
}else if ($UsersDataa['level_value'] < $Arcrank['level_value']) {
$msg = '内容需要【'.$Arcrank['level_name'].'】才可以查看,您为【'.$UsersDataa['level_name'].'】,请先升级!';
}else{
if (IS_AJAX) {
$this->success('允许查阅!');
} else {
return true;
}
}
if (IS_AJAX) {
$this->error($msg);
} else {
return $msg;
}
}else{
if (0 == $Arcrank['arcrank']) {
if (IS_AJAX) {
$this->success('允许查阅!');
} else {
return true;
}
}else if (-1 == $Arcrank['arcrank']) {
$msg = '待审核稿件,你没有权限阅读!';
}else if (!empty($Arcrank['level_name'])) {
$msg = '文章需要【'.$Arcrank['level_name'].'】才可以查看,游客不可查看,请登录!';
}else{
$msg = '游客不可查看,请登录!';
}
if (IS_AJAX) {
$this->error($msg);
} else {
return $msg;
}
}
}
}
/**
* 获取会员列表
* @author 小虎哥 by 2018-4-20
*/
public function get_tag_memberlist()
{
$this->error('暂时没用上!');
if (IS_AJAX_POST) {
$htmlcode = input('post.htmlcode/s');
$htmlcode = htmlspecialchars_decode($htmlcode);
$htmlcode = preg_replace('/<\?(\s*)php(\s+)/i', '', $htmlcode);
$attarray = input('post.attarray/s');
$attarray = htmlspecialchars_decode($attarray);
$attarray = json_decode(base64_decode($attarray));
/*拼接完整的memberlist标签语法*/
$eyou = new \think\template\taglib\Eyou('');
$tagsList = $eyou->getTags();
$tagsAttr = $tagsList['memberlist'];
$innertext = "{eyou:memberlist";
foreach ($attarray as $key => $val) {
if (!in_array($key, $tagsAttr) || in_array($key, ['js'])) {
continue;
}
$innertext .= " {$key}='{$val}'";
}
$innertext .= " js='on'}";
$innertext .= $htmlcode;
$innertext .= "{/eyou:memberlist}";
/*--end*/
$msg = $this->display($innertext); // 渲染模板标签语法
$data['msg'] = $msg;
$this->success('读取成功!', null, $data);
}
$this->error('加载失败!');
}
}