회원가입 | 고객센터 |
DESIGNONEX
dxcms.kr
DX마켓
Service
PR리그
Q&A
지식공유
공지사항
통계
로그인 회원가입
고객센터

게시글 신고 플러그인

D DX관리자
2026.07.29 15:52(수정됨) 7 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' 조건으로 조회

 
첨부파일 1개 회원전용 300P

댓글0

로그인 후 댓글을 작성할 수 있습니다.
Plugin 22
41
전체 회원
1,429
전체 게시글
2,466
전체 댓글
51
오늘 방문
51,370
전체 방문
1
현재 접속
인기글 7일 이내
최신글
최신댓글
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록
목록