//转载       
$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);//格式化代码中的标签

discuz@功能的代码的更多相关文章

  1. java web实现 忘记密码(找回密码)功能及代码

    java web实现 忘记密码(找回密码)功能及代码 (一).总体思路 (二).部分截图 (三).部分代码 (一).总体思路: 1.在 找回密码页面 录入 姓名.邮箱和验证码,录入后点击[提交]按钮, ...

  2. 通过.NET实现后台自动发送Email功能的代码示例

    原文:通过.NET实现后台自动发送Email功能的代码示例 通过.NET实现后台自动发送邮件功能的代码,可以将一些基础信息放到web.config文件中进行保存: Web.config文件信息段: & ...

  3. 用Eclipse的snippets功能实现代码重用

    snippets功能实现代码重用 Snippets 代码片段是Eclipse的一个插件. 很多时候可以通过这个功能,重复使用常用的代码片段,加快开发效率. 创建一个代码段的步骤: 在Eclipse的e ...

  4. 使用@selector模仿代理功能降低代码耦合度

    使用@selector模仿代理功能降低代码耦合度 说明 该模式的好处就是两个产生联系的对象间并没有具体的耦合代码,增删改查均很直观 源码 Model // // Model.h // SELMetho ...

  5. 在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示

    在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示) 1.使用npm安装依赖 npm install --save codemirror; 2.在页面中放入如下代码 ...

  6. Discuz! ML远程代码执行(CVE-2019-13956)

    Discuz! ML远程代码执行(CVE-2019-13956) 一.漏洞描述 该漏洞存在discuz ml(多国语言版)中,cookie中的language可控并且没有严格过滤,导致可以远程代码执行 ...

  7. SpringMVC+Ajax实现文件批量上传和下载功能实例代码

    需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...

  8. Java 从零开始实现一个画图板、以及图像处理功能,代码可复现

    Java 从零开始实现一个画图板.以及图像处理功能,代码可复现 这是一个学习分享博客,带你从零开始实现一个画图板.图像处理的小项目,为了降低阅读难度,本博客将画图板的一步步迭代优化过程展示给读者,篇幅 ...

  9. discuz功能列表

    导航旁边的+就可以把其加入到常用操作 上 首页 管理中心首页 文件校验,在线成员,管理团队留言.系统信息.开发 团队介绍. 常用操作管理 名称和URL 全局 站点信息 站点名称.网站名称,网站URL. ...

随机推荐

  1. coursera上的软件安全课程的课后阅读补充

    在coursera选修了一门软件安全的课程.下面是教授列出来的阅读: Week 1 Readings Required reading The only required reading this w ...

  2. docker 1.10.3 里php出现 curl 56错误码问题解决

    http://www.cnblogs.com/fengwei/p/5899018.html

  3. Linux环境下使用JFS文件系统

    Linux环境下使用JFS文件系统 JFS是IBM公司为linux系统开发的一个日志文件系统.从IBM的实力及它对Linux的态度来看,JFS应该是未来日志文件系统中最具实力的一个文件系统. JFS提 ...

  4. C#中dynamic、ExpandoObject 的正确用法

    原文地址:http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4.0的新特性.dynam ...

  5. hdu1573:数论,线性同余方程组

    题目大意: 给定一个N ,m 找到小于N的  对于i=1....m,满足  x mod ai=bi  的 x 的数量. 分析 先求出 同余方程组 的最小解x0,然后 每增加lcm(a1...,am)都 ...

  6. SAE Python使用经验 好文推荐

    SAE Python使用经验 好文推荐 SAE Python使用经验 好文推荐

  7. [置顶] 顿悟JAVA,自己实现Object的Clone的约束关系(上)

    因protected 的理解,顿悟一些JAVA的原理,模拟了Object类的子类为什么在调用clone方法前实现Cloneable接口. 这里不解释 ,上代码先. 运行效果 文件结构 调用类 pack ...

  8. c指针点滴1

    #include <stdio.h> #include <stdlib.h> void main() { ; int *p = &num;//&num是一个地址 ...

  9. c语言 (linux下)

    生成二进制 : gcc -o hello hello.c 生成汇编:gcc -o hello.s -S hello.c 生成预编译文件:gcc -o hello.i -E hello.c int ma ...

  10. iOS UILabel UITextView UIButton 等等显示文本行间距

    iOS UILabel  UITextView UIButton 等等显示文本行间距都用如下方法 NSMutableParagraphStyle *paragraphStyle = [[NSMutab ...