그누보드 5.4 버전용 알림플러그인
그누보드 5.4 버전용 알림플러그인 입니다.
그누보드 5.4.0.9 버전 이상에서 정상적으로 동작됩니다.
사용방법은 파일을 그대로 덮어쓰기하면 됩니다.
회원 로그인시 브라우저 왼쪽 하단에 알림 아이콘이 표시됩니다.
알림 아이콘을 누르면 위의 스크린샷처럼 나옵니다.

기본으로 모든 회원이 다 알림을 받는것으로 설정되며,
각 회원이 회원정보 수정에서 알림을 사용함/사용안함을 설정할수 있습니다.
알림적용대상은
글답변,
글의 댓글,
댓글의 댓글,
쪽지,
1:1 문의
등에 적용됩니다.
수정내역 :
2019.11.26 최초업로드
2019.12.04 회원이 알림수신을 하지 않을 경우 모든알림페이지에서 알림 css 파일이 로드되지 않는 문제 수정
2019.12.06 비회원의 댓글에 회원이 대댓글이 달면, 해당 회원으로 알림이 잘못 오는 오류 수정
2020.02.05 해피정님이 댓글로 알려주신 내용 수정
2020.09.29 새로 회원가입시 자동으로 알림을 받을수 있게 적용
2021.01.07 PHP8 버전에서 경고메시지 뜨는 코드 수정
버전 정보
테스트한 버전
5.4.0.9
호환 가능 버전
5.4.0.9
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 113개
php7 버전 미만에서 일어날수 있는 오류를 수정했으니, 해당 파일을 다시 받아서 적용해 주세요~
페이지 수정하면서 뭔가 관리자권한인곳에서만 뜨게 되버린것 같은데 혹시 어디를 확인해 봐야 할까요?
/plugin/noti54/notiview.php 페이지에서도 관리자는 잘 뜨는데
일반 회원은 css도 안먹고 리스트도 안뜨네요
[http://sir.kr/data/editor/1911/d3f223f3f5a209cc333ecab08b54e3ad_1574846866_2526.jpg]
찾아 보고 안되면 다시 질문 드리겠습니다~
기본으로 알림설정이 들어간다고 해서 생각을 못했습니다.
잘 작동 됩니다!! 좋은 소스 감사합니다~ ^^
디비가 생성이 되지 않는거 같습니다.
디비를 강제로 생성해 주니 잘 작동을 합니다. ^^*
`ph_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ph_to_case` varchar(50) NOT NULL DEFAULT '',
`ph_from_case` varchar(50) NOT NULL DEFAULT '',
`bo_table` varchar(20) NOT NULL DEFAULT '',
`rel_bo_table` varchar(20) NOT NULL DEFAULT '',
`wr_id` int(11) NOT NULL DEFAULT 0,
`rel_wr_id` int(11) NOT NULL DEFAULT 0,
`mb_id` varchar(255) NOT NULL DEFAULT '',
`rel_mb_id` varchar(255) NOT NULL DEFAULT '',
`rel_mb_nick` varchar(255) DEFAULT NULL,
`rel_msg` varchar(255) NOT NULL DEFAULT '',
`rel_url` varchar(200) NOT NULL DEFAULT '',
`ph_readed` char(1) NOT NULL DEFAULT 'N',
`ph_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`parent_subject` varchar(255) NOT NULL,
`wr_parent` int(11) DEFAULT 0,
PRIMARY KEY (`ph_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
동작하지 않는분들은 해당 쿼리를 날리셔서 디비를 생성 후 사용 해 보시기 바랍니다.
접두어를 변경하신분들은 접두어 변경을 해주세요
감사합니다.
add_stylesheet('<link rel="stylesheet" href="'.$noti_plugin_url.'/skin/noti.css">', 1);
를 아래와 같이 변경해야합니다.
add_stylesheet('<link rel="stylesheet" href="'.$noti_plugin_url.'skin/noti.css">', 1);
수정하지 않으면 아래와 같이 오류(?)가 발생합니다.
<link rel="stylesheet" href="http://도메인/plugin/noti54//skin/noti.css?ver=191202">
위의 내용에 적어 놓았습니다만, 5.4.0.9 버전 이상에서만 동작됩니다.
http://selfdate24.ohseon.com/yc5/
PHP Version 7.2.26
댓글내용 : test 라고 짧게 내용을 입력했습니다.
Fatal error: Uncaught ArgumentCountError: Too few arguments to function cut_str(), 1 passed in /home/****/public_html/plugin/noti54/classes.php on line 762 and at least 2 expected in /home/****/public_html/lib/common.lib.php on line 1468
ArgumentCountError: Too few arguments to function cut_str(), 1 passed in /home/****/public_html/plugin/noti54/classes.php on line 762 and at least 2 expected in /home/****/public_html/lib/common.lib.php on line 1468
에러발생 순서
├ 댓글1 <작성자: A>
│ │ <== 댓글1-1 이 있는 상태에서 <작성자K>가 댓글을 작성하면 에러 발생
│ └ 댓글1-1 <작성자: B>
├ 댓글2 <작성자: C>
└ 댓글3 <작성자: D>
QnA : https://sir.kr/qa/343187
parent_subject = '".sql_real_escape_string(cut_str(strip_tags($comment_wr['wr_content'])), 70)."',
를 아래와 같이 변경해서 오류 해결되었습니다.
parent_subject = '".sql_real_escape_string(cut_str(strip_tags($comment_wr['wr_content']), 70))."',
해당 내용을 수정해서 다시 위에 업로드 했습니다.
파일을 덮어쓰면 설치가된다는게
압축풀어서 FTP로 업로드하면 되는건가요?
저도 5.4.2 버전인데 알림버튼 클릭하면 NaN이 뜨네염 ㅠ
신규회원도 처음부터 알림을 받을수있게 체크되게 하려면 어떡해해야하는지 알려주시면 감사하겠습니다....
plugin/noti54/classes.php 파일에서
대략 147번째줄에 보면
[code]
$mb_is_noti = (isset($_POST['mb_is_noti']) && $_POST['mb_is_noti']) ? 1 : 0;
$sql = " update {$g5['member_table']} set mb_is_noti='$mb_is_noti' where mb_id = '$mb_id' ";
[/code]
이렇게 되어 있는 것을 아래와 같이 수정해 주시면 됩니다.
[code]
if( $w === 'u' ){
$mb_is_noti = (isset($_POST['mb_is_noti']) && $_POST['mb_is_noti']) ? 1 : 0;
$sql = " update {$g5['member_table']} set mb_is_noti='$mb_is_noti' where mb_id = '$mb_id' ";
}
[/code]
plugin/noti54/skin/noti.skin.php 파일의 32번째 줄
// 새창 환경에서는 작동되지 않게 한다.
if( $("#gnb_all").length || $("#wrapper").length || $("#hd").length || $("#tnb").length || $("#hd_wrapper").length || $("#ft").length || $("#aside").length ){
load_noti_ico();
}
위의 코드를 아래와 같이 수정하면 동작됩니다.
// 새창 환경에서는 작동되지 않게 한다.
if( $("#gnb_all").length || $("#wrapper").length || $("#hd").length || $("#tnb").length || $("#hd_wrapper").length || $("#ft").length || $("#aside").length || $("#nt_menu").length ){
load_noti_ico();
}
특정 위치 삽입 방법 질문 올렸는데 보신다면 답변 좀 부탁드리겠습니다!
<div>특정 위치 삽입</div>
이렇게 되어 있다면 특정 위치 삽입 이라고 되어 있는 부분에 <?php run_event('이벤트 이름'); ?> 을 지정합니다. ( 이벤트이름은 회원님이 아무렇게 지정해도 됩니다. 아래는 abcd_event 라고 하겠습니다. )
<div><?php run_event('abcd_event'); ?></div>
plugin/noti54/classes.php 파일에 보면은 37번째 줄에 아래 코드가 있습니다.
public function add_hooks(){
add_event('tail_sub', array($this, 'noti_init'), 1, 0);
위의 add_event('tail_sub', array($this, 'noti_init'), 1, 0); 코드에서 tail_sub 이라고 한 코드를 위에서 지정한 abcd_event 라고 수정합니다.
그러면 위의 <?php run_event('abcd_event'); ?> 한 위치에 출력됩니다.
public function add_hooks(){
//add_event('tail_sub', array($this, 'noti_init'), 1, 0);
add_event('abcd_event', array($this, 'noti_init'), 1, 0);
쪽지로 말고요..
비회원일경우 "비회원"이라는 내용이 뜨면 더욱 완벽할것 같습니다.
제가 포인트선물기능을 사용하고 있는데
포인트선물을 할 때 알려주려면 무엇을 추가하면 될까요?
classe.php에 추가해야 할 것 같은데, 답변 주시면 감사하겠습니다.
왜 그러는 걸까요?
신규회원은 곧바로 알림종이 안나오더라고요.
회원정보수정에서 체크해야 나오는데...
신규회원가입완료후 곧바로 알림종을 나오게 할려면 어떻게 해야 하나요?
위의 2020년 9월 29일자로 변경한 위의 자료를 적용해 주시거나 아니면
아래 내용을 확인하여 적용해 주시면 됩니다.
대략 147번째줄에 보면
[code]
$mb_is_noti = (isset($_POST['mb_is_noti']) && $_POST['mb_is_noti']) ? 1 : 0;
$sql = " update {$g5['member_table']} set mb_is_noti='$mb_is_noti' where mb_id = '$mb_id' ";
[/code]
이렇게 되어 있는 것을 아래와 같이 수정해 주시면 됩니다.
[code]
if( $w === 'u' ){
$mb_is_noti = (isset($_POST['mb_is_noti']) && $_POST['mb_is_noti']) ? 1 : 0;
$sql = " update {$g5['member_table']} set mb_is_noti='$mb_is_noti' where mb_id = '$mb_id' ";
}
[/code]
<?php run_event('tail_sub'); ?>
코드가 있는지 확인해 주세요.
없으면 기본 basic 테마의 tail.sub.php 파일을 참고하여 코드를 넣어 주세요.
해당 소스 정말정말 잘 사용하고 있는 그누보드린이 입니다
9월 29일 소스가 바뀌기전 새로 가입한 회원 전부
알림창 표시하게 하려면 소스를 어떻게 변경해야 할까요?
아니면 회원분들 알림창 사용여부 결정권 없이
그냥 모두 알림창이 표시되게 하고 싶습니다.
mb_is_noti 의 값이 0이면 사용안함이며, 1이면 사용함입니다.
그러므로 전부 1로 변경해 주시면 됩니다.
update {$g5['member_table']} set mb_is_noti = 1
if( defined('G5_IS_ADMIN') ){ // 관리자페이지에서는 사용 안함
return;
}
에서 //return; 앞에 주석을 넣어주면 사용가능한것 아닌가요? 사용자페이지에서는 잘되는 관리자 페이지에서는 보이지를 않네요 ㅠ.ㅠ
plugin 폴더에 있는거를 plugin에 넣고
하면 끝인가요..? 왜 아무것도 안바뀌지 음..따로뭘해줘야 되는건지 ^^;;
초보라 너무기초적인 질문이라 죄송합니다!
1.
plugin/noti54/classes.php 파일에 보면은 37번째 줄에 아래 코드가 있습니다.
public function add_hooks(){
add_event('tail_sub', array($this, 'noti_init'), 1, 0);
2.
이 코드에서 tail_sub 코드를 위에서 abcd_event 라고 수정합니다.
3.
<div><?php run_event('abcd_event'); ?></div>
요걸 적당한 위치에 붙여넣기
(위치가 css로 고정돼있어서 코드 넣는 위치는 크게 상관없어 보입니다)
님 글 본뒤 thisgun님 글 보니까 그게 이뜻이였구나 이해가 가는..
제 무지를 탓해야겠지만 님같은 분들이 계셔서 초보도 줍줍해서 간간히 살림살이 살찌우고 있습니다.
아무도 초보설움?을 몰라주는데 댓글 인사도 없는거보니 제 기분도 않좋네요.
꼭 감사 댓글을 전하고 싶었습니다. 감사합니다.
저는 현재 이쪽 일은 하지 않습니다만, 좋은 결과 바랍니다
3번은 표시하고 싶은 html 파일 안에 넣어주시면 됩니다. 저런 형식의 코드는 php 파일에서는 쓰지 않는 걸로 압니다.
진짜 천재인가봐요 ㅠㅠ
잘쓰겟습니다
if( $w === 'u' ){
$mb_is_noti = (isset($_POST['mb_is_noti']) && $_POST['mb_is_noti']) ? 1 : 0;
$sql = " update {$g5['member_table']} set mb_is_noti='$mb_is_noti' where mb_id = '$mb_id' ";
}
sql_query($sql, false);
}
이렇게 되어 있는데
sql_query가 if 문 안으로 들어가야 하지 않을까요?
테마를 기본테마 말고 변경테마 이용하면. 종이 사라지는데. 혹시 어느 구분에서 수정해야할까요 ? 아무리 찾아봐도 확인이 안되서요 ㅠㅠ
뭐가 문제일까요?
감사합니다.
아니면 경로를 잘못넣었는지 그냥 plugin 폴더 안에 위폴더를 넣었는데 틀렸나요 ? ㅠㅠ
add_event('tail_sub', array($this, 'noti_init'), 1, 0);
원래 코드 그대로도 해보고
add_event('abcd_event', array($this, 'noti_init'), 1, 0);
가칭으로 수정해서 해봐도
뭐가 문제인지 꼼짝도 안합니다.
물론 사용하는 테마의 tail.sub.php 파일에
<?php run_event('tail_sub'); ?> 코드도 있고요....
<?php run_event('가칭 이름'); ?>으로 전체적으로 바꿔봐도 무덤덤하네요. ㅠㅠ
혹여 성공하신분들 계시면 친절한 가르침을 부탁드립니다.
그누보드 5.5.7.5 버전입니다.
hook 이 아닌 class method로 직접 호출하려면 테마 또는 스킨 파일에서
<?php G5_NOTI_54::getInstance()->noti_init(); ?>
이렇게 코드를 추가한 후에
브라우저 우클릭 소스보기 하고
/plugin/noti54/skin/noti.skin.php 파일의 코드가 있는지 확인해 보세요.
설마하니 누가 댓글을 달아 줄거란 생각은 못했는데 정말 감사합니다.
알려준데로 찾아보니 noti.skin.php 파일을 불러오지 못하나봅니다.
분명 그누 메인 디렉토리에는 plugin/noti54, extend/ 내부에 파일들 다 있습니다.
테마의 tail.sub.php에서 불렀는데도 못읽으면 제가 잘못한 부분이 있겠네요.
특별히 소스 수정한거라곤 우클릭 금지외에는 손댄게 없는데.....
아무튼 감사합니다.
좀 더 고민해보겠습니다.
수정을 시도 했으나 실패..
테마에서 hook 지원 안하면 안되나봅니다. 여태 헤매고 있었네요.
안되시는 분들은 테마에서 지원을 안하는겁니다.
그누 5.5 php 7.2 입니다.
Warning: Trying to access array offset on value of type null in D:\xxamp\g5\bbs\register_form_update.php on line 534
Warning: Undefined variable $sql in D:\xxamp\g5\plugin\noti54\classes.php on line 152
Fatal error: Uncaught ValueError: mysqli_query(): Argument #2 ($query) cannot be empty in D:\xxamp\g5\lib\common.lib.php:1717 Stack trace: #0 D:\xxamp\g5\lib\common.lib.php(1717): mysqli_query(Object(mysqli), '') #1 D:\xxamp\g5\plugin\noti54\classes.php(152): sql_query('', false) #2 D:\xxamp\g5\lib\Hook\hook.extends.class.php(26): G5_NOTI_54->register_form_update_after('test', '') #3 D:\xxamp\g5\lib\Hook\hook.class.php(188): GML_Hook->runAction(Array, Array) #4 D:\xxamp\g5\lib\hook.lib.php(64): Hook::doAction('register_form_u...', Array, false) #5 D:\xxamp\g5\bbs\register_form_update.php(590): run_event('register_form_u...', 'test', '') #6 {main} thrown in D:\xxamp\g5\lib\common.lib.php on line 1717
알림 플러그인 적용하니 잘 되는데
회원가입 창에서 회원가입을 마치면 이런 창이 뜨네요 (원래 가입을 축하합니다 가 떠야하는데..)
어떻게 해결을 하면 좋을까요?
왼쪽하단 종위치를 오른쪽 하단으로 옮길 수 있을까요? 클릭시 나오는 메세지도 오른쪽에서 왼쪽으로 나왔으면 하는데.. 파일이 많다보니 찾기가 어렵네요ㅎㅎ! 우선 잘 작동합니다.