EXCMS 评论文件
查看全部词条命名空间:Main
导航:返回上一页
EXCMS的模块评论文件为:comment.php,用于评论动作处理,包括评论列表、增加评论、引用评论、评论支持数、反对数、文章评论列表、加载评论配置信息 。
代码
001 $params ['contentid']);
036 $contentid = excms_func_id_decode ( $params ['contentid'] );
037 $_PAGE_CONTENT['original_contentid']=$contentid;
038 //获取模块配置信息
039 excms_import ( 'EXCMS.modules.Modules' );
040 $module = new Modules ( );
041 $moduleInfo = $module->getById ( 'comment' );
042 //引入评论类Comment,创建评论对像Comment
043 excms_import ( 'EXCMS.comment.Comment' );
044 $comment = new Comment ( );
045
046 switch ($params ['act']){
047 /**
048 * 添加评论
049 */
050 case 'submit' :
051 @session_start ();
052 if (isset ( $EXCMS['comment']['checkcodes'] ) && $EXCMS['comment'] ['checkcodes'] == 1 && !excms_func_checkcode_check($params
['checkcodes'])) {
053 showMessage('验证码错误');
054 }
055 //文章信息
056 excms_import ( 'EXCMS.content.Content' );
057 $c = new Content ( );
058 $cInfo = $c->getById ( $contentid );
059 //栏目信息
060 excms_import ( 'EXCMS.channel.Channel' );
061 $channel = new Channel ( );
062 $channelInfo = $channel->getById ( $cInfo['channelid'] );
063 if (! ($channelInfo ['comment'] > 0)) {
064 showMessage('文章不允许评论(栏目)');
065 }
066 if (!$cInfo ['comment']) {
067 showMessage('文章不允许评论(文章)');
068 }
069 if (! ($moduleInfo ['disabled'])) {
070 showMessage('评论已经禁用');
071 }
072 if (! ($EXCMS['comment'] ['allow_guest'] > 0) && ! ($_SESSION ['memberid'] > 0)) {
073 showMessage('请登录后再评论');
074 }
075
076 $data ['memberid'] = $_SESSION ['memberid'] > 0 ? $_SESSION ['memberid'] : 0;
077 $data ['membername'] = $_SESSION ['membername'] ? $_SESSION ['membername'] : '游客';
078
079 if ($EXCMS['comment'] ['anonymous'] && $params ['anonymous']) { //匿名评论
080 $data ['memberid'] = 0;
081 $data ['membername'] = '游客';
082 }
083 excms_import ( 'EXCMS.comment.Comment' );
084 $comment = new Comment ( );
085 $ip = $_SERVER ["REMOTE_ADDR"];
086 if($EXCMS['comment']['allow_hide_ip'] && !$params['allow_hide_ip']){ //是否允许隐藏IP
087 $data ['ip'] = $ip;
088 }
089 if($EXCMS['comment']['allow_hide_posion'] && !$params['allow_hide_posion']){ //是否允许隐藏所在位置
090 include_once(DOCUMENT_ROOT.'admin/Modules/Plugins/Ipquery/IpLocation.class.php');
091 $obj = new IpLocation();
092 $iparea = $obj->getlocation($ip);
093 $data ['area'] = isset($iparea ['country']) && !empty($iparea ['country']) ? $iparea ['country'] : $ip; //所在地区
094 }
095 $data ['itemid'] = $contentid;
096 $data ['channelid'] = $cInfo ['channelid'];
097 $data ['channelcross'] = $cInfo ['channelcross'];
098 $data ['createddate'] = time ();
099 $data['support'] = 0;
100 $data['against'] = 0;
101 $replyid = (int)$params['reply'];
102 if($replyid){
103 $replyInfo = $comment->getById($replyid);
104 $data ['replyid'] = $replyid;
105 $data ['floor'] = $replyInfo['floor'] + 1;
106
107 $lastFloor = $replyInfo['floor'] > 1 ? $replyInfo['lastfloor'] : ;
108 //id=\"commentid_{\$replyid}_{$replyInfo['floor']}_head\"
109 $data['lastfloor'] = "".$lastFloor.
110 "".
111 "EXCMS".
112 "{$replyInfo['area']}网友(".ipformat($replyInfo['ip']).") 的原贴:".
113 "{$replyInfo['floor']}".
114 "{$replyInfo['content']}
";
115 }else{
116 $data ['replyid'] = 0;
117 $data ['floor'] = 1;
118 $data['lastfloor'] = ;
119 }
120 $data ['content'] = htmlspecialchars($_POST['commenttext']);
121 $comment->insert($data,"content");
122 header("Location:comment.php?contentid=".icanid($contentid));
123 break;
124 /**
125 * 引用评论
126 */
127 case 'getquote' :
128 //根据评论ID查询评论详细信息
129 $rs = $comment->getById($params['id']);
130 $rs['createddate'] = formatDate('Y-m-d H:i:s',$rs['createddate']);
131 echo "[quote]原文由 EXCMS{$rs['area']}网友[{$rs['membername']}]于{$rs['createddate']}发表".chr(13)."{$rs['content']}[/quote]";
132 break;
133 /**
134 * 支持数
135 */
136 case 'support' :
137 echo $comment->support($params['id']);
138 break;
139 /**
140 * 反对数
141 */
142 case 'against' :
143 echo $comment->against($params['id']);
144 break;
145 /**
146 * 文章评论列表
147 */
148 case 'commentlist' :
149 excms_func_templateDisplay('comment_list.html');
150 break;
151 /**
152 * 加载评论配置信息
153 */
154 case 'loadcommentconfig' :
155 excms_func_json_print($EXCMS['comment']);
156 break;
157 /**
158 * 评论列表
159 */
160 default:
161 $_PAGE['type'] = $_GET['type'];
162 $_PAGE['pageon'] = excms_func_page_decode ( $_GET ['page'] );
163 //获取内容信息
164 excms_import('EXCMS.content.Content');
165 $c = new Content ( );
166 $_PAGE_CONTENT = $c->getById ( $contentid );
167 $_PAGE_CONTENT['original_contentid'] = $contentid;
168 $_PAGE_CONTENT['contentid'] = excms_func_id_encode($contentid);
169
170 //获取栏目信息
171 excms_import('EXCMS.channel.Channel');
172 $channel = new Channel ( );
173 $_PAGE_CHANNEL = excms_func_getChannelCacheById($_PAGE_CONTENT['channelid']);
174 if (! ($_PAGE_CHANNEL ['comment'] > 0) || !$_PAGE_CONTENT['comment'] || ! ($moduleInfo['disabled']>0)) {
175 showMessage('本文章不允许评论');
176 }
177
178 excms_import("EXCMS.update.ContentFunction");
179 $_PAGE_CONTENT['href'] = ContentFunction::getContentUrl($_PAGE_CONTENT);
180
181 if(!in_array($_PAGE['type'], array('hot', 'support', 'against'))){
182 $_PAGE['type'] = 'all';
183 }
184
185 excms_import('EXCMS.comment.Comment');
186 $cmt = new Comment();
187 $_PAGE['comment']['url'] = ereg_replace('{contentid}',$_GET['contentid'],$EXCMS['comment']['rewrite_url']);
188 $_PAGE['comment']['total'] = $cmt->getCountByItemId($contentid);;
189 $_PAGE['comment']['shownum'] = $_PAGE['comment']['total'];
190
191 excms_func_templateDisplay('comment.html');
192 break;
193
194 }
195 ?>
代码说明
- 检查验证码是否开启验证码并判断验证码是否正确。
1 if (isset ( $EXCMS['comment']['checkcodes'] ) && $EXCMS['comment'] ['checkcodes'] == 1 && !excms_func_checkcode_check($params
['checkcodes'])) {
2 showMessage('验证码错误');
3 }
- 根据内容ID获取内容详细信息,如果内容ID为空会报缺少内空ID异常。
1 //文章信息 2 excms_import ( 'EXCMS.content.Content' ); 3 $c = new Content ( ); 4 $cInfo = $c->getById ( $contentid );
- 根据栏目ID获取栏目详细信息,如果栏目ID为空会报缺少栏目ID异常。
1 //栏目信息 2 excms_import ( 'EXCMS.channel.Channel' ); 3 $channel = new Channel ( ); 4 $channelInfo = $channel->getById ( $cInfo['channelid'] );
- 验证当前内容是否允许评论并且是否需要登陆。
01 if (! ($channelInfo ['comment'] > 0)) {
02 showMessage('文章不允许评论(栏目)');
03 }
04 if (!$cInfo ['comment']) {
05 showMessage('文章不允许评论(文章)');
06 }
07 if (! ($moduleInfo ['disabled'])) {
08 showMessage('评论已经禁用');
09 }
10 if (! ($EXCMS['comment'] ['allow_guest'] > 0) && ! ($_SESSION ['memberid'] > 0)) {
11 showMessage('请登录后再评论');
12 }
- 检查是否是匿名评论。
1 $data ['memberid'] = $_SESSION ['memberid'] > 0 ? $_SESSION ['memberid'] : 0;
2 $data ['membername'] = $_SESSION ['membername'] ? $_SESSION ['membername'] : '游客';
3
4 if ($EXCMS['comment'] ['anonymous'] && $params ['anonymous']) { //匿名评论
5 $data ['memberid'] = 0;
6 $data ['membername'] = '游客';
7 }
- 检查是否允许隐藏IP和所在位置,可以通过评论的后台管理设置这些配置信息。
01 $ip = $_SERVER ["REMOTE_ADDR"];
02 if($EXCMS['comment']['allow_hide_ip'] && !$params['allow_hide_ip']){ //是否允许隐藏IP
03 $data ['ip'] = $ip;
04 }
05 if($EXCMS['comment']['allow_hide_posion'] && !$params['allow_hide_posion']){ //是否允许隐藏所在位置
06 include_once(DOCUMENT_ROOT.'admin/Modules/Plugins/Ipquery/IpLocation.class.php'); //引入 IplLocation类
07 $obj = new IpLocation(); //创建IpLocation对像
08 $iparea = $obj->getlocation($ip); //根据IP地址获取所有地区
09 $data ['area'] = isset($iparea ['country']) && !empty($iparea ['country']) ? $iparea ['country'] : $ip; //所在地区
10 }
- 把评论信息存入在$data数组中。
1 $data ['itemid'] = $contentid; //内容ID(必须) 2 $data ['channelid'] = $cInfo ['channelid']; //栏目ID(必须) 3 $data ['channelcross'] = $cInfo ['channelcross']; //交叉栏目ID 4 $data ['createddate'] = time (); //评论时间 5 $data['support'] = 0; //支持数 6 $data['against'] = 0; //反对数
- 如果当前回复的是评论,根据评论ID获取评论相关信息,然后存后到最上层内容中。
01 $replyid = (int)$params['reply'];
02 if($replyid){
03 $replyInfo = $comment->getById($replyid);
04 $data ['replyid'] = $replyid;
05 $data ['floor'] = $replyInfo['floor'] + 1;
06
07 $lastFloor = $replyInfo['floor'] > 1 ? $replyInfo['lastfloor'] : ;
08 //id=\"commentid_{\$replyid}_{$replyInfo['floor']}_head\"
09 $data['lastfloor'] = "".$lastFloor.
10 "".
11 "EXCMS".
12 "{$replyInfo['area']}网友(".ipformat($replyInfo['ip']).") 的原贴:".
13 "{$replyInfo['floor']}".
14 "{$replyInfo['content']}
";
15 }else{
16 $data ['replyid'] = 0;
17 $data ['floor'] = 1;
18 $data['lastfloor'] = ;
19 }
- 保存评论信息并跳转到当前内容评论列表。
1 $data ['content'] = htmlspecialchars($_POST['commenttext']);
2 $comment->insert($data,"content");
3 header("Location:comment.php?contentid=".icanid($contentid));