본문으로 건너뛰기
DXStudio
로그인

게시글 신고 플러그인

D DX관리자
2026.07.29 15:52(수정됨) 41 0


















 
  내용
플러그인 ID dx-report
버전 1.2.0
지원 PHP 5.6 이상 (Windows 환경 포함)
지원 DB MySQL 5.6+ / MariaDB 10.1+
제작사 DesignOneX (디자인원엑스)
라이선스 디자인원엑스 라이선스
 
 

라이선스

항목 내용
재배포·판매 ❌  금지 (원천 소스 90% 이상 수정 시 재배포 및 판매 가능)
플러그인 원천 시스템 DesignOneX 소유
상업적 사용 ✅  상업적 제작에만 허용, 학습용
라이선스 디자인원엑스 라이선스
 
⚠️  플러그인 코어(plugin.php, core/, admin/) 자체의 재배포 및 판매는 금지됩니다.
 
 

1. 개요 및 주요 기능

DX Report는 DXCMS 게시판의 게시글과 댓글에 신고 기능을 추가하는 플러그인입니다. 신고 누적 시 자동 블라인드·삭제 처리, 관리자 알림, 포인트 지급, 독립 관리자 대시보드를 제공합니다.
 
기능 설명
신고 버튼 자동 삽입 게시글 본문 하단 또는 액션 바에 신고 버튼 자동 출력
댓글 신고 ⋮ 드롭다운 메뉴에 신고 버튼 추가
신고 모달 사유 선택 + 기타 직접 입력 지원
자동 블라인드 신고 누적 임계값 도달 시 게시글·댓글 내용 자동 숨김
자동 삭제 임계값 초과 시 게시글 자동 삭제
포인트 지급 관리자 블라인드/삭제 처리 시 신고자에게 포인트 지급 (dx_point_log)
관리자 알림 24시간 그만보기 + 신규 신고 발생 시 자동 재표시
신고 관리자 화면 대시보드, 신고 목록, 처리, 기각 기능
사유 한글화 관리자 화면에서 신고 사유 한글 표시
직접입력 보기 기타 사유 클릭 시 전체 내용 모달 팝업
 

파일 구조

plugins/dx-report/
  ├── plugin.php        메인 플러그인 파일 (훅 등록)
  ├── manifest.php      플러그인 메타 정보
  ├── core/
  │   ├── install.php   DB 테이블 자동 설치 및 업그레이드
  │   └── helper.php    핵심 함수 모음
  ├── admin/
  │   └── index.php     관리자 화면
  └── assets/
      └── report.css    버튼 및 모달 스타일
 
 
 

2. 설치 방법

2.1 파일 업로드

다운로드한 dx-report-v1.2.zip의 압축을 해제하고 아래 경로에 업로드합니다.
D:\www_dxcms_ext\plugins\dx-report\
⚠️  dx-report 폴더 안에 dx-report 폴더가 중첩되지 않도록 주의합니다.
 

2.2 플러그인 활성화

  • DXCMS 관리자 → 플러그인 → dx-report 활성화
  • 활성화 즉시 DB 테이블 3개 자동 생성
  • 설치 완료 후 관리자 사이드바에 [신고 관리] 메뉴 추가
 

2.3 생성 테이블

테이블명 용도
dx_report_settings 신고 설정 (임계값, 포인트, 버튼 등)
dx_reports 신고 기록 (신고자, 사유, 처리 상태)
dx_report_counts 신고 집계 (블라인드/삭제 상태)
💡  포인트는 별도 테이블 없이 DXCMS 기본 dx_point_log 테이블에 직접 기록됩니다.
 
 

3. 데이터베이스 구조

3.1 dx_report_settings

컬럼 타입 설명
is_active TINYINT(1) 기능 ON/OFF
auto_insert TINYINT(1) 버튼 자동 삽입 여부
insert_position VARCHAR(20) 삽입 위치 (content_bottom / action_bar)
blind_threshold INT UNSIGNED 블라인드 임계값 (신고 건수)
delete_threshold INT UNSIGNED 삭제 임계값 (0=비활성)
report_point INT UNSIGNED 채택 시 지급 포인트 (0=비활성)
btn_label VARCHAR(50) 버튼 텍스트
btn_style VARCHAR(20) 버튼 스타일 (subtle/outline/solid)
notify_admin TINYINT(1) 관리자 알림 ON/OFF
reasons TEXT 신고 사유 목록 (JSON)
 

3.2 dx_reports

컬럼 타입 설명
target_type VARCHAR(20) post 또는 comment
target_id VARCHAR(20) 신고 대상 ID (DXCMS BIGINT → string)
board_key VARCHAR(64) 게시판 키
post_id VARCHAR(20) 댓글 신고 시 원글 ID
member_id INT UNSIGNED 신고자 회원 ID (비회원=0)
reason_code VARCHAR(50) 신고 사유 코드
reason_text TEXT 기타 직접 입력 내용
status VARCHAR(20) pending / reviewed / dismissed
point_granted TINYINT(1) 포인트 지급 완료 여부 (중복 방지)
 
 

