테스트 사이트 - 개발 중인 베타 버전입니다

글, 댓글에서 멘션 사용하기

· 13년 전 · 6873 · 29
글이니 댓글에서 @회원별명 을 넣으면, 해당 회원에게, 해당 글/댓글의 링크가 담긴 쪽지를 보내는 코드입니다.

글내의 멘션처리는, write_update.skin.php 에 다음 코드를 넣습니다.
[code]
//멘션
if (preg_match_all('/@(\S+?)/iU', $wr_content, $matches, PREG_SET_ORDER)) {
$link = "{$g4['url']}/bbs/board.php?bo_table={$bo_table}&wr_id={$wr_id}";
$mentioned_list = Array();
foreach ($matches as $v) {
if (array_search($v[1], $mentioned_list) === false) $mentioned_list[] = $v[1];
}

foreach ($mentioned_list as $mentioned) {
$receiver = sql_fetch(" SELECT * FROM {$g4['member_table']} WHERE mb_nick = '{$mentioned}' ");
if (isset($receiver['mb_id']) && $receiver['mb_id']!=$member['mb_id']) {
// memo_id
$tmp_row = sql_fetch(" SELECT MAX(me_id) AS max_me_id FROM {$g4['memo_table']} ");
$me_id = $tmp_row['max_me_id'] + 1;
// 쪽지 작성
sql_query(" INSERT INTO {$g4['memo_table']}
( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo )
VALUES ( '$me_id', '{$receiver['mb_id']}', '{$member['mb_id']}', '{$g4['time_ymdhis']}', '{$member['mb_nick']}님이 [{$board['bo_subject']}] 게시판의 글에서 멘션을 남기셨습니다. {$link}' ) ");
// 실시간 쪽지 알림 기능
sql_query(" UPDATE {$g4['member_table']} SET mb_memo_call = '{$member['mb_id']}' WHERE mb_id = '{$receiver['mb_id']}' ");
}
}
}
[/code]

댓글내의 맨션은 write_comment_update.skin.php 에 다음 코드를 넣습니다.. 차이점은, 중간에 링크를 만드는 wr_id만 다릅니다. :)
[code]
//멘션
if (preg_match_all('/@(\S+?)/iU', $wr_content, $matches, PREG_SET_ORDER)) {
$link = "{$g4['url']}/bbs/board.php?bo_table={$bo_table}&wr_id={$comment_id}";
$mentioned_list = Array();
foreach ($matches as $v) {
if (array_search($v[1], $mentioned_list) === false) $mentioned_list[] = $v[1];
}

foreach ($mentioned_list as $mentioned) {
$receiver = sql_fetch(" SELECT * FROM {$g4['member_table']} WHERE mb_nick = '{$mentioned}' ");
if (isset($receiver['mb_id']) && $receiver['mb_id']!=$member['mb_id']) {
// memo_id
$tmp_row = sql_fetch(" SELECT MAX(me_id) AS max_me_id FROM {$g4['memo_table']} ");
$me_id = $tmp_row['max_me_id'] + 1;
// 쪽지 작성
sql_query(" INSERT INTO {$g4['memo_table']}
( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo )
VALUES ( '$me_id', '{$receiver['mb_id']}', '{$member['mb_id']}', '{$g4['time_ymdhis']}', '{$member['mb_nick']}님이 [{$board['bo_subject']}] 게시판의 댓글에서 멘션을 남기셨습니다. {$link}' ) ");
// 실시간 쪽지 알림 기능
sql_query(" UPDATE {$g4['member_table']} SET mb_memo_call = '{$member['mb_id']}' WHERE mb_id = '{$receiver['mb_id']}' ");
}
}
}
[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 29개

첫번째 코드를 write_update.skin.php 에 추가하시면 될텐데요?
아, 위 코드는 g4 버전 용이니, g5에서는 작동하지 않겠네요..
(아마도 $g4 변수만 $g5 로 바꾸면 되지 않을까 하지만. .확실친 않네요.. ^^;)
그누보드4 사용하는데요.
위코드를 write_update.skin.php에 추가해도 작동을 하지 않더라구요.
음.. 그러면 이유를 모르겠네요..
저도 그렇고 다른 분들도, 문제가 발생하지 않았으니..
코드상으로 다른 코드와 충돌할 만한 내용도 없고요.. ^^;
조기 윗분중 Giso님도 본문에서는 안되고 댓글만 된다고 하시는데...
저도 몇군데 사이트에 적용을 해봐도 안되서요~ ^^;
제가 테스트를 여러번 해본 결과...본문에 그냥 @별명만 쓰면 쪽지가 날아가는데...
@별명과 내용글을 함께 쓰면 안되네요...
g4dtd 버전에서 정상적으로 사용하고 있습니다.
http://study.gnuboard.org/bbs/board.php?bo_table=cm_free&wr_id=105
(회원아이디는 아니지만, 적용될 패턴에 해당하는 문자열의 색이 변환되었습니다.)
버전문제가 아니라면.. 글쎄요.. ^^;
댓글이 아닌
본문에서 내용적고 @회원별명 적어도 쪽지가 날아가는지요?
네, 잘 작동합니다. ^^
9년 전
그누5에서는 동작하지않나요?

게시글 목록

번호 제목
34706
34693
34563
34536
34521
34480
34479
34466
34437
34436
34435
34406
34398
34387
34382
34375
34364
34336
34294
34293