과거 누적 DDL과 데이터 보정을 시점별 SQL로 분리하고 관리자·CLI 실행기를 제공한다. 실행 순서, 잠금, 체크섬, 성공·실패 이력 및 개별 실행의 선행 조건을 검증한다. 기존 스키마의 부분 적용 복구와 설치 SQL 정합성 검사를 추가하고 실행·복구 절차를 문서화한다.
67 lines
1.8 KiB
PHP
67 lines
1.8 KiB
PHP
<?php
|
|
$sub_menu = "300200";
|
|
require_once './_common.php';
|
|
|
|
|
|
if ($w == '') {
|
|
auth_check_menu($auth, $sub_menu, 'w');
|
|
|
|
$mb = get_member($mb_id);
|
|
if (empty($mb['mb_id'])) {
|
|
alert('존재하지 않는 회원입니다.');
|
|
}
|
|
|
|
$gr = get_group($gr_id);
|
|
if (empty($gr['gr_id'])) {
|
|
alert('존재하지 않는 그룹입니다.');
|
|
}
|
|
|
|
$sql = " select count(*) as cnt
|
|
from {$g5['group_member_table']}
|
|
where gr_id = '{$gr_id}'
|
|
and mb_id = '{$mb_id}' ";
|
|
$row = sql_fetch($sql);
|
|
if ($row['cnt']) {
|
|
alert('이미 등록되어 있는 자료입니다.');
|
|
} else {
|
|
check_admin_token();
|
|
|
|
$sql = " insert into {$g5['group_member_table']}
|
|
set gr_id = '{$_POST['gr_id']}',
|
|
mb_id = '{$_POST['mb_id']}',
|
|
gm_datetime = '" . G5_TIME_YMDHIS . "' ";
|
|
sql_query($sql);
|
|
}
|
|
} elseif ($w == 'd' || $w == 'ld') {
|
|
auth_check_menu($auth, $sub_menu, 'd');
|
|
|
|
$count = count($_POST['chk']);
|
|
if (!$count) {
|
|
alert('삭제할 목록을 하나이상 선택해 주세요.');
|
|
}
|
|
|
|
check_admin_token();
|
|
|
|
for ($i = 0; $i < $count; $i++) {
|
|
$gm_id = (int) $_POST['chk'][$i];
|
|
$sql = " select * from {$g5['group_member_table']} where gm_id = '$gm_id' ";
|
|
$gm = sql_fetch($sql);
|
|
if (!$gm['gm_id']) {
|
|
if ($count == 1) {
|
|
alert('존재하지 않는 자료입니다.');
|
|
} else {
|
|
continue;
|
|
}
|
|
}
|
|
|
|
$sql = " delete from {$g5['group_member_table']} where gm_id = '$gm_id' ";
|
|
sql_query($sql);
|
|
}
|
|
}
|
|
|
|
if ($w == 'ld') {
|
|
goto_url('./boardgroupmember_list.php?gr_id=' . $gr_id);
|
|
} else {
|
|
goto_url('./boardgroupmember_form.php?mb_id=' . $mb_id);
|
|
}
|