数字化技能提升教程,数字化时代生存宝典

数字化百科 / 词条 / EXCMS 评论文件

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));

代码修改

页面参数可以自由修改,根据模板的需要来增加和修改页面参数。模板中可自由调用页面的参数,例如:{$_PAGE.title}显示页面标题。

category:EXCMS