128 lines
4.6 KiB
PHP
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;
|
|
}
|
|
?>
|