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

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

· 13년 전 · 6874 · 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개

감사합니다 계속 탐났는데 말이죠.
그런데 로직이 이미 머리속에 나왔네요 ㅠ.ㅠ;
추천@!!

적용해 보겠습니다
13년 전
참치!!
13년 전
정규식씨랑 친하면 못 짤게 없단 말이 새삼 떠오르네요 ㅎㅎㅎ
글쵸? ㅋㅋ
저 긴 코드에서 쓸만한 것은

preg_match_all('/@(\S+?)/iU', $wr_content, $matches, PREG_SET_ORDER)

하나밖에 없어요.. ^^;
13년 전
겸손쟁이 전진님 우후훗~
@Terroboy @진서기 @지운아빠 모두 감사합니다. ^^;
13년 전
@Terroboy @진서기 @지운아빠님 댓글감사하구요
@전진님 좋은 자료 감사드립니다
추천!
13년 전
신기하네요. 유용한 정보 감사합니다.

게시글 목록

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