* * @author CIBoard (develop@ciboard.co.kr) */ /** * 다른 회원에게 폼메일 전송시 작동하는 controller 입니다. */ class Formmail extends CB_Controller { /** * 모델을 로딩합니다 */ protected $models = array(); /** * 헬퍼를 로딩합니다 */ protected $helpers = array('form', 'array', 'dhtml_editor'); function __construct() { parent::__construct(); /** * 라이브러리를 로딩합니다 */ $this->load->library(array('querystring')); } /** * 폼메일 작성 페이지입니다 */ public function write($userid = '') { // 이벤트 라이브러리를 로딩합니다 $eventname = 'event_formmail_write'; $this->load->event($eventname); $view = array(); $view['view'] = array(); // 이벤트가 존재하면 실행합니다 $view['view']['event']['before'] = Events::trigger('before', $eventname); /** * 로그인이 필요한 페이지입니다 */ required_user_login(); if ($this->cbconfig->get_device_view_type() !== 'mobile' && ! $this->cbconfig->item('use_sideview_email')) { alert_close('이메일 기능을 사용하지 않는 사이트입니다'); return false; } elseif ($this->cbconfig->get_device_view_type() === 'mobile' && ! $this->cbconfig->item('use_mobile_sideview_email')) { alert_close('모바일 버전에서는 이메일 기능을 사용하지 않는 사이트입니다'); return false; } elseif ( ! $this->member->item('mem_receive_email') && $this->member->is_admin() !== 'super') { alert_close('회원님은 메일수신에 체크하지 않으셨습니다. 회원정보 수정 페이지에 가셔서, 메일 수신에 체크하신 후에 사용이 가능합니다'); return false; } if (empty($userid)) { alert_close('상대방이 지정되지 않았습니다'); return false; } $view['view']['userid'] = $userid; $memberselect = 'mem_id, mem_denied, mem_receive_email, mem_nickname, mem_email'; $view['view']['member'] = $member = $this->Member_model->get_by_userid($userid, $memberselect); if ( ! element('mem_id', $member)) { alert_close('존재하지 않는 회원 아이디입니다'); return false; } if (element('mem_denied', $member)) { alert_close('탈퇴 또는 차단된 회원입니다'); return false; } if ( ! element('mem_receive_email', $member) && $this->member->is_admin() !== 'super') { alert_close(html_escape(element('mem_nickname', $member)) . ' 님은 메일 수신을 원하지 않으십니다'); return false; } $view['view']['use_dhtml'] = false; if ($this->cbconfig->item('use_formmail_dhtml')) { $view['view']['use_dhtml'] = true; } /** * Validation 라이브러리를 가져옵니다 */ $this->load->library('form_validation'); /** * 전송된 데이터의 유효성을 체크합니다 */ $config = array( array( 'field' => 'title', 'label' => '제목', 'rules' => 'trim|required', ), array( 'field' => 'content', 'label' => '내용', 'rules' => 'trim|required', ), ); $this->form_validation->set_rules($config); /** * 유효성 검사를 하지 않는 경우, 또는 유효성 검사에 실패한 경우입니다. * 즉 글쓰기나 수정 페이지를 보고 있는 경우입니다 */ if ($this->form_validation->run() === false) { // 이벤트가 존재하면 실행합니다 $view['view']['event']['formrunfalse'] = Events::trigger('formrunfalse', $eventname); /** * 레이아웃을 정의합니다 */ $page_title = $this->cbconfig->item('site_meta_title_formmail'); $meta_description = $this->cbconfig->item('site_meta_description_formmail'); $meta_keywords = $this->cbconfig->item('site_meta_keywords_formmail'); $meta_author = $this->cbconfig->item('site_meta_author_formmail'); $page_name = $this->cbconfig->item('site_page_name_formmail'); $layoutconfig = array( 'path' => 'formmail', 'layout' => 'layout_popup', 'skin' => 'formmail', 'layout_dir' => $this->cbconfig->item('layout_formmail'), 'mobile_layout_dir' => $this->cbconfig->item('mobile_layout_formmail'), 'skin_dir' => $this->cbconfig->item('skin_formmail'), 'mobile_skin_dir' => $this->cbconfig->item('mobile_skin_formmail'), 'page_title' => $page_title, 'meta_description' => $meta_description, 'meta_keywords' => $meta_keywords, 'meta_author' => $meta_author, 'page_name' => $page_name, ); $view['layout'] = $this->managelayout->front($layoutconfig, $this->cbconfig->get_device_view_type()); $this->data = $view; $this->layout = element('layout_skin_file', element('layout', $view)); $this->view = element('view_skin_file', element('layout', $view)); } else { // 이벤트가 존재하면 실행합니다 $view['view']['event']['formruntrue'] = Events::trigger('formruntrue', $eventname); // 메일 발송 $this->load->library('email'); $this->email->from($this->member->item('mem_email'), $this->member->item('mem_nickname')); $this->email->to(element('mem_email', $member)); $this->email->subject($this->input->post('title')); $content_type = $this->cbconfig->item('use_formmail_dhtml') ? 1 : 0; $this->email->message(display_html_content( $this->input->post('content'), $content_type, 800 )); $this->email->send(); alert_close(element('mem_nickname', $member) . ' 님에게 메일을 발송하였습니다. '); } } }