그누보드 Hook 목록
그누보드 5.5 버전부터 추가된 Hook은 버전을 표기하였음.
INFO
예시로 작성된 코드의 상단에 PHPDoc은 콜백이 전달받는 파라미터의 정보를 표기한 것이다.
콜백에 전달되는 파라미터의 이름은 정해진 것이 아니며, Hook을 실행할 때 전달하는 파라미터의 이름을 기반으로 임의로 작성된 것이므로 자유롭게 변경하여 사용할 수 있다.
TIP
- v5.5.8.3.2 버전 미만에서는 Replace Hook(
add_replace()
)을 사용할 때는 전달받을 파라미터의 갯수를 반드시 지정해야 한다- v5.5.8.3.2 부터는 생략해도 항상 1개의 파라미터를 받는다
코어
common_header Event
/common.php
파일에서 공통 HTTP Header를 정의 후 실행된다. 새로운 Header를 설정하거나 교체할 수 있다. 또는 기타 필요한 동작을 실행할 수 있다.
add_event('common_header', function () {
// 예시: `Content-Type` 헤더 교체
header('Content-Type: application/json; charset=utf-8');
});
TIP
그누보드가 동작되는 모든 요청에서 실행된다.
플러그인(extend 폴더)에서 활용할 수 있는 가장 먼저 실행되는 Hook이다.
사실 sql_query_after
, is_admin
등의 Hook이 먼저 실행되지만 플러그인, 테마, 스킨 등에서 리스너를 추가할 기회 전에 실행되기 때문에 사실상 활용이 어렵다.
admin_common Event Since v5.5.7
common_header
Hook이 전체에서 실행되는 것이라면, admin_common
Hook은 관리페이지 및 기능에서만 실행된다. 관리페이지에서 실행되는 (거의) 모든 코드가 실행될 때 호출된다.
goto_url Event Since v5.5.8.2.6
alert Event
그누보드 동작 중 오류를 표시하는 alert()
함수가 실행될 때 호출된다.
/**
* @param string $msg 메시지 문자열
* @param string $url 이동할 페이지 URL
* @param bool $error 오류 여부
* @param bool $post POST Method
*/
add_event('alert', function ($msg, $url, $error, $post) {
// 예시: JSON 응답 요청 시 HTML 반환 대신 JSON 응답 처리
if (!headers_sent()) {
header('Content-Type: application/json; charset=UTF-8');
}
echo json_encode(['msg' => $msg, 'error' => $error], JSON_PRETTY_PRINT);
exit;
}, G5_HOOK_DEFAULT_PRIORITY, 4);
활용 예
- 요청에 따라 응답 유형을 변경하여 반환
- 로그메시지 기록
alert_close Event
그누보드 동작 중 오류를 표시하는 alert_close()
함수가 실행될 때 호출된다.
/**
* @param string $msg 메시지 문자열
* @param bool $error 오류 여부
*/
add_event('alert_close', function ($msg, $error) {
// 예시: JSON 응답 요청 시 HTML 반환 대신 JSON 응답 처리
if (!headers_sent()) {
header('Content-Type: application/json; charset=UTF-8');
}
echo json_encode(['msg' => $msg, 'error' => $error], JSON_PRETTY_PRINT);
exit;
}, G5_HOOK_DEFAULT_PRIORITY, 2);
활용 예
- 요청에 따라 응답 유형을 변경하여 반환
- 로그메시지 기록
get_permission_debug_show Replace
환경설정
사용하지 않는 것을 권장
환경설정을 로드할 때 실행되는 get_config
, get_config_cache
Hook은 사용하지 않는 것을 권장한다.
환경설정 데이터는 get_config()
함수 내부와 전역변수 $config
에 캐시되어 재사용되므로, 이 Hook 들이 실행되지 않을 수 있으며, 관리페이지에서 환경설정을 저장할 때 의도하지 않은 문제를 일으킬 가능성이 있다.
필요하다면, 역시 권장하는 방법은 아니지만 $config
전역변수를 직접 변경하여 해결하는 것이 낫다. 결코 좋지 않지만 어쩔 수 없이 그나마 이것이 낫다.
get_config Replace
그누보드 환경설정을 가져올 때 실행된다.
이 Hook은 실행되지 않을 수 있음
콜백을 등록할 때는 이미 환경설정 데이터가 로드된 이후이며, 이 데이터는 get_config()
함수 내에서 캐시되고 또한 $config
전역변수에 데이터를 담아 재사용되므로 이 Hook은 실행되지 않을 수 있다.
/**
* @param array $config 그누보드 환경설정 값
*/
add_replace('get_config', function ($config) {
// ... 환경설정을 가져올 때 실행될 코드
return $config;
}, G5_HOOK_DEFAULT_PRIORITY, 1);
get_config_cache Replace
그누보드 환경설정을 가져올 때 캐시된 데이터가 있을 때 이를 반환할 때 실행된다.
이 Hook이 전달받는 파라미터의 값을 확인해야 한다. $config
가 빈 배열이라면 추가 동작을 실행하지 않는 것이 좋고, $is_cache
가 false
이면 캐시된 데이터를 무시하고 DB에서 새로운 데이터를 가져오기를 요청한 것이므로 역시 이 Hook에서 데이터를 변경하여 반환하면 안 된다.
이 Hook은 실행되지 않을 수 있음
콜백을 등록할 때는 이미 환경설정 데이터가 로드된 이후이며, $config
전역변수에 데이터를 담아 재사용되므로 이 Hook은 실행되지 않을 수 있다.
/**
* @param array $config 그누보드 환경설정 값
* @param bool $is_cache 캐시된 데이터를 반환할 때 true
*/
add_replace('get_config_cache', function ($config, $is_cache) {
// 캐시된 데이터 요청이 아니거나 캐시된 데이터가 없으면 추가 동작 중지
if (!count($config) || !$is_cache) {
return $config;
}
// ... 환경설정을 가져올 때 실행될 코드
return $config;
}, G5_HOOK_DEFAULT_PRIORITY, 1);
레이아웃
사이트 디자인 구성을 출력하는 레이아웃이 출력될 때 실행되는 Hook이다.
pre_head Event
레이아웃 코드를 출력하는 head.sub.php
파일에서 <html>
태그를 출력하기 전에 실행된다.
run_event('pre_head', function () {
$GLOBALS['g5']['body_script'] .= ';console.log(window.g5_url);';
});
WARNING
테마에 따라 Hook 실행 코드가 없을 수 있으므로 이 Hook의 실행이 보장되지는 않는다.
tail_sub Event
보통 레이아웃에서 </body>
태그를 닫기 전에 실행된다. 테마에 따라 위치가 다르거나 실행되지 않을 수 있다.
add_event('tail_sub', function () {
echo "<script>console.log('tail_sub');</script>";
});
WARNING
테마에 따라 Hook 실행 코드가 없을 수 있으므로 이 Hook의 실행이 보장되지는 않는다.
html_process_css_files Replace
add_replace('html_process_css_files', function ($links) {
return $links;
}, G5_HOOK_DEFAULT_PRIORITY, 1);
html_process_script_files Replace
add_replace('html_process_script_files', function ($links) {
return $links;
}, G5_HOOK_DEFAULT_PRIORITY, 1);
html_process_add_meta Replace
html_process_buffer Replace Since v5.5.8.2.6
HTML 응답을 출력하기 전에 실행된다. 최종 출력되는 HTML 코드가 $buffer
변수에 담겨있으며, 이 값을 변경하여 출력 결과를 변경할 수 있다.
/**
* @param string $buffer
*/
add_replace('html_process_buffer', function ($buffer) {
$buffer = str_replace('그누보드', 'GNUBOARD', $buffer);
return $buffer;
});
활용 예
- HTML 코드에 특정 문자열을 추가하거나 치환하기
HTMLPurifier
html_purifier_safeiframes Replace
HTMLPurifier에서 <iframe>
태그를 허용할 때 특정 도메인에 대해서만 허용하는 필터가 적용되어 있으며, 이 필터 목록을 변경할 수 있다.
/**
* @param array $domains 허용된 도메인 목록
* @param string $html 필터링 요청된 HTML 코드. HTMLPurifier가 필터링하기 전 이므로 원본 HTML이다
*/
add_replace('html_purifier_safeiframes', function ($domains, $html) {
/*
예시: 허용 도메인 추가
호스트 네임만 추가하고 끝에 `/`를 붙이는 것을 권장
*/
$domains[] = 'www\.youtube\.com/';
return $domains;
}, G5_HOOK_DEFAULT_PRIORITY, 2);
TIP
이 도메인 목록은 정규표현식이 일부로써 사용되므로 .
문자 및 delimiter로 사용되는 %
를 이스케이프 처리를 해야 한다.
필요에 따라 정규표현식을 사용할 수 있다.
$domains[] = 'www\.youtube(?:-nocookie)?\.com/';
html_purifier_config Event Since v5.5.8.3.1
HTMLPuriier 설정을 정의할 수 있다.
/**
* @param HTMLPurifier_Config $config
* @param array{
* 'html': string,
* 'write': array,
* 'is_admin': string,
* } $data`
*/
add_event('html_purifier_config', function($config, $data) {
// 예시: figure, figcaption 태그를 허용
$def = $config->getHTMLDefinition(true);
$def->addElement('figure', 'Block', 'Flow', 'Common');
$def->addElement('figcaption', 'Inline', 'Flow', 'Common');
}, G5_HOOK_DEFAULT_PRIORITY, 2);
html_purifier_result Replace
HTMLPurifier에 의해 필터링된 HTML 결과물을 반환할 때 실행된다. 결과물에서 일부를 다시 가공하는데 활용할 수 있다.
/**
* @param string $html 필터링 된 HTML 코드
* @param HTMLPurifier $purifier
* @param string $rawHtml 필터링 되기 전의 원본 HTML 코드
*/
add_replace('html_purifier_result', function ($html, $purifier, $rawHtml) {
return $html;
}, G5_HOOK_DEFAULT_PRIORITY, 3);
Database
sql_query_after Event Updated v5.5.8.2.5 Updated v5.5.8.2.6
DB 쿼리의 결과를 가져온 후 실행된다.
/**
* @param bool|mysqli_result $result
* @param string $sql
* @param float $start_time
* @param float $end_time
* @param ?array{
* 'error_code': int,
* 'error_message': string,
* } $error <Badge type="warning" text="Updated v5.5.8.3.3" />
* @param ?array{
* 'file': string,
* 'line': int,
* 'function': string,
* 'class': string,
* 'type': string,
* } $source
*/
add_event('sql_query_after', function ($result, $sql, $start_time, $end_time, $error = null, $source = []) {
// ... DB 쿼리 결과를 가져온 후 실행될 코드
}, G5_HOOK_DEFAULT_PRIORITY, 6);
INFO
- 5.5.8.2.5 버전에서
$error
파라미터가 추가되었다 - 5.5.8.2.6 버전에서
$source
파라미터가 추가되었다
get_db_charset Replace
회원
로그인
bbs/login_check.php
파일에서 로그인 처리 과정 중 아래와 같은 순서로 Hook이 실행된다.
- member_login_check_before
- check_empty_member_login_password
- login_check_need_not_password
- password_is_wrong
- login_session_before
- login_check_post_check_keys
- member_login_check
member_login_check_before Event
로그인 처리를 시작하기 전에 실행된다.
/**
* @param string $mb_id 로그인 시도한 회원 아이디
*/
add_event('member_login_check_before', function ($mb_id) {
// ... 로그인 처리를 시작하기 전에 실행될 코드
}, G5_HOOK_DEFAULT_PRIORITY, 1);
check_empty_member_login_password Replace Since v5.5.8.2.5
login_check_need_not_password Event
login_session_before Event
로그인 계정의 인증을 확인을 완료한 후 세션을 생성하여 로그인 상태로 만들기 전에 실행된다.
/**
* @param string $mb_id 로그인 시도한 회원 아이디
* @param bool $is_social_login 소셜 로그인 여부
*/
add_event('login_session_before', function ($mb, $is_social_login) {
// ... 로그인 세션을 생성하기 전에 실행될 코드
// 예시: 관리자 계정은 허용된 IP에서만 로그인 허용
if ($mb['mb_id'] === 'admin' && $_SERVER['REMOTE_ADDR'] !== '127.0.0.1') {
alert('관리자는 허용된 IP에서만 로그인할 수 있습니다.');
}
}, G5_HOOK_DEFAULT_PRIORITY, 2);
활용 예
- 차단된 IP 체크하여 로그인 시도 차단
- 관리자 계정은 허용된 IP에서만 로그인 허용
- 이미 로그인된 세션이 있는지 확인하여 로그인 시도 차단
login_check_post_check_keys Replace
member_login_check Event
로그인 처리를 완료 후 실행된다.
/**
* @param string $mb_id 로그인 시도한 회원 아이디
* @param string $link 이동할 페이지 URL
* @param bool $is_social_login 소셜 로그인 여부
*/
add_event('member_login_check', function ($mb, $link, $is_social_login) {
// ... 로그인 처리를 완료 후 실행될 코드
}, G5_HOOK_DEFAULT_PRIORITY, 3);
password_is_wrong Event
회원 로그인 또는 글, 댓글에서 비밀번호가 틀렸을 때 실행된다.
/**
* @param string $type 실패한 대상의 타입. bbs, login 등
* @param array<any> $data 대상의 데이터
* @param ?string $qstr `bbs` 타입일 때 쿼리스트링
*/
add_event('password_is_wrong', function ($type, $data, $qstr = '') {
// 비밀번호가 틀렸을 때 실행될 코드
error_log($type . ' 비밀번호 틀림');
}, G5_HOOK_DEFAULT_PRIORITY, 3);
활용 예
- DB에 저장된 비밀번호를 다른 유형의 알고리즘으로 대조하기
extend/g5_54version_update.extend.php
파일 참고
- 로그인 시도된 회원에게 이메일 등으로 경고 메시지 보내기
- 계정 탈취 시도로 의심되면 IP 차단 및 관리자에게 알림 보내기
member_confirm_next_url Replace Since v5.5.8.2.5
member_login_tail Event
로그아웃, 차단, 탈퇴
member_logout Event
회원 로그아웃 처리를 완료한 후 페이지를 이동시키기 전에 실행된다.
/**
* @param string $link 이동할 페이지 URL
*/
add_event('member_logout', function ($link) {
// 로그아웃 처리를 완료한 후 실행될 코드
error_log('로그아웃');
// `$link` 변수을 값을 확인할 수 있지만 변경하려면 `$GLOBALS` 변수에서 변경해야 한다
$GLOBALS['link'] = 'https://...';
}, G5_HOOK_DEFAULT_PRIORITY, 1);
활용 예
- 로그아웃 처리 후 이동할 페이지를 변경하기
- 남은 쿠키 등에 대한 처리
member_leave Event
회원이 자신의 계정을 탈퇴할 때 실행된다.
/**
* @param string $mb_id 탈퇴한 회원 계정의 아이디
*/
add_event('member_leave', function ($mb_id) {
// ... 회원 탈퇴 후 실행될 코드
}, G5_HOOK_DEFAULT_PRIORITY, 1);
탈퇴 상태로 일정 기간 보관되므로 주의
그누보드는 회원 탈퇴 시 회원 데이터를 삭제하지 않고 mb_leave_date
필드에 탈퇴일을 기록하고 탈퇴된 계정으로 일정기간 보관한다. 그러므로, 이 Hook에서는 회원과 관련된 데이터를 완전히 제거하지 않도록 주의해야 한다. 회원 데이터가 완전히 삭제될 때는 아래 member_delete_after
Hook이 실행된다.
member_delete_after Event
회원 계정의 데이터가 삭제한 후 실행된다. 주로 관리자 권한으로 회원을 삭제할 때이다.
/**
* @param string $mb_id 삭제된 회원 계정의 아이디
*/
add_event('member_delete_after', function ($mb_id) {
// 회원 데이터 삭제 후 실행될 코드
error_log('회원 삭제: ' . $mb_id);
}, G5_HOOK_DEFAULT_PRIORITY, 1);
INFO
회원의 계정관련 데이터가 모두 삭제된 후 실행되기 떄문에, $mb_id
변수로 받는 회원의 ID 외에는 정보를 확인할 수 없다.
회원 삭제 과정에서 $GLOBALS['mb']
전역변수에 담긴 회원정보를 확인할 수도 있지만, 불완전하므로 이 변수를 신뢰하여 사용하는 것은 권장하지 않는다.
활용 예
- 회원이 작성했던 글, 댓글을 모두 삭제하기
회원정보
get_member Replace
get_member()
함수로 회원정보를 가져올 때 실행된다.
/**
* @param array $data DB 쿼리 결과로 가져온 회원 정보
* @param string $mb_id 회원 아이디
* @param string $fields 요청한 필드 목록
* @param bool $is_cache 캐시 사용 여부
*/
add_replace('get_member', function ($data, $mb_id, $fields, $is_cache) {
error_log('회원 정보: ' . print_r($mb_id, true));
return $data;
}, G5_HOOK_DEFAULT_PRIORITY, 4);
member_sideview_items Replace Since v5.5.8.2.6
회원 닉네임을 클릭했을 때 표시되는 "사이드뷰"의 메뉴 목록을 재정의하는데 활용할 수 있다.
/**
* @param array{
* 'name_tag_open': string,
* 'name_tag_close': string,
* 'name_tag': array{
* 'profile_image': string,
* 'name': string
* },
* 'menus': array<string>
* } $sideview
* @param array{
* 'mb_id': string,
* 'name': string,
* 'bo_table': string
* } $data
*/
add_replace('member_sideview_items', function ($sideview, $data = []) {
return $sideview;
}, G5_HOOK_DEFAULT_PRIORITY, 2);
$sideview['menus']
배열에는 사이드뷰 메뉴의 항목이 담겨있다. 각 항목은 특정 배열 key에 따라 구분되어 있다.
$siteview['menus']['memo']; // 쪽지 보내기
$siteview['menus']['email']; // 이메일 보내기
$siteview['menus']['homepage']; // 홈페이지 열기
$siteview['menus']['profile']; // 프로필 보기
$siteview['menus']['search_id']; // 게시판에서 아이디로 검색
$siteview['menus']['search_name']; // 게시판에서 아이디로 검색
$siteview['menus']['search_all']; // 전체게시물에서 아이디로 검색
$siteview['menus']['admin_member_modify']; // 회원정보 변경
$siteview['menus']['admin_member_point']; // 포인트 내역
WARNING
의도한 순서가 뒤바뀌지 않도록 $siteview['menus']
항목의 순서는 재정렬하지 않도록 하자.
admin_member_form_update Event
관리페이지에서 회원을 추가하거나 정보를 수정한 후 실행된다.
/**
* @param array $w 모드. 빈 값이면 새로운 회원 추가, 'u'이면 기존 회원의 정보 수정
* @param array $mb_id 회원 아이디
*/
add_event('admin_member_form_update', function ($w, $mb_id) {
if ($w === '') {
// ... 새로운 회원 추가 할 때
} else if ($w === 'u') {
// ... 기존 회원 정보 수정 일 때
}
}, G5_HOOK_DEFAULT_PRIORITY, 2);
get_mb_icon_name Replace
관리페이지
회원관리
admin_member_form_add Event
관리페이지 회원 추가 및 정보 수정 페이지에 폼 구성요소를 추가할 수 있다.
/**
* @param array $mb 회원 정보
* @param string $w 모드. 빈 값이면 새로운 회원 추가, 'u'이면 기존 회원의 정보 수정
* @param string $mode 폼 구성요소의 출력 방식. 기본 값은 'table'
*/
add_event('admin_member_form_add', function ($mb = [], $w = '', $mode = 'table') {
// 예시: 회원 추가/수정 폼에 추가할 구성요소
include_once('/path/to/my_custom_form.php');
}, G5_HOOK_DEFAULT_PRIORITY, 3);
TIP
이 Hook은 <tbody>
태그 안에서 실행되므로 <tr>
태그로 감싼 테이블 구성 요소를 출력해야 한다.
<tr>
<th><label>커스텀 필드1</label></th>
<td><input type="text" name="mb_custom_field1" /></td>
<th><label>커스텀 필드2</label></th>
<td><input type="text" name="mb_custom_field2" /></td>
</tr>
활용 예
- 회원정보에 커스텀 필드를 추가
admin_member_form_after Event
admin_member_form_add
Hook이 폼에 커스텀 필드를 추가할 때 사용된다면, 이 Hook은 form 밖에서 실행되며, 필요한 스크립트나 CSS 코드를 출력할 때 활용할 수 있다.
/**
* @param array $mb 회원 정보
* @param string $w 모드. 빈 값이면 새로운 회원 추가, 'u'이면 기존 회원의 정보 수정
*/
add_event('admin_member_form_after', function ($mb, $w) {
// 예시: 회원정보에 커스텀 필드를 추가할 때 필요한 스크립트
echo '<script src="/path/to/my_custom_script.js"></script>';
}, G5_HOOK_DEFAULT_PRIORITY, 2);
admin_member_list_update Event
adm_auth_delete_member Event
adm_auth_update Event
admin_config_form_update Event
admin_content_created Event Since v5.5.8.3.2
admin_content_updated Event Since v5.5.8.3.2
admin_content_deleted Event Since v5.5.8.3.2
admin_mail_deleted Event Since v5.5.8.3.2
admin_mail_created Event Since v5.5.8.3.2
admin_mail_updated Event Since v5.5.8.3.2
admin_newwin_created Event Since v5.5.8.3.2
admin_newwin_updated Event Since v5.5.8.3.2
admin_newwin_deleted Event Since v5.5.8.3.2
admin_menu_list_update Event
adm_theme_update Event
admin_get_page_* Event
admin_request_handler_* Event
adm_index_addtional_content_before Replace Since v5.5.9
adm_index_addtional_content_after Replace Since v5.5.9
회원 가입
register_member_chk_captcha Replace
register_member_password_check Replace
register_form_update_mail_mb_content Replace
register_form_update_mail_admin_subject Replace
register_form_update_mail_admin_content Replace
register_form_update_mail_certify_content Replace
register_form_update_before Event
register_form_update_valid Event
register_form_update_send_mb_mail Event
register_form_update_send_admin_mail Event
register_form_update_send_certify_mail Event
register_form_update_after Event
register_form_before Event
register_form_after Event
쪽지
memo_list Event
memo_delete Event
memo_form_update_before Event
memo_form_update_after Event
memo_form_update_failed Event
게시판
추천/비추천
추천/비추천 과정에서 전, 후 그리고, 요청 방법에 따라 bbs_increase_good_json
, bbs_increase_good_html
Hook이 구분되어 실행된다.
TIP
$_POST['js']
값에 따라 구분된다. 이 값이 on
이면 bbs_increase_good_json
, 그렇지 않으면 bbs_increase_good_html
Hook이 실행된다.
Accept
헤더로 구분하는 것이 아니므로 주의
AJAX 요청일 떄에는 POST
로 js
파라미터의 값을 on
으로 전달하면 된다.
bbs_good_before Event
추천/비추천이 처리되기 전에 실행된다.
add_event('bbs_good_before', function ($bo_table, $wr_id, $type) {
// 추천/비추천 처리 전 실행될 코드
error_log('추천/비추천 처리 전: ' . $write['wr_id']);
}, G5_HOOK_DEFAULT_PRIORITY, 3);
bbs_increase_good_json Event
add_event('bbs_increase_good_json', function ($bo_table, $wr_id, $type) {
}, G5_HOOK_DEFAULT_PRIORITY, 3);
bbs_increase_good_html Event
add_event('bbs_increase_good_html', function ($bo_table, $wr_id, $type, $href) {
}, G5_HOOK_DEFAULT_PRIORITY, 3);
bbs_good_after Event
add_event('bbs_good_after', function ($bo_table, $wr_id, $type) {
// 추천/비추천 처리 후 실행될 코드
error_log('추천/비추천 처리 후: ' . $write['wr_id']);
}, G5_HOOK_DEFAULT_PRIORITY, 3);
댓글
bbs_delete_comment Event
comment_update_after Event
get_board_names_cache Replace
get_board_db Replace
게시판 설정 등 게시판의 정보를 가져올 때 실행된다.
이 Hook은 제대로 동작하지 않음
이 Hook은 코드 구현의 문제로 인해 $board
파라미터가 항상 빈 배열을 전달받는다.
get_board_db_cache Replace
get_bo_table_banned_word Replace
게시판을 생성할 떄 사용을 제한할 문자열을 추가할 수 있다.
/**
* @param array<string> $folders 제한할 문자열 목록
*/
add_replace('get_bo_table_banned_word', function ($folders) {
// 예시: 게시판 ID에 제한할 문자열 추가
$folders[] = 'rss';
$folders[] = 'vendor';
return $folders;
}, G5_HOOK_DEFAULT_PRIORITY, 1);
이미 제한하고 있는 게시판 아이디
그누보드가 설치된 루트에 있는 폴더명은 게시판 ID로 사용할 수 없다.
adm | bbs | css | data | extend |
img | install | js | lib | mobile |
plugin | shop | skin | theme |
get_board_sort_fields Replace
get_board_sfl_select_options Replace
board_content_head Replace Since v5.5.8.2.6
board_mobile_content_head Replace Since v5.5.8.2.6
board_content_tail Replace Since v5.5.8.2.6
board_mobile_content_tail Replace Since v5.5.8.2.6
bbs_delete Event
게시판에서 글을 삭제하고 포함된 댓글과 첨부파일 등의 모든 데이터를 삭제한 후에 실행된다.
/**
* @param array $write 글 데이터
* @param array $board 게시판 정보
*/
add_event('bbs_delete', function ($write, $board) {
// 글 삭제를 처리한 후 실행될 코드
error_log('글 삭제: ' . $write['wr_id']);
}, G5_HOOK_DEFAULT_PRIORITY, 2);
bbs_delete_all Event
add_event('bbs_delete_all', function ($tmp_array, $board) {
}, G5_HOOK_DEFAULT_PRIORITY, 2);
download_file_header Event
admin_board_copy_file Event
admin_board_form_update Event
adm_board_form_before Event
admin_board_list_update Event
admin_boardgroup_form_update Event
admin_boardgroup_list_update Event
write_update_before Event
write_update_file_insert Event
write_update_after Event
bbs_write Event
bbs_move_copy Event
bbs_move_update Event
move_html_footer Event
bbs_new_delete Event
1:1문의
admin_qa_config_updated Event Since v5.5.8.3.2
qa_delete Event Since v5.5.8.3.3
qa_download_file_header Event
qa_download_file_exist_check Replace
qa_content_head Replace Since v5.5.8.2.6
qa_mobile_content_head Replace Since v5.5.8.2.6
qa_content_tail Replace Since v5.5.8.2.6
qa_mobile_content_tail Replace Since v5.5.8.2.6
get_qa_config Replace
get_qa_sfl_select_options Replace
qawrite_update Event Updated v5.5.8.3.3
INFO
- 5.5.8.3.3 버전에서
$answer_id
파라미터가 추가되었다
인증/권한
is_admin Replace
사용하지 않는 것을 권장
이 Hook은 is_admin()
함수가 반환하는 값을 변경할 수 있지만 그누보드의 권한 처리에 심각한 영향을 줄 수 있으므로 사용하지 않는 것을 권장한다.
아래와 같이 관리 권한을 확인할 때 영향을 줄 수 있으며, 매우 심각한 권한 문제를 발생시킬 수 있다.
if (!is_admin($member['mb_id'])) {
// ... 관리자가 아닌 경우에만 실행될 코드
}
if (is_admin($member['mb_id'])) {
// ... 관리 권한이 있을때만 실행될 코드
}
또한, 다음과 같이 특정 권한을 확인할 떄에도 영향을 줄 수 있다.
if (is_admin($member['mb_id']) === 'group') {
// ... 'group' 관리자일 때만 실행될 코드
}
그래도 변경이 필요하다면...
$is_authority
값이이 비어있는지 확인하여 변경하는 것이 좋다. 반드시 관리자 수준의 권한 부여에만 사용되어야하며 기타 목적으로 응용하면 안 된다.
/**
* @param string $is_authority
* @param string $mb_id
*/
add_replace('is_admin', function ($is_authority, $mb_id) {
// 예시: 관리자 권한을 변경
if ($is_authority !== 'super') {
$condition = false;
if ($condition === true) {
$is_authority = 'manager';
}
}
return $is_authority;
}, G5_HOOK_DEFAULT_PRIORITY, 2);
cert_refresh_update_after Event Since v5.5.8.2
FAQ
admin_faq_item_created Event Since v5.5.8.3.2
admin_faq_item_updated Event Since v5.5.8.3.2
admin_faq_item_deleted Event Since v5.5.8.3.2
admin_faq_master_created Event Since v5.5.8.3.2
admin_faq_master_updated Event Since v5.5.8.3.2
admin_faq_master_deleted Event Since v5.5.8.3.2
URL / 짧은주소
add_nginx_conf_pre_rules Replace Since v5.5.8.2.8
add_nginx_conf_rules Replace
add_mod_rewrite_pre_rules Replace Since v5.5.8.2.8
add_mod_rewrite_rules Replace
get_pretty_url Replace
url_clean_page_names Replace
false_short_url_clean Replace
exist_check_seo_title Replace
url_clean_page_paths Replace
cache
adm_cache_file_delete_before Event
adm_cache_file_delete Event
g5_set_cache_event Event
adm_cache_delete Event
delete_cache_latest Event Since v5.5.9
썸네일
delete_editor_thumbnail_before Event
delete_editor_thumbnail_after Event
is_secret_list_thumbnail Replace
get_list_thumbnail_info Replace
get_file_thumbnail_tags Replace
thumbnail_is_animated_gif_content Replace
get_view_thumbnail Replace
thumb_image_tag Replace
thumb_view_image_href Replace
Event
password_lost_certify_before Event
password_lost_certify_after Event
password_lost2_after Event
mail_send_result Event
is_animated_gif_after Event
Replace
get_editor_upload_url Replace Updated v5.5.8.3.2
head_css_url Replace
admin_amenu Replace
admin_menu Replace
safe_admin_add_script_boolean Replace
admin_copy_update_file Replace
admin_dbupgrade Replace
theme_config_load_keys Replace
content_admin_button_html Replace Since v5.5.8.2.6
content_head_image_html Replace Since v5.5.8.2.6
content_tail_image_html Replace Since v5.5.8.2.6
delete_file_path Replace
download_file_exist_check Replace
bbs_move_update_file Replace
exists_view_image Replace
get_view_imagesize Replace
get_editor_content_url Replace
get_file_board_url Replace
write_update_upload_file Replace
write_update_upload_array Replace
write_update_mail_list Replace
write_update_move_url Replace
invalid_password Replace
get_cachemanage_instance Replace
g5_get_cache_replace Replace
g5_delete_cache_by_prefix Replace
set_cookie_params Replace
url_auto_link Replace
get_files Replace
get_group_db_cache Replace
get_group Replace
ss_mb_key_user_agent Replace Since v5.5.10
check_url_host_before Replace Since v5.5.8.1
check_same_url_host Replace Since v5.5.8.1
get_menu_db_cache Replace
get_menu_db Replace
사이트 메뉴 목록을 가져올 때 실행된다.
이 Hook은 제대로 동작하지 않음
이 Hook은 코드 구현의 문제로 인해 항상 빈 배열을 전달받아 사실상 사용할 수 없다.
get_class_encrypt Replace
mailer Replace
mail_options Replace
get_editor_filename Replace
스킨
outlogin_content Replace
Deprecated
googl_short_url Replace DEPRECATED
Google URL Shortener API가 종료되어서 더 이상 사용되지 않는다.
shop
get_item_image_url
shop_item_qa_created
shop_item_qa_updated
shop_item_qa_deleted
shop_item_use_created
shop_item_use_updated
shop_item_use_deleted
shop_item_image_exists
shop_item_image_tag
shop_admin_category_created
shop_admin_category_updated
shop_admin_category_deleted
shop_admin_configformupdate <Badge type="warning" text="Since v5.5.3" />
shop_admin_itemcopy <Badge type="warning" text="Since v5.5.8.3.3" />
shop_admin_delete_item_file
shop_admin_event_created
shop_admin_event_updated
shop_admin_event_deleted
shop_admin_itemformupdate
shop_admin_item_qa_updated
shop_admin_item_qa_deleted
shop_admin_item_use_updated
shop_admin_item_use_deleted
shop_orderform_easypay_buttons
shop_it_head_html
shop_it_tail_html
shop_it_mobile_head_html
shop_it_mobile_tail_html
get_shop_category_array
get_it_image_tag
get_it_thumbnail_tag
is_exists_item_file
get_image_by_item