01         $atlist $atlist_tmp $ateduids array();
02         preg_match_all("/@([^\r\n]*?)\s/i"$message.' '$atlist_tmp);//解析内容里的被@到的名字。
03         $atlist_tmp array_slice(array_unique($atlist_tmp[1]), 0, $_G['group']['allowat']);//应该是提取用户名吧。。
04         $atnum $maxselect = 0;
05         foreach(C::t('home_notification')->fetch_all_by_authorid_fromid($_G['uid'], $_G['tid'], 'at'as $row) {
06             $atnum ++;//这个循环暂时搞不懂。还没看过这个表是干嘛的。
07             $ateduids[$row[uid]] = $row['uid'];
08         }
09         $maxselect $_G['group']['allowat'] - $atnum;
10         if($maxselect > 0 && !empty($atlist_tmp)) {
11         if(empty($_G['setting']['at_anyone'])) {//判断是否只能@好友,如果只能@好友的话,那就从下面的home_follow表中找出在好友列表里的人的姓名。其他的就@不到了。
12                 foreach(C::t('home_follow')->fetch_all_by_uid_fusername($_G['uid'], $atlist_tmpas $row) {
13                     if(!in_array($row['followuid'], $ateduids)) {
14                         $atlist[$row[followuid]] = $row['fusername'];
15                     }
16                     if(count($atlist) == $maxselect) {
17                         break;
18                     }
19                 }
20                 if(count($atlist) < $maxselect) {//判断@上限。
21                     $query = C::t('home_friend')->fetch_all_by_uid_username($_G['uid'], $atlist_tmp);//不用说了吧
22                     foreach($query as $row) {
23                         if(!in_array($row['followuid'], $ateduids)) {
24                             $atlist[$row[fuid]] = $row['fusername'];
25                         }
26                     }
27                 }
28             else {
29                 foreach(C::t('common_member')->fetch_all_by_username($atlist_tmpas $row) {
30                     if(in_array($row['uid'], $ateduids)) {
31                         $atlist[$row[uid]] = $row['username'];
32                     }
33                     if(count($atlist) == $maxselect) {
34                         break;
35                     }
36                 }
37             }
38         }
39         if($atlist) {//提醒和加链接。
40             foreach($atlist as $atuid => $atusername) {
41                 $notic array('subject' => '铂金小猪我爱你''message' => '铂金小猪你好,红薯在评论回复中说他爱你''from_id' => 0, 'from_idtype' =>'sendnotice');
42                 notification_add($atuid,'system','system_notice',$notic,1);//发送提醒给被@到的用户。$notic是提醒的内容。
43                 $atsearch[] = "/@$atusername /i";
44                 $atreplace[] = "[url=home.php?mod=space&uid=$atuid]@{$atusername}[/url] ";//加链接,但不是a标签。
45             }
46             $message = preg_replace($atsearch$atreplace$message.' ', 1);
47         }
48 require_once libfile('function/followcode');
49 require_once libfile('function/discuzcode');
50 $cont=followcode($message);//格式化代码中的标签