그누보드 5.4 에서 HOOK 기능의 이해 > 그누보드

본문 바로가기
사이트 내 전체검색

그누보드

그누보드 5.4 에서 HOOK 기능의 이해

페이지 정보

profile_image
작성자 관리자 (61.♡.222.236)
댓글 0건 조회 5,316회 작성일 19-05-04 21:53

본문

그누보드 5.4 에는 HOOK 기능이 추가되었다.
이 후크 시스템의 코드를 분석해 보았다.


ㅁ 기본 메뉴얼

그누보드 공식 후크에 대한 기본 메뉴얼이다.
https://sir.kr/manual/g5/288


ㅁ 관련파일

후크와 관련된 파일들은 아래와 같다.
/lib/hook.lib.php
/lib/Hook/*

후크 관련 각종 함수들은 /lib/hook.lib.php 에 있고,
/lib/Hook/* 에는 후크 클래스가 정의되어 있다.


ㅁ 관련 함수들

get_hook_class
add_event
run_event
add_replace
run_replace
delete_event
delete_replace
get_hook_datas



ㅁ add_event, run_event 후크 동작 방식

간단한 예제는 debugbar 를 구현한 extend 소스에서 찾을 수 있다.
/extend/debugbar.extend.php

1. add_event(태그,함수) 로 태그와 함수를 추가한다.
여기서 태그는 함수들이 실행될 위치를 지정할 목적으로 사용된다. ex) tail_sub

2. run_event(태그) 로 특정 소스 위치에서 해당 태그에 쌓여 있는 함수들이 실행된다.
ex) tail.sub.php 파일안에 있는 run_event('tail_sub'); 코드

그누보드 매뉴얼에 있는 소스로 설명을 해 보자면,
bbs/write_update.php 파일의 아랫 부분에 다음과 같은 코드가 있다.
```
run_event('write_update_after', $board, $wr_id, $w, $qstr, $redirect_url);
```

이것을 참고해서, 우리는 아래와 같은 함수를 만들어서 add_event 로 추가를 할 수 있다.
```
add_event('write_update_after', 'masterpack_hook_write_update_after', 10,  5);
function masterpack_hook_write_update_after($board, $wr_id, $w, $qstr, $redirect_url){
echo print_r($board,true) . ',' . $wr_id . ',' . $w . ',' . $qstr . ',' . $redirect_url;
}
```

추가로 만든 함수의 인자는 run_event 에서 write_update_after 뒤에 있는 $board, $wr_id, $w, $qstr, $redirect_url 이렇게 5개다.

add_event 의 인자 중, 뒤에 2개는 후크의 우선순위와 인자의 갯수 이다.
```
function add_event($tag, $func, $priority=G5_HOOK_DEFAULT_PRIORITY, $args=0)
```



ㅁ add_replace, run_replace

그누보드 소스상의 간단한 예제는 아래 파일에 있다.
/extend/g5_54version_update.extend.php
```
add_replace('invalid_password', 'g54_return_invalid_password', 10, 3);
```
위의 add_replace 에 대한 run_replace 는 bbs/write.php 에 있다.
```
$is_wrong = run_replace('invalid_password', false, 'write', $write);
```

설명을 해 보자면,
invalid_password 라는 태그에 후크를 추가하는데,
g54_return_invalid_password 함수를 추가하고,
같은 태그에 여러 후크가 있을 경우 후크의 우선순위는 10 (그누보드 기본은 8),
g54_return_invalid_password  함수의 arg 는 3개다.
3개의 인자는 run_replace 에서 태그명 뒤에 나열된 인자 3개다. (false, 'write', $write)



ㅁ 참고
https://sir.kr/manual/g5/288
https://blog.silnex.kr/%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C-hook-%EC%82%AC%EC%9A%A9%EB%B2%95/


ㅁ legacy
https://sir.kr/manual/gm/280
그누보드M 에서의 후크 기능을 설명한 메뉴얼인데,
그누보드 5.4 에서 함수 이름이 달라진 듯 하다.
ex) start_event -> run_event

추천0

댓글목록

등록된 댓글이 없습니다.

Total 85건 1 페이지
그누보드 목록
번호 제목 조회 추천 날짜
공지4900009-26
공지기타1579004-14
공지기타3931001-25
공지기타4892001-25
공지기타5811010-20
801124008-07
79기타697005-31
781453002-22
771573005-21
764292004-03
753905003-07
74기타1551012-04
열람중5317005-04
721855005-04
71기타1476005-04
703602012-11
692624011-29
683665004-16
673321004-02
663717001-25

검색


사이트 정보

Copyright © Baragi.Net. All rights reserved.