팝빌 알림톡 기능 추가

This commit is contained in:
chym1217
2025-09-04 12:32:31 +09:00
parent 37d0dcb48f
commit 66f6a75a10
99 changed files with 8876 additions and 260 deletions

View File

@ -8,6 +8,8 @@ if ($is_admin != 'super') {
alert('최고관리자만 접근 가능합니다.');
}
include_once(G5_KAKAO5_PATH.'/kakao5.lib.php'); // 카카오톡 설정 확인
// https://github.com/gnuboard/gnuboard5/issues/296 이슈처리
$sql = " select * from {$g5['config_table']} limit 1";
$config = sql_fetch($sql);
@ -422,6 +424,44 @@ if (!isset($config['cf_cert_kcp_enckey'])) {
$config['cf_cert_kcp_enckey'] = '';
}
// 카카오톡 설정 필드 추가
if (!isset($config['cf_kakaotalk_use'])) {
sql_query(
" ALTER TABLE `{$g5['config_table']}`
ADD `cf_kakaotalk_use` varchar(50) NOT NULL DEFAULT '' AFTER `cf_recaptcha_secret_key`,
ADD `cf_kakaotalk_corpnum` varchar(50) NOT NULL DEFAULT '' AFTER `cf_kakaotalk_use`,
ADD `cf_kakaotalk_sender_hp` varchar(50) NOT NULL DEFAULT '' AFTER `cf_kakaotalk_corpnum`,
ADD `cf_popbill_userid` varchar(100) NOT NULL DEFAULT '' AFTER `cf_kakaotalk_sender_hp`,
ADD `cf_popbill_link_id` varchar(100) NOT NULL DEFAULT '' AFTER `cf_popbill_userid`,
ADD `cf_popbill_secretkey` varchar(255) NOT NULL DEFAULT '' AFTER `cf_popbill_link_id` ",
true
);
}
// 광고성 정보 수신 동의 사용 필드 추가
if (!isset($config['cf_use_promotion'])) {
sql_query(
" ALTER TABLE `{$g5['config_table']}`
ADD `cf_use_promotion` tinyint(1) NOT NULL DEFAULT '0' AFTER `cf_privacy` ",
true
);
}
// 광고성 정보 수신 동의 여부 필드 추가 + 메일 / SMS 수신 일자 추가
if (!isset($member['mb_marketing_agree'])) {
sql_query(
" ALTER TABLE `{$g5['member_table']}`
ADD `mb_marketing_agree` tinyint(1) NOT NULL DEFAULT '0' AFTER `mb_scrap_cnt`,
ADD `mb_marketing_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `mb_marketing_agree`,
ADD `mb_thirdparty_agree` tinyint(1) NOT NULL DEFAULT '0' AFTER `mb_marketing_date`,
ADD `mb_thirdparty_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `mb_thirdparty_agree`,
ADD `mb_agree_log` TEXT NOT NULL AFTER `mb_thirdparty_date`,
ADD `mb_mailling_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `mb_mailling`,
ADD `mb_sms_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `mb_sms` ",
true
);
}
if (!$config['cf_faq_skin']) {
$config['cf_faq_skin'] = "basic";
}
@ -438,10 +478,10 @@ $pg_anchor = '<ul class="anchor">
<li><a href="#anc_cf_join">회원가입</a></li>
<li><a href="#anc_cf_cert">본인확인</a></li>
<li><a href="#anc_cf_url">짧은주소</a></li>
<li><a href="#anc_cf_mail">기본메일환경</a></li>
<li><a href="#anc_cf_article_mail">글작성메일</a></li>
<li><a href="#anc_cf_join_mail">가입메일</a></li>
<li><a href="#anc_cf_vote_mail">투표메일</a></li>
<li><a href="#anc_cf_mail">기본알림환경</a></li>
<li><a href="#anc_cf_article_mail">글작성알림</a></li>
<li><a href="#anc_cf_join_mail">가입알림</a></li>
<li><a href="#anc_cf_vote_mail">투표알림</a></li>
<li><a href="#anc_cf_sns">SNS</a></li>
<li><a href="#anc_cf_lay">레이아웃 추가설정</a></li>
<li><a href="#anc_cf_sms">SMS</a></li>
@ -963,6 +1003,17 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<th scope="row"><label for="cf_privacy">개인정보처리방침</label></th>
<td colspan="3"><textarea id="cf_privacy" name="cf_privacy" rows="10"><?php echo html_purifier($config['cf_privacy']); ?></textarea></td>
</tr>
<tr>
<th scope="row"><label for="cf_use_promotion">회원가입 약관 동의에<br>광고성 정보 수신 동의 표시 여부</label></th>
<td colspan="3">
<?php echo help('<b>광고성 정보 수신 · 마케팅 목적의 개인정보 수집 및 이용 · 개인정보 제 3자 제공</b> 여부를 설정합니다. <b>SMS 또는 카카오톡</b> 사용 시 <b>개인정보 제3자 제공</b>이 활성화됩니다.'); ?>
<?php echo help('동의한 회원에게 <b>카카오톡(친구톡)·문자</b>로 광고성 메시지를 발송할 수 있습니다.'); ?>
<?php echo help('<b>휴대전화번호</b> 사용을 위해서는 <b>기본환경설정 > 회원가입 > 휴대전화번호 입력</b>을 <b>[보이기]</b> 또는 <b>[필수입력]</b>으로 설정해야 하며, 미설정 시 수집이 불가합니다.'); ?>
<?php echo help('* 「정보통신망이용촉진및정보보호등에관한법률」에 따라 <b>광고성 정보 수신 동의</b>를 매 2년마다 반드시 확인해야 합니다.'); ?>
<input type="checkbox" name="cf_use_promotion" value="1" id="cf_use_promotion" <?php echo $config['cf_use_promotion'] ? 'checked' : ''; ?>>
<label for="cf_use_promotion">사용</label>
</td>
</tr>
</tbody>
</table>
</div>
@ -1105,12 +1156,12 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
?>
<section id="anc_cf_mail">
<h2 class="h2_frm">기본 메일 환경 설정</h2>
<h2 class="h2_frm">기본 알림 환경 설정</h2>
<?php echo $pg_anchor ?>
<div class="tbl_frm01 tbl_wrap">
<table>
<caption>기본 메일 환경 설정</caption>
<caption>기본 알림 환경 설정</caption>
<colgroup>
<col class="grid_4">
<col>
@ -1138,18 +1189,85 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<input type="checkbox" name="cf_formmail_is_member" value="1" id="cf_formmail_is_member" <?php echo $config['cf_formmail_is_member'] ? 'checked' : ''; ?>> 회원만 사용
</td>
</tr>
<tr>
<th scope="row"><label for="cf_kakaotalk_use">카카오톡 사용</label></th>
<td>
<?php echo help("카카오톡 발송 서비스 회사를 선택하십시오. 서비스 회사를 선택하지 않으면, 카카오톡 발송 기능이 동작하지 않습니다."); ?>
<select name="cf_kakaotalk_use" id="cf_kakaotalk_use">
<option value="" <?php echo get_selected($config['cf_kakaotalk_use'], ''); ?>>사용안함</option>
<option value="popbill" <?php echo get_selected($config['cf_kakaotalk_use'], 'popbill'); ?>>팝빌</option>
</select>
</td>
</tr>
<tr>
<th scope="row">사업자등록번호</th>
<td>
<?php echo help('서비스 등록 시 사용했던 사업자등록번호를 입력하세요.'); ?>
<input type="text" name="cf_kakaotalk_corpnum" id="cf_kakaotalk_corpnum" value="<?php echo get_sanitize_input($config['cf_kakaotalk_corpnum']); ?>" class="frm_input" size="30">
</td>
</tr>
<tr>
<th scope="row">회신번호</th>
<td>
<?php echo help('대체문자 발송 시 사용할 회신번호를 입력하세요.'); ?>
<input type="text" name="cf_kakaotalk_sender_hp" id="cf_kakaotalk_sender_hp" value="<?php echo get_sanitize_input($config['cf_kakaotalk_sender_hp']); ?>" class="frm_input" size="30">
</td>
</tr>
<tr>
<th scope="row"><label for="cf_popbill_userid">팝빌 회원아이디</label></th>
<td>
<?php echo help('팝빌에 가입한 회원 아이디를 입력하세요.'); ?>
<input type="text" name="cf_popbill_userid" id="cf_popbill_userid" value="<?php echo get_sanitize_input($config['cf_popbill_userid']); ?>" class="frm_input" size="30">
</td>
</tr>
<tr>
<th scope="row"><label for="cf_popbill_link_id">팝빌 링크아이디(LinkID)</label></th>
<td>
<?php echo help('팝빌에서 발급한 API KEY - 링크아이디(LinkID)를 입력하세요.'); ?>
<input type="text" name="cf_popbill_link_id" id="cf_popbill_link_id" value="<?php echo get_sanitize_input($config['cf_popbill_link_id']); ?>" class="frm_input" size="30">
</td>
</tr>
<tr>
<th scope="row"><label for="cf_popbill_secretkey">팝빌 비밀키(SecretKey)</label></th>
<td>
<?php echo help('팝빌에서 발급한 API KEY - 비밀키(SecretKey)를 입력하세요.'); ?>
<input type="text" name="cf_popbill_secretkey" id="cf_popbill_secretkey" value="<?php echo get_sanitize_input($config['cf_popbill_secretkey']); ?>" class="frm_input" size="60">
</td>
</tr>
<tr>
<th scope="row"><label for="cf_phone">팝빌 설정 확인 및 포인트 조회</label></th>
<td>
<!-- 팝빌 설정 확인 및 잔여포인트 조회 -->
<?php echo help("팝빌 설정 정보를 확인하고, 잔여 포인트를 조회할 수 있습니다.<br>설정 확인 버튼을 클릭하면 팝빌 API와의 연결 상태 및 포인트 정보를 확인할 수 있습니다."); ?>
<button type="button" class="btn btn_02" id="btn_check_popbill">설정 확인</button>
<div id="popbill_check_result"></div>
</td>
</tr>
<tr>
<th scope="row">팝빌 연동신청</th>
<td>
<?php echo help('팝빌 연동신청이 필요할 경우 아래 버튼을 클릭하세요.<br>회원가입 시 연동회원으로 선택후 링크아이디 [SIRSOFT]를 넣어주세요.'); ?>
<a href="https://www.popbill.com/App/SignUp" target="_blank" class="btn_frmline">팝빌 연동신청</a>
</td>
</tr>
<tr>
<th scope="row">알림톡 프리셋 설정</th>
<td>
<a href="<?php echo G5_ADMIN_URL; ?>/alimtalkpreset.php" class="btn_frmline">환경설정 &gt; 알림톡프리셋관리</a> 에서 설정하실 수 있습니다.
</td>
</tr>
</table>
</div>
</section>
<section id="anc_cf_article_mail">
<h2 class="h2_frm">게시판 글 작성 시 메일 설정</h2>
<h2 class="h2_frm">게시판 글 작성 시 알림 설정</h2>
<?php echo $pg_anchor ?>
<div class="tbl_frm01 tbl_wrap">
<table>
<caption>게시판 글 작성 시 메일 설정</caption>
<caption>게시판 글 작성 시 알림 설정</caption>
<colgroup>
<col class="grid_4">
<col>
@ -1197,12 +1315,12 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<section id="anc_cf_join_mail">
<h2 class="h2_frm">회원가입 시 메일 설정</h2>
<h2 class="h2_frm">회원가입 시 알림 설정</h2>
<?php echo $pg_anchor ?>
<div class="tbl_frm01 tbl_wrap">
<table>
<caption>회원가입 시 메일 설정</caption>
<caption>회원가입 시 알림 설정</caption>
<colgroup>
<col class="grid_4">
<col>
@ -1229,12 +1347,12 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<section id="anc_cf_vote_mail">
<h2 class="h2_frm">투표 기타의견 작성 시 메일 설정</h2>
<h2 class="h2_frm">투표 기타의견 작성 시 알림 설정</h2>
<?php echo $pg_anchor ?>
<div class="tbl_frm01 tbl_wrap">
<table>
<caption>투표 기타의견 작성 시 메일 설정</caption>
<caption>투표 기타의견 작성 시 알림 설정</caption>
<colgroup>
<col class="grid_4">
<col>
@ -1526,7 +1644,6 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
</div>
</section>
<section id="anc_cf_extra">
<h2 class="h2_frm">여분필드 기본 설정</h2>
<?php echo $pg_anchor ?>
@ -1732,6 +1849,50 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
});
</script>
<!-- 카카오톡 - 팝빌 설정 확인 -->
<?php add_javascript('<script src="'.G5_JS_URL.'/kakao5.js"></script>', 1); // 카카오톡5 솔루션 js 추가 ?>
<script>
$(function() {
$('#btn_check_popbill').on('click', function() {
var $resultDiv = $('#popbill_check_result');
$resultDiv.html('<i class="fa fa-spinner fa-spin"></i> 확인 중...');
$.ajax({
url: '<?php echo G5_KAKAO5_URL;?>/ajax.check_popbill.php',
type: 'POST',
dataType: 'json',
success: function(data) {
var html = '';
if (data.error) {
html = '<div class="alert alert-danger" style="margin-top:10px;"><i class="fa fa-exclamation-triangle"></i> ' + data.error + '</div>';
} else {
html = '<div class="alert alert-success"><i class="fa fa-check-circle"></i> 팝빌이 정상적으로 설정되었습니다.</div>';
if (typeof data.balance !== 'undefined') {
html += '<div class="alert alert-info"><i class="fa fa-info-circle"></i> 잔여포인트: ' + Number(data.balance).toLocaleString() + '원';
html += ' <a href="#" id="btn_point_charge" class="btn btn_02">포인트 충전하기</a>';
html += '</div>';
}
}
$resultDiv.html(html); // 팝빌 설정 결과 출력
$('#btn_check_popbill').hide();
// 포인트 충전 팝업: [정의] openKakao5PopupFromAjax() - js/kakao5.js
var $chargeBtn = $('#btn_point_charge');
if ($chargeBtn.length) {
$chargeBtn.off('click').on('click', async function(e) {
e.preventDefault();
await openKakao5PopupFromAjax('<?php echo G5_KAKAO5_URL; ?>', 5);
});
}
},
error: function() {
$resultDiv.html('<div class="alert alert-danger"><i class="fa fa-exclamation-triangle"></i> 네트워크 오류</div>');
}
});
});
});
</script>
<?php
// 본인확인 모듈 실행권한 체크
if ($config['cf_cert_use']) {