peixunguanwang/apps/home/controller/CommentController.php
2022-03-30 09:13:50 +08:00

151 lines
5.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @copyright (C)2020-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2020年06月27日
* 评论控制器
*/
namespace app\home\controller;
use core\basic\Controller;
use app\home\model\ParserModel;
use core\basic\Url;
class CommentController extends Controller
{
protected $parser;
protected $model;
protected $htmldir;
public function __construct()
{
$this->model = new ParserModel();
$this->parser = new ParserController();
$this->htmldir = $this->config('tpl_html_dir') ? $this->config('tpl_html_dir') . '/' : '';
}
// 评论新增
public function add()
{
if ($_POST) {
if ($this->config('comment_status') === '0') {
error('系统已经关闭评论功能,请到后台开启再试!');
}
if (time() - session('lastsub') < 10) {
alert_back('您提交太频繁了,请稍后再试!');
}
if (! session('pboot_uid') && ! $this->config('comment_anonymous')) {
if (! ! $backurl = $_SERVER['HTTP_REFERER']) {
alert_location("请先注册登录后再评论!", Url::home('member/login', null, "backurl=" . urlencode($backurl)));
} else {
alert_location("请先注册登录后再评论!", Url::home('member/login'));
}
}
// 验证码验证
$checkcode = strtolower(post('checkcode', 'var'));
if ($this->config('comment_check_code') !== '0') {
if (! $checkcode) {
alert_back('验证码不能为空!');
}
if ($checkcode != session('checkcode')) {
alert_back('验证码错误!');
}
}
// 接收数据
$status = $this->config('comment_verify') === '0' ? 1 : 0;
if (! $contentid = request('contentid', 'int')) {
alert_back('文章ID未能正常获取请使用POST或URL参数传递');
}
$comment = post('comment');
$data = array(
'pid' => request('pid', 'int') ?: 0,
'contentid' => $contentid,
'comment' => $comment,
'uid' => session('pboot_uid'),
'puid' => request('puid', 'int'),
'likes' => 0,
'oppose' => 0,
'status' => $status,
'user_ip' => ip2long(get_user_ip()),
'user_os' => get_user_os(),
'user_bs' => get_user_bs(),
'create_time' => get_datetime(),
'update_user' => '',
'update_time' => ''
);
if ($this->model->addComment($data)) {
session('lastsub', time()); // 记录最后提交时间
$this->log('文章' . $contentid . '评论提交成功!');
if ($this->config('comment_send_mail') && $this->config('message_send_to')) {
$mail_subject = "" . CMSNAME . "】您有新的文章评论信息,请注意查收!";
$mail_body = '评论内容:' . $comment . '<br>';
$mail_body .= '<br>来自网站 ' . get_http_url() . ' ' . date('Y-m-d H:i:s') . '';
sendmail($this->config(), $this->config('message_send_to'), $mail_subject, $mail_body);
}
if ($status) {
alert_location('评论提交成功!', '-1', 1);
} else {
alert_location('评论提交成功,请等待管理员审核!', '-1', 1);
}
} else {
$this->log('文章评论提交失败!');
alert_back('提交失败!');
}
} else {
alert_back('提交失败请使用POST方式提交');
}
}
// 我的评论
public function my()
{
// 未登录时跳转到用户登录
if (! session('pboot_uid')) {
location(Url::home('member/login'));
}
$content = parent::parser($this->htmldir . 'member/mycomment.html'); // 框架标签解析
$content = $this->parser->parserBefore($content); // CMS公共标签前置解析
$content = str_replace('{pboot:pagetitle}', '我的评论-{pboot:sitetitle}-{pboot:sitesubtitle}', $content);
$content = $this->parser->parserPositionLabel($content, 0, '我的评论', Url::home('comment/my')); // CMS当前位置标签解析
$content = $this->parser->parserSpecialPageSortLabel($content, - 3, '我的评论', Url::home('comment/my')); // 解析分类标签
$content = $this->parser->parserMyCommentLabel($content); // 我的评论
$content = $this->parser->parserAfter($content); // CMS公共标签后置解析
echo $content;
exit();
}
// 评论删除
public function del()
{
// 未登录时跳转到用户登录
if (! session('pboot_uid')) {
location(Url::home('member/login'));
}
// 执行删除
if (! ! $id = get('id', 'int')) {
if ($this->model->delComment($id)) {
alert_back('删除成功!', 1);
} else {
alert_back('删除失败!');
}
} else {
alert_back('传递参数有误!');
}
}
}