📄 正在查看:twcms/model/cms_content_comment_model.class.php
1<?php
2/**
3 * (C)2012-2014 twcms.com TongWang Inc.
4 * Author: wuzhaohuan <kongphp@gmail.com>
5 */
6
7defined('TWCMS_PATH') or exit;
8
9class cms_content_comment extends model {
10 function __construct() {
11 $this->table = ''; // 表名 (可以是 cms_article_comment cms_product_comment cms_photo_comment 等)
12 $this->pri = array('commentid'); // 主键
13 $this->maxid = 'commentid'; // 自增字段
14 }
15
16 // 格式化评论数组
17 public function format(&$v, $dateformat = 'Y-m-d H:i:s', $humandate = TRUE) {
18 // hook cms_content_comment_model_format_before.php
19
20 if(empty($v)) return FALSE;
21
22 $v['date'] = $humandate ? human_date($v['dateline'], $dateformat) : date($dateformat, $v['dateline']);
23 $v['ip'] = long2ip($v['ip']);
24 $v['ip'] = substr($v['ip'], 0, strrpos($v['ip'], '.')).'.*';
25
26 // hook cms_content_comment_model_format_after.php
27 }
28
29 // 获取评论列表
30 public function list_arr($where, $orderway, $start, $limit, $total) {
31 // 优化大数据量翻页
32 if($start > 1000 && $total > 2000 && $start > $total/2) {
33 $orderway = -$orderway;
34 $newstart = $total-$start-$limit;
35 if($newstart < 0) {
36 $limit += $newstart;
37 $newstart = 0;
38 }
39 $list_arr = $this->find_fetch($where, array('commentid' => $orderway), $newstart, $limit);
40 return array_reverse($list_arr, TRUE);
41 }else{
42 return $this->find_fetch($where, array('commentid' => $orderway), $start, $limit);
43 }
44 }
45
46 // 评论关联删除
47 public function xdelete($table, $id, $commentid) {
48 // hook cms_content_comment_model_xdelete_before.php
49
50 $this->table = 'cms_'.$table.'_comment';
51 $this->cms_content->table = 'cms_'.$table;
52 $this->cms_content_comment_sort->table = 'cms_'.$table.'_comment_sort';
53
54 // 更新评论数
55 $data = $this->cms_content->read($id);
56 if(empty($data)) return '读取内容表出错!';
57 if($data['comments'] > 0) {
58 $data['comments']--;
59 if(!$this->cms_content->update($data)) return '写入内容表出错!';
60 }
61
62 $data2 = $this->cms_content_comment_sort->read($id);
63 if($data2) {
64 $data2['comments'] = $data['comments'];
65 if(!$this->cms_content_comment_sort->update($data2)) return '写入评论排序表出错!';
66 }
67
68 return $this->delete($commentid) ? '' : '删除失败!';
69 }
70}
71