팁과노하우
최고 관리자 권한 추가 하기
adm.zip => adm 폴더에 올려주세요
lib.zip => lib 폴더에 올려주세요그누보드 최신 ( 5.6.23)
리빌드 최신 (2.2.4.2)

ALTER TABLE g5_config ADD cf_admin_add TEXT NOT NULL; 디비 추가
common.lib.php 수정 (최고관리자 권한 판정 확장)
// 관리자인가?
function is_admin($mb_id)
{
global $config, $group, $board;
if (!$mb_id) return '';
$is_authority = '';
if ($config['cf_admin'] == $mb_id){
$is_authority = 'super';
} else if (isset($group['gr_admin']) && ($group['gr_admin'] == $mb_id)){
$is_authority = 'group';
} else if (isset($board['bo_admin']) && ($board['bo_admin'] == $mb_id)){
$is_authority = 'board';
}
return run_replace('is_admin', $is_authority, $mb_id);
}
찾아서 삭제
// 관리자인가?
function is_admin($mb_id)
{
global $config, $group, $board;
if (!$mb_id) return '';
$is_authority = '';
// 추가 최고관리자 목록(콤마 구분)
$add_admins = array();
if (!empty($config['cf_admin_add'])) {
foreach (explode(',', $config['cf_admin_add']) as $v) {
$v = trim($v);
if ($v !== '') $add_admins[$v] = true;
}
}
// 메인 최고관리자 / 추가 최고관리자
if ($config['cf_admin'] == $mb_id || isset($add_admins[$mb_id])) {
$is_authority = 'super';
} else if (isset($group['gr_admin']) && ($group['gr_admin'] == $mb_id)) {
$is_authority = 'group';
} else if (isset($board['bo_admin']) && ($board['bo_admin'] == $mb_id)) {
$is_authority = 'board';
}
return run_replace('is_admin', $is_authority, $mb_id);
}
이걸로 교체config_form.php 수정 (체크박스 UI 추가)
<th scope="row"><label for="cf_admin">최고관리자<strong class="sound_only">필수</strong></label></th>
<td colspan="3"><?php echo get_member_id_select('cf_admin', 10, $config['cf_admin'], 'required') ?></td>
</tr>
밑에 추가
<!--관리자 권한 추가 하기 시작-->
<?php
// 레벨 10 회원 목록
$admin_add_list = array();
if (!empty($config['cf_admin_add'])) {
$admin_add_list = array_filter(array_map('trim', explode(',', $config['cf_admin_add'])));
}
$admin_add_map = array_fill_keys($admin_add_list, true);
// 레벨10 + 탈퇴/차단 제외 (원하면 조건 조정)
$sql = " select mb_id
from {$g5['member_table']}
where mb_level = '10'
and mb_leave_date = ''
and mb_intercept_date = ''
order by mb_id ";
$result = sql_query($sql);
?>
<tr>
<th scope="row"><label>최고관리자 추가</label></th>
<td colspan="3">
<?php echo help('회원레벨이 10인 회원만 체크박스에 표시됩니다. (체크된 회원은 최고관리자 권한을 가집니다)'); ?>
<?php
for ($i=0; $row=sql_fetch_array($result); $i++) {
$mb_id = $row['mb_id'];
// 메인 최고관리자는 항상 체크/고정
$is_main = ($mb_id === $config['cf_admin']);
$checked = $is_main || isset($admin_add_map[$mb_id]);
echo '<label style="margin-right:12px; display:inline-block;">';
echo '<input type="checkbox" name="cf_admin_add[]" value="'.get_sanitize_input($mb_id).'" '.($checked?'checked':'').' '.($is_main?'disabled':'').'> ';
echo get_sanitize_input($mb_id);
echo '</label>';
// disabled는 submit이 안되므로 hidden으로 보정
if ($is_main) {
echo '<input type="hidden" name="cf_admin_add[]" value="'.get_sanitize_input($mb_id).'">';
}
}
if ($i === 0) {
echo '<div>레벨 10 회원이 없습니다.</div>';
}
?>
</td>
</tr>
<!--관리자 권한 추가 하기 끝-->
config_form_update.php 수정 (저장 로직 추가)
//추가 및 교체 cf_admin_add = '{$cf_admin_add_str}',
cf_admin = '{$cf_admin}', 찾기
밑에 처럼 교체 해주세요.
set
cf_admin = '{$cf_admin}',
cf_admin_add = '{$cf_admin_add_str}',
cf_title = '{$cf_title}',
check_admin_token();
찾기 밑에 추가
// ================================
// 최고관리자 추가 처리 (cf_admin_add)
// ================================
$cf_admin_add = array();
if (isset($_POST['cf_admin_add']) && is_array($_POST['cf_admin_add'])) {
foreach ($_POST['cf_admin_add'] as $v) {
$v = clean_xss_tags($v, 1, 1);
$v = trim($v);
if ($v !== '') $cf_admin_add[$v] = true;
}
}
// 메인 최고관리자는 항상 포함
$cf_admin_add[$cf_admin] = true;
// 레벨 10만 허용 (보안)
$valid = array();
foreach (array_keys($cf_admin_add) as $id) {
$m = get_member($id);
if (isset($m['mb_id']) && $m['mb_id'] && (int)$m['mb_level'] === 10) {
$valid[] = $m['mb_id'];
}
}
$cf_admin_add_str = implode(',', $valid);- 다음글데브이님의 "유튜브 위젯 1.1" > 유튜브 쇼츠용으로 사용하기2025.12.16
댓글목록

