From 1da82df500207a95ea993fcf0a98cb21d3d7394a Mon Sep 17 00:00:00 2001 From: whitedot Date: Mon, 7 Sep 2026 03:32:16 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20DB=EC=97=85=EA=B7=B8=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EB=93=9C=EC=97=90=EC=84=9C=20=EC=87=BC=ED=95=91=EB=AA=B0=20?= =?UTF-8?q?=ED=9B=84=EC=84=A4=EC=B9=98=20=EC=A7=80=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 쇼핑몰 미설치 사이트에서 최신 쇼핑몰 스키마를 명시적으로 추가한다. 기존 DB 설정을 보존하고 중복 설치를 차단하며, 기본 SMS 문구 길이를 보정한다. 격리된 접두어로 후설치·설정 보존·중복 실행 차단을 검증한다. --- adm/dbupgrade.php | 49 +++++++-- bin/check-runtime-ddl.php | 6 +- bin/check-shop-install.php | 151 ++++++++++++++++++++++++++ docs/database-migrations.md | 3 + lib/shop_install.lib.php | 207 ++++++++++++++++++++++++++++++++++++ 5 files changed, 404 insertions(+), 12 deletions(-) create mode 100755 bin/check-shop-install.php create mode 100644 lib/shop_install.lib.php diff --git a/adm/dbupgrade.php b/adm/dbupgrade.php index e2633ad29..8c06a3644 100644 --- a/adm/dbupgrade.php +++ b/adm/dbupgrade.php @@ -2,6 +2,7 @@ $sub_menu = '100410'; include_once('./_common.php'); include_once(G5_LIB_PATH . '/migration.lib.php'); +include_once(G5_LIB_PATH . '/shop_install.lib.php'); auth_check_menu($auth, $sub_menu, 'r'); @@ -11,13 +12,19 @@ if ($is_admin != 'super') { $is_execute = isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST'; $migration_result = array('success' => true, 'applied' => 0, 'skipped' => 0, 'errors' => array()); +$shop_install_result = null; if ($is_execute) { check_demo(); check_admin_token(); - $migration_id = isset($_POST['migration_id']) ? trim($_POST['migration_id']) : ''; - $migration_result = g5_migration_run($migration_id); - $migration_result = run_replace('admin_dbupgrade_result', $migration_result); + $action = isset($_POST['action']) ? trim($_POST['action']) : 'migrate'; + if ($action === 'install_shop') { + $shop_install_result = g5_shop_install_run(); + } else { + $migration_id = isset($_POST['migration_id']) ? trim($_POST['migration_id']) : ''; + $migration_result = g5_migration_run($migration_id); + $migration_result = run_replace('admin_dbupgrade_result', $migration_result); + } } $migration_statuses = g5_migration_status(); @@ -28,7 +35,11 @@ foreach ($migration_statuses as $migration_status) { } } -if (!$is_execute) { +if ($shop_install_result !== null && $shop_install_result['success']) { + alert('쇼핑몰 설치가 완료되었습니다.', G5_ADMIN_URL . '/dbupgrade.php'); +} elseif ($shop_install_result !== null) { + $db_upgrade_msg = '쇼핑몰 설치에 실패했습니다. 오류 내용을 확인해 주십시오.'; +} elseif (!$is_execute) { $db_upgrade_msg = $pending_count ? '적용하지 않은 DB 마이그레이션이 있습니다. 아래 내용을 확인한 뒤 실행해 주십시오.' : 'DB 마이그레이션이 모두 적용되어 있습니다.'; } elseif (!$migration_result['success']) { $db_upgrade_msg = 'DB 마이그레이션에 실패했습니다. 오류 내용을 확인해 주십시오.'; @@ -40,13 +51,18 @@ if (!$is_execute) { $g5['title'] = 'DB 업그레이드'; include_once('./admin.head.php'); +$dbupgrade_token = get_admin_token(); ?>

- + +
+

+
+

@@ -54,11 +70,23 @@ include_once('./admin.head.php');
-
- -
+
+ + + + + + + +
+ + -
+ +
+
+ +
@@ -101,7 +129,8 @@ include_once('./admin.head.php');
버전형 DB 마이그레이션 목록