Files
dnssash/adm/consultant_manage/functions.php
T
2026-06-11 18:47:38 +09:00

128 lines
4.6 KiB
PHP

<?php
if (!defined('_GNUBOARD_')) exit;
// 상담 관리 시스템 버전
define('G5_CONSULTANT_VERSION', '1.0.0');
// 상담 관리 시스템 설치 확인
function is_consultant_installed()
{
global $g5;
$consultant_tables = ['consultant_schedule', 'consultant_reservations', 'consultant_config', 'consultant_log'];
foreach ($consultant_tables as $table) {
if(!isset($g5[$table.'_table'])) $g5[$table.'_table'] = $table;
$sql = "SHOW TABLES LIKE '{$g5[$table.'_table']}'";
$result = sql_query($sql, false);
if (!$result || sql_num_rows($result) == 0) {
return false;
}
}
return true;
}
// 상담 관리 시스템 권한 확인
function consultant_auth_check($auth_level = 'r')
{
global $member, $is_admin;
if (!$is_admin) {
alert('관리자만 접근할 수 있습니다.');
}
// 추가 권한 확인 로직 (필요시)
return true;
}
// 상담 관리 시스템 설정값 조회
function consultant_get_config($key, $default = null)
{
global $g5;
if(!isset($g5['consultant_config_table'])) $g5['consultant_config_table'] = 'consultant_config';
$sql = "SELECT config_value FROM {$g5['consultant_config_table']} WHERE config_key = '" . sql_real_escape_string($key) . "'";
$result = sql_fetch($sql);
if ($result) {
return $result['config_value'];
}
return $default;
}
// 상담 관리 시스템 설정값 저장
function consultant_set_config($key, $value)
{
global $g5;
if(!isset($g5['consultant_config_table'])) $g5['consultant_config_table'] = 'consultant_config';
$sql = "INSERT INTO {$g5['consultant_config_table']} (config_key, config_value, updated_at)
VALUES ('" . sql_real_escape_string($key) . "', '" . sql_real_escape_string($value) . "', NOW())
ON DUPLICATE KEY UPDATE
config_value = '" . sql_real_escape_string($value) . "',
updated_at = NOW()";
return sql_query($sql);
}
// 로그 함수
function consultant_log($message, $level = 'info')
{
global $g5, $member;
if(!isset($g5['consultant_log_table'])) $g5['consultant_log_table'] = 'consultant_log';
$sql = "INSERT INTO {$g5['consultant_log_table']} (mb_id, log_level, log_message, ip_address, log_time) VALUES ('".($member['mb_id'] ?? '')."', '".sql_real_escape_string($level)."', '".sql_real_escape_string($message)."', '".$_SERVER['REMOTE_ADDR']."', '".G5_TIME_YMDHIS."')";
sql_query($sql, false);
}
// 💡 [추가] 알림 발송 함수 (메일/SMS 통합)
function consultant_send_notification($type, $template_key, $data) {
global $g5;
// 템플릿 조회
$table_name = ($type === 'sms') ? 'consultant_sms_templates' : 'consultant_mail_templates';
// 테이블 존재 확인
$table_check = sql_query("SHOW TABLES LIKE '{$table_name}'", false);
if (sql_num_rows($table_check) == 0) return false;
$sql = "SELECT * FROM {$table_name} WHERE template_key = '" . sql_real_escape_string($template_key) . "'";
$template = sql_fetch($sql);
if (!$template) return false;
// 변수 치환
$subject = $template['template_subject'];
$content = $template['template_content'];
foreach ($data as $key => $value) {
$subject = str_replace('{' . $key . '}', $value, $subject);
$content = str_replace('{' . $key . '}', $value, $content);
}
if ($type === 'email') {
// 이메일 발송 (G5 기본 mailer 사용 가정)
include_once(G5_LIB_PATH.'/mailer.lib.php');
// $data['customer_email'] 등이 존재해야 함
if (!empty($data['customer_email'])) {
mailer($g5['title'], $g5['admin_email'], $data['customer_email'], $subject, $content, 1);
consultant_log("이메일 발송: {$template_key} to {$data['customer_email']}");
return true;
}
} elseif ($type === 'sms') {
// SMS 발송 (G5 기본 SMS 라이브러리 사용 가정 - 실제 구현은 SMS 모듈에 따라 다름)
// 여기서는 로그만 남기고 실제 발송 로직은 SMS 모듈에 맞게 구현 필요
// 예:
// include_once(G5_LIB_PATH.'/icode.sms.lib.php');
// $SMS = new SMS;
// $SMS->SMS_con($g5['sms_admin'], $g5['sms_id'], $g5['sms_pw'], $g5['sms_port']);
// $SMS->Add($data['customer_phone'], $g5['admin_phone'], $g5['sms_admin'], iconv("utf-8", "euc-kr", $content), "");
// $SMS->Send();
consultant_log("SMS 발송 시도: {$template_key} to {$data['customer_phone']} (내용: $content)");
return true; // 실제 발송 성공 여부에 따라 변경
}
return false;
}
?>