4. 관리자 설정

DXCMS 관리자 → 신고 관리 → 설정 변경 버튼에서 접근합니다.
 
설정 항목 기본값 설명
신고 기능 활성화 ON 전체 신고 기능 ON/OFF
자동 삽입 ON 신고 버튼 자동 삽입 여부
삽입 위치 content_bottom content_bottom: 본문 하단 / action_bar: 액션 버튼 영역
로그인 필수 ON OFF 시 비회원도 신고 가능
블라인드 임계값 5건 이 건수 이상 신고 시 자동 블라인드
삭제 임계값 0건 0 = 자동 삭제 비활성화
신고 채택 포인트 0 0=비활성 / 1이상=블라인드·삭제 처리 시 신고자에게 지급
버튼 라벨 신고 버튼에 표시될 텍스트
버튼 스타일 subtle subtle / outline / solid
직접 입력 허용 ON 기타 사유 직접 입력 허용
관리자 알림 ON 대기 신고 발생 시 알림 모달 표시
 
 

5. 신고 버튼

5.1 자동 삽입

삽입 위치 DOM 기준 설명
content_bottom .dx-file-box beforebegin 첨부파일 박스 위
action_bar .dx-action-btn 앞 좋아요/스크랩 버튼 영역 앞
 

5.2 버튼 스타일

스타일 외형
subtle (기본) 회색 배경 + 둥근 모서리
outline 빨간 테두리 + 투명 배경
solid 빨간 배경 + 흰 텍스트
 

5.3 수동 삽입

뷰 파일에서 직접 신고 버튼을 삽입하려면 아래 코드를 사용합니다.
<?php
if (function_exists('dxrp_btn_html')) {
    echo dxrp_btn_html(
        'post',              // 대상 유형: post 또는 comment
        $post['id'],         // 대상 ID
        $board['board_key'], // 게시판 키
        0,                   // post_id (댓글 신고 시 원글 ID)
        $board['id'],        // 게시판 ID
        'manual'             // 위치 식별자
    );
}
?>
 
 
 

6. 신고 모달 및 사유

6.1 기본 신고 사유

코드 한글 표시
spam 스팸/광고
obscene 음란/선정적
abuse 욕설/비방
illegal 불법 정보
privacy 개인정보 침해
copyright 저작권 침해
other 기타 (직접 입력)
 
💡  기타 선택 시 텍스트 입력창이 표시됩니다. 관리자 화면에서 사유 텍스트를 클릭하면 전체 내용을 모달로 확인할 수 있습니다.
 
 

7. 블라인드 처리

7.1 게시글 블라인드

처리 항목 방식
본문 내용 404 없이 안내 메시지로 교체
첨부파일 파일 목록 비우기 + 다운로드 링크 차단
DB 처리 dx_report_counts.blind_status = 1
 

7.2 댓글 블라인드

블라인드된 댓글은 작성자·날짜는 유지되고 내용만 안내 메시지로 교체됩니다.
💡  관리자와 댓글 작성자 본인은 블라인드 내용도 볼 수 있습니다 (DXCMS 비밀댓글 방식과 동일).
 

7.3 블라인드 해제

관리자 화면 → 처리 버튼 → 블라인드 해제 선택 시 즉시 복구됩니다.
 

7.4 자동 삭제

⚠️  자동 삭제는 복구가 어렵습니다. 임계값을 신중히 설정하거나 0(비활성)으로 유지하고 수동 처리를 권장합니다.
 
 

8. 댓글 신고

8.1 DOM 구조 (DXCMS 기본 게시판)

요소 셀렉터
댓글 아이템 id="comment-{숫자}"
⋮ 드롭다운 메뉴 id="dx-cmt-menu-{숫자}"
댓글 본문 id="cmt-view-{숫자}"  class="dx-cmt-body"
댓글 섹션 section.dx-cmt-section
 

