207 lines
6.9 KiB
PHP
207 lines
6.9 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
/**
|
|
* Member_dormant hook class
|
|
*
|
|
* Copyright (c) CIBoard <www.ciboard.co.kr>
|
|
*
|
|
* @author CIBoard (develop@ciboard.co.kr)
|
|
*/
|
|
|
|
class _Member_dormant
|
|
{
|
|
|
|
private $CI;
|
|
|
|
public $dormant_days_text;
|
|
|
|
/**
|
|
* 휴면회원으로 전환, 휴면회원이 곧 될 대상자에게 메일을 발송하는 프로세스를 담당하고 있습니다.
|
|
*/
|
|
function init()
|
|
{
|
|
$this->CI =& get_instance();
|
|
|
|
if ($this->CI->input->is_ajax_request() === true) {
|
|
return;
|
|
}
|
|
if ($this->CI->input->method() !== 'get') {
|
|
return;
|
|
}
|
|
if ($this->CI->uri->segment(1) === 'install') {
|
|
return;
|
|
}
|
|
|
|
if ($this->CI->cbconfig->item('member_dormant_auto_clean')) {
|
|
$cachename = 'check_hook_member_dormant_auto_clean';
|
|
$cachetime = 25000;
|
|
if ( ! $this->CI->cache->get($cachename)) {
|
|
$this->auto_clean();
|
|
$this->CI->cache->save($cachename, '1', $cachetime);
|
|
}
|
|
}
|
|
|
|
if ($this->CI->cbconfig->item('member_dormant_auto_email')) {
|
|
$cachename = 'check_hook_member_dormant_auto_email';
|
|
$cachetime = 21000;
|
|
if ( ! $this->CI->cache->get($cachename)) {
|
|
$this->auto_email();
|
|
$this->CI->cache->save($cachename, '1', $cachetime);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 일정 시간이 지나 휴면회원 대상자가 된 회원을 삭제하거나 별도의 저장소로 옮기는 프로세스를 담당합니다
|
|
*/
|
|
function auto_clean()
|
|
{
|
|
$where = array();
|
|
$dormant_days = $this->CI->cbconfig->item('member_dormant_days') ? $this->CI->cbconfig->item('member_dormant_days') : 365;
|
|
$gap = $dormant_days * 24 * 60 * 60;
|
|
$lastlogin = ctimestamp() - $gap;
|
|
$lastlogin_datetime = cdate('Y-m-d H:i:s', $lastlogin);
|
|
$where['mem_lastlogin_datetime <='] = $lastlogin_datetime;
|
|
$where['mem_register_datetime <='] = $lastlogin_datetime;
|
|
$this->CI->load->model('Member_model');
|
|
$result = $this->CI->Member_model->get('', 'mem_id', $where);
|
|
if ($result) {
|
|
$this->CI->load->model('Member_dormant_model');
|
|
foreach ($result as $value) {
|
|
$mem_id = element('mem_id', $value);
|
|
if ($this->CI->cbconfig->item('member_dormant_method') === 'delete') {
|
|
$this->CI->member->delete_member($mem_id);
|
|
} else {
|
|
$this->CI->member->archive_to_dormant($mem_id);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 일정 시간이 지나 휴면회원 대상자가 되기 전에 이메일로 회원에게 알려주는 프로세스를 담당합니다
|
|
*/
|
|
function auto_email()
|
|
{
|
|
/**
|
|
* Email 라이브러리를 가져옵니다
|
|
*/
|
|
$this->CI->load->library('email');
|
|
|
|
$this->dormant_days_text = array(
|
|
'30' => '30일',
|
|
'90' => '90일',
|
|
'180' => '180일',
|
|
'365' => '1년',
|
|
'730' => '2년',
|
|
'1095' => '3년',
|
|
'1460' => '4년',
|
|
'1825' => '5년',
|
|
);
|
|
|
|
$where = array();
|
|
$dormant_days = $this->CI->cbconfig->item('member_dormant_days') ? $this->CI->cbconfig->item('member_dormant_days') : 365;
|
|
$email_days = $this->CI->cbconfig->item('member_dormant_auto_email_days') ? $this->CI->cbconfig->item('member_dormant_auto_email_days') : 365;
|
|
$gap = $dormant_days * 24 * 60 * 60;
|
|
$email_gap = $email_days * 24 * 60 * 60;
|
|
$lastlogin = ctimestamp() - $gap + $email_gap;
|
|
$lastlogin_datetime = cdate('Y-m-d H:i:s', $lastlogin);
|
|
$this->CI->load->model('Member_dormant_notify_model');
|
|
$result = $this->CI->Member_dormant_notify_model->get_unsent_email_member($lastlogin_datetime);
|
|
if ($result) {
|
|
foreach ($result as $value) {
|
|
$mem_id = element('mem_id', $value);
|
|
// 메일 발송하기
|
|
|
|
$searchconfig = array(
|
|
'{홈페이지명}',
|
|
'{회사명}',
|
|
'{홈페이지주소}',
|
|
'{회원아이디}',
|
|
'{회원닉네임}',
|
|
'{회원실명}',
|
|
'{회원이메일}',
|
|
'{메일수신여부}',
|
|
'{쪽지수신여부}',
|
|
'{문자수신여부}',
|
|
'{최종로그인시간}',
|
|
'{정리예정날짜}',
|
|
'{정리기준}',
|
|
'{정리방법}',
|
|
);
|
|
$receive_email = element('mem_receive_email', $value) ? '동의' : '거부';
|
|
$receive_note = element('mem_use_note', $value) ? '동의' : '거부';
|
|
$receive_sms = element('mem_receive_sms', $value) ? '동의' : '거부';
|
|
$dormant_timestamp = strtotime(element('mem_lastlogin_datetime', $value)) + ($this->CI->cbconfig->item('member_dormant_days') * 24 * 60 * 60);
|
|
$dormant_date = cdate('Y년 m월 d일', $dormant_timestamp);
|
|
$dormant_datetime = cdate('Y-m-d H:i:s', $dormant_timestamp);
|
|
$replaceconfig = array(
|
|
$this->CI->cbconfig->item('site_title'),
|
|
$this->CI->cbconfig->item('company_name'),
|
|
site_url(),
|
|
element('mem_userid', $value),
|
|
element('mem_nickname', $value),
|
|
element('mem_username', $value),
|
|
element('mem_email', $value),
|
|
$receive_email,
|
|
$receive_note,
|
|
$receive_sms,
|
|
cdate('Y년 m월 d일 H시 i분', strtotime(element('mem_lastlogin_datetime', $value))),
|
|
$dormant_date,
|
|
$this->dormant_days_text[$this->CI->cbconfig->item('member_dormant_days')],
|
|
($this->CI->cbconfig->item('member_dormant_method') === 'delete' ? '삭제' : '별도의 저장소에 보관'),
|
|
);
|
|
$replaceconfig_escape = array(
|
|
html_escape($this->CI->cbconfig->item('site_title')),
|
|
html_escape($this->CI->cbconfig->item('company_name')),
|
|
site_url(),
|
|
html_escape(element('mem_userid', $value)),
|
|
html_escape(element('mem_nickname', $value)),
|
|
html_escape(element('mem_username', $value)),
|
|
html_escape(element('mem_email', $value)),
|
|
$receive_email,
|
|
$receive_note,
|
|
$receive_sms,
|
|
cdate('Y년 m월 d일 H시 i분', strtotime(element('mem_lastlogin_datetime', $value))),
|
|
$dormant_date,
|
|
$this->dormant_days_text[$this->CI->cbconfig->item('member_dormant_days')],
|
|
($this->CI->cbconfig->item('member_dormant_method') === 'delete' ? '삭제' : '별도의 저장소에 보관'),
|
|
);
|
|
|
|
$title = str_replace(
|
|
$searchconfig,
|
|
$replaceconfig,
|
|
$this->CI->cbconfig->item('send_email_dormant_notify_user_title')
|
|
);
|
|
$content = str_replace(
|
|
$searchconfig,
|
|
$replaceconfig_escape,
|
|
$this->CI->cbconfig->item('send_email_dormant_notify_user_content')
|
|
);
|
|
|
|
$this->CI->email->clear(true);
|
|
$this->CI->email->from($this->CI->cbconfig->item('webmaster_email'), $this->CI->cbconfig->item('webmaster_name'));
|
|
$this->CI->email->to(element('mem_email', $value));
|
|
$this->CI->email->subject($title);
|
|
$this->CI->email->message($content);
|
|
$this->CI->email->send();
|
|
|
|
$insertdata = array(
|
|
'mem_id' => element('mem_id', $value),
|
|
'mem_userid' => element('mem_userid', $value),
|
|
'mem_email' => element('mem_email', $value),
|
|
'mem_username' => element('mem_username', $value),
|
|
'mem_nickname' => element('mem_nickname', $value),
|
|
'mem_register_datetime' => element('mem_register_datetime', $value),
|
|
'mem_lastlogin_datetime' => element('mem_lastlogin_datetime', $value),
|
|
'mdn_dormant_datetime' => $dormant_datetime,
|
|
'mdn_dormant_notify_datetime' => cdate('Y-m-d H:i:s'),
|
|
);
|
|
$this->CI->Member_dormant_notify_model->insert($insertdata);
|
|
}
|
|
}
|
|
}
|
|
}
|