龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

discuz@功能的代码

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
DISCUZ@功能的代码,大家可以参考一下,搞一个自己的动弹。 br / br / 哈哈,我要无耻的给自己打广告了。 br / 来自 a href=http://www.bojinxiaozhu.com target=_blank rel=nofollow铂金小猪/agisask.com。
DISCUZ@功能的代码,大家可以参考一下,搞一个自己的动弹。

哈哈,我要无耻的给自己打广告了。
来自 铂金小猪 gisask.com。
		$atlist = $atlist_tmp = $ateduids = array();
		preg_match_all("/@([^\r\n]*?)\s/i", $message.' ', $atlist_tmp);//解析内容里的被@到的名字。
		$atlist_tmp = array_slice(array_unique($atlist_tmp[1]), 0, $_G['group']['allowat']);//应该是提取用户名吧。。
		$atnum = $maxselect = 0;
		foreach(C::t('home_notification')->fetch_all_by_authorid_fromid($_G['uid'], $_G['tid'], 'at') as $row) {
			$atnum ++;//这个循环暂时搞不懂。还没看过这个表是干嘛的。
			$ateduids[$row[uid]] = $row['uid'];
		}
		$maxselect = $_G['group']['allowat'] - $atnum;
		if($maxselect > 0 && !empty($atlist_tmp)) {
		if(empty($_G['setting']['at_anyone'])) {//判断是否只能@好友,如果只能@好友的话,那就从下面的home_follow表中找出在好友列表里的人的姓名。其他的就@不到了。
				foreach(C::t('home_follow')->fetch_all_by_uid_fusername($_G['uid'], $atlist_tmp) as $row) {
					if(!in_array($row['followuid'], $ateduids)) {
						$atlist[$row[followuid]] = $row['fusername'];
					}
					if(count($atlist) == $maxselect) {
						break;
					}
				}
				if(count($atlist) < $maxselect) {//判断@上限。
					$query = C::t('home_friend')->fetch_all_by_uid_username($_G['uid'], $atlist_tmp);//不用说了吧
					foreach($query as $row) {
						if(!in_array($row['followuid'], $ateduids)) {
							$atlist[$row[fuid]] = $row['fusername'];
						}
					}
				}
			} else {
				foreach(C::t('common_member')->fetch_all_by_username($atlist_tmp) as $row) {
					if(in_array($row['uid'], $ateduids)) {
						$atlist[$row[uid]] = $row['username'];
					}
					if(count($atlist) == $maxselect) {
						break;
					}
				}
			}
		}
		if($atlist) {//提醒和加链接。
			foreach($atlist as $atuid => $atusername) {
				$notic = array('subject' => '铂金小猪我爱你', 'message' => '铂金小猪你好,红薯在评论回复中说他爱你', 'from_id' => 0, 'from_idtype' => 'sendnotice');
                notification_add($atuid,'system','system_notice',$notic,1);//发送提醒给被@到的用户。$notic是提醒的内容。
                $atsearch[] = "/@$atusername /i";
				$atreplace[] = "[url=home.php?mod=space&uid=$atuid]@{$atusername}[/url] ";//加链接,但不是a标签。
			}
			$message = preg_replace($atsearch, $atreplace, $message.' ', 1);
		}
require_once libfile('function/followcode');
require_once libfile('function/discuzcode'); 
$cont=followcode($message);//格式化代码中的标签
精彩图集

赞助商链接