8.2 신고 버튼 삽입 방식

  • 1순위: #dx-cmt-menu-{id} 드롭다운 안 하단에 빨간 신고 버튼 추가
  • 2순위: 드롭다운 없으면 댓글 본문 (#cmt-view-{id}) 다음에 삽입
  • AJAX로 동적 추가된 댓글도 MutationObserver로 자동 감지
 
 

9. 포인트 연동 (dx_point_log)

별도 테이블 없이 DXCMS 기본 포인트 테이블(dx_point_log)에 직접 기록합니다.
 

9.1 지급 조건

상황 포인트 지급
관리자가 직접 블라인드 처리 ✅  지급
관리자가 직접 삭제 처리 ✅  지급
신고 누적으로 자동 블라인드/삭제 ❌  미지급
기각 처리 ❌  미지급
동일 신고에 중복 지급 ❌  point_granted=1 플래그로 차단
 

9.2 dx_point_log 기록 형식

컬럼 값
type 'report'
point 설정된 포인트 값
balance 이전 잔액 + 포인트
ref_type 'post' 또는 'comment'
ref_id 신고 대상 ID
note '신고 채택 포인트'
 

9.3 설정 방법

  • 관리자 → 신고 관리 → 설정 → 신고 채택 포인트 항목에 1 이상 입력 후 저장
  • 0 입력 시 포인트 기능 완전 비활성화
 
 

10. 관리자 알림

10.1 동작 방식

단계 내용
1 관리자로 로그인한 상태에서 아무 페이지 접근
2 dx_reports 테이블에서 status='pending' 건수 카운트
3 대기 건수 > 0 이면 전체 화면 오버레이 모달 표시
4 신고 관리 바로가기 또는 닫기/그만보기로 모달 해제
 

10.2 24시간 그만보기

  • 쿠키(dxrp_admin_hide)에 숨긴 시각(Unix timestamp) 저장
  • PHP에서 해당 시각 이후 신규 신고가 있으면 모달 다시 표시
  • 신규 신고가 없으면 24시간 동안 모달 표시 안 함
💡  관리자 페이지(/admin)에서는 신고 목록이 바로 보이므로 모달 미표시
 
 

11. 신고 관리자 화면

11.1 대시보드 통계

통계 카드 설명
전체 신고 누적 신고 총 건수
검토 대기 pending 상태 건수
오늘 신고 당일 접수 건수
블라인드 처리 자동/수동 블라인드 처리 건수
삭제 처리 자동/수동 삭제 처리 건수
 

11.2 처리 옵션

처리 설명
블라인드 게시글/댓글 내용 숨김 (복구 가능) + 포인트 지급
블라인드 해제 블라인드 상태 해제
삭제 게시글 삭제 처리 + 포인트 지급
복구 삭제/블라인드 상태 복구
기각 신고 내용 부적절 시 기각 처리 (포인트 미지급)
 
 

12. 훅(Hook) 연동 가이드

12.1 신고 발생 알림 훅

dx_add_hook('dx_report_notify', function($data) {
    // $data['notify_type'] : 'report' | 'blind' | 'delete'
    // $data['title']       : 알림 제목
    // $data['message']     : 알림 내용
    // $data['post_url']    : 게시글 URL
    // $data['admin_url']   : 관리자 신고 URL
    // 이메일, Slack, 푸시 알림 등 연동 가능
});

12.2 포인트 지급 완료 훅

dx_add_hook('dx_report_point_granted', function($data) {
    // $data['member_id'] : 지급 대상 회원 ID
    // $data['point']     : 지급 포인트
    // $data['report_id'] : 신고 ID
    // $data['reason']    : '신고 채택'
    // 외부 포인트 플러그인 추가 연동 가능
});

12.3 신고 직접 접수 (API)

$result = dxrp_submit(array(
    'target_type' => 'post',
    'target_id'   => $post['id'],
    'board_key'   => $board['board_key'],
    'member_id'   => $memberId,
    'reason_code' => 'spam',
    'reason_text' => '',
));
// $result['ok']          : true/false
// $result['count']       : 누적 신고 건수
// $result['auto_action'] : '' | 'blinded' | 'deleted'
 
 
 

13. 문제 해결 (FAQ)

증상 원인 및 해결
포인트가 적립되지 않음 설정의 신고 채택 포인트가 0인지 확인. 자동 블라인드/삭제는 포인트 미지급, 관리자 직접 처리 시에만 지급
댓글 블라인드 후 댓글이 사라짐 #cmt-view-{id} innerHTML을 안내 메시지로 교체. 댓글 구조(아바타, 작성자)는 유지됨
신고 버튼이 표시되지 않음 설정에서 신고 기능 활성화 ON 확인. 적용 게시판 설정이 해당 게시판 키와 일치하는지 확인
관리자 알림이 계속 뜸 24시간 그만보기 클릭 후에도 신규 신고가 들어오면 다시 표시됨 (정상 동작)
install SQL error: key too long innodb_strict_mode=0 자동 적용. MySQL 5.6 이하면 MariaDB 10.1+ 업그레이드 권장
신고 처리 후 포인트 내역 확인 phpMyAdmin에서 dx_point_log 테이블 → type='report' 조건으로 조회
 

라이선스

디자인원엑스 라이선스 참고
https://designonex.com/notice/view/1787577858493247
첨부파일 1개 회원전용

댓글0

로그인 후 댓글을 작성할 수 있습니다.
Plugin 58개
51
전체 회원
1,533
전체 게시글
3,011
전체 댓글
12
오늘 방문
55,218
전체 방문
1
현재 접속
최신댓글

© 2026 DXStudio. ALL RIGHTS RESERVED.

내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록 로그인