Files
edu/bbs/mypage_init_data_02_260319_1650.php
T

99 lines
2.8 KiB
PHP

<?php
//=========================
// 컨텐츠 제안하기 기본값 + 제안현황
//=========================
require_once __DIR__ . '/db_conn.php';
// TODO: 실제 로그인 세션 연동 후 교체
$memberId = 'U001';
$sysCompCode = 'COMP01';
$offerDefaultTypeCode = 'OF10001'; // 제안
$offerDefaultStatusCode = 'OF10002'; // 검토중
$offerStatusMap = [
'OF10001' => '제안',
'OF10002' => '검토중',
'OF10003' => '게시완료',
'OF10004' => '게시불가',
];
$offerHistory = [];
try {
$pdo = db_conn();
$pdo->exec("SET NAMES 'utf8mb4'");
// 상태 코드맵 동적 조회 (기본값 fallback 유지)
$stmtCode = $pdo->prepare("
SELECT base_code, code_name
FROM edu_codes
WHERE group_code = 'OF100'
AND is_active = '1'
ORDER BY code
");
$stmtCode->execute();
foreach ($stmtCode->fetchAll(PDO::FETCH_ASSOC) as $codeRow) {
$offerStatusMap[$codeRow['base_code']] = $codeRow['code_name'];
}
// 제안 이력 조회
// 정렬 우선순위:
// 1) 검토중(OF10002) 최상단
// 2) 그 외 상태는 코드 우선순위대로
// 3) 같은 상태 안에서는 최신순
$stmt = $pdo->prepare("
SELECT
co.offer_id,
co.type_code,
co.title,
co.reference_url,
co.reason,
co.status_code,
co.created_at,
co.updated_at
FROM edu_content_offer co
WHERE co.member_id = :member_id
AND co.sys_comp_code = :sys_comp_code
ORDER BY
CASE co.status_code
WHEN 'OF10002' THEN 0 -- 검토중
WHEN 'OF10001' THEN 1 -- 제안
WHEN 'OF10003' THEN 2 -- 게시완료
WHEN 'OF10004' THEN 3 -- 게시불가
ELSE 9
END,
co.created_at DESC,
co.offer_id DESC
LIMIT 20
");
$stmt->execute([
':member_id' => $memberId,
':sys_comp_code' => $sysCompCode,
]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$statusCode = trim((string)($row['status_code'] ?? ''));
$offerHistory[] = [
'offer_id' => $row['offer_id'] ?? '',
'type_code' => $row['type_code'] ?? '',
'title' => $row['title'] ?? '',
'reference_url' => $row['reference_url'] ?? '',
'reason' => $row['reason'] ?? '',
'status_code' => $statusCode,
'status_name' => $offerStatusMap[$statusCode] ?? $statusCode,
'created_at' => $row['created_at'] ?? '',
'updated_at' => $row['updated_at'] ?? '',
'created_at_dot' => !empty($row['created_at']) ? date('y.m.d', strtotime($row['created_at'])) : '',
'is_consider' => ($statusCode === 'OF10002'),
];
}
} catch (Throwable $e) {
// 운영 시 로깅 권장
// error_log($e->getMessage());
}