You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

167 lines
6.5 KiB

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Q&A 페이지
*/
class Qna extends WB_Controller
{
function index($qna_idx="")
{
$page = (int)$this->input->get('page', TRUE, 1) > 1 ? (int)$this->input->get('page', TRUE, 1) : 1;
$page_rows = (int)$this->input->get('page_rows', TRUE, 15);
$start = ($page - 1) * $page_rows;
$sc = $this->input->get('sc', TRUE);
$st = $this->input->get('st', TRUE);
if(! empty($sc) && !empty($st)) {
$st = explode(" ", $st);
if(count($st) > 0) {
foreach($st as $stxt) {
$this->db->like("qna_".$sc, $stxt);
}
}
}
// Q&A 목록 가져오기
$this->db
->select("SQL_CALC_FOUND_ROWS Q.*, QC.qnc_title", FALSE)
->from('qna AS Q')
->join('qna_category AS QC','QC.qnc_idx=Q.qnc_idx','left')
->where('qna_status', 'Y')
->limit($page_rows, $start);
$result = $this->db->get();
$this->data['lists'] = $result->result_array();
$this->data['total_count'] = (int)$this->db->query("SELECT FOUND_ROWS() AS cnt")->row(0)->cnt;
foreach($this->data['lists'] as $i=>&$row)
{
$row['nums'] = $this->data['total_count'] - $i - $start;
$row['is_answered'] = $row['qna_ans_status'] == 'Y';
}
// 페이지네이션 세팅
$paging['page'] = $page;
$paging['page_rows'] = $page_rows;
$paging['total_rows'] = $this->data['total_count'];
$this->load->library('paging', $paging);
$this->data['pagination'] = $this->paging->create();
$this->theme = $this->site->get_layout();
$this->view = "customer/qna";
}
function write()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('qna_title', '제목', 'required|trim');
if( $this->form_validation->run() != FALSE )
{
$data['qnc_idx'] = $this->input->post('qnc_idx', TRUE, 0);
$data['qna_title'] = trim($this->input->post('qna_title', TRUE,''));
if( $this->member->is_login() )
{
$data['qna_name'] = $this->member->info('nickname');
$data['qna_password'] = $this->member->info('password');
}
else {
$data['qna_name'] = trim($this->input->post('qna_name', TRUE,''));
$data['qna_password'] = get_password_hash($data['qna_password']);
}
$data['qna_phone'] = trim($this->input->post('qna_phone', TRUE,''));
$data['qna_email'] = trim($this->input->post('qna_email', TRUE,''));
$data['qna_content'] = trim($this->input->post('qna_content', TRUE,''));
$data['upd_user'] = $data['reg_user'] = $this->member->is_login();
$data['upd_datetime'] = $data['reg_datetime'] = date('Y-m-d H:i:s');
$data['qna_ans_status'] = 'N';
$data['qna_ans_user'] = 0;
$data['qna_ans_datetime'] = '0000-00-00 00:00:00';
$data['qna_ans_upd_user'] = 0;
$data['qna_ans_upd_datetime'] ='0000-00-00 00:00:00';
$data['qna_ans_content'] = '';
$upload_array = array();
if( isset($_FILES) && isset($_FILES['userfile']) && count($_FILES['userfile']) > 0 )
{
$dir_path = DIR_UPLOAD . "/qna/".date('Y')."/".date('m');
make_dir($dir_path,FALSE);
$upload_config['upload_path'] = "./".$dir_path;
$upload_config['file_ext_tolower'] = TRUE;
$upload_config['allowed_types'] = FILE_UPLOAD_ALLOW;
$upload_config['encrypt_name'] = TRUE;
$this->load->library("upload", $upload_config);
// FOR문으로 업로드하기 위해 돌리기
$files = NULL;
foreach ($_FILES['userfile'] as $key => $value) {
foreach ($value as $noKey => $noValue) {
$files[$noKey][$key] = $noValue;
}
}
unset($_FILES);
// FOR 문 돌면서 정리
foreach ($files as $file) {
$_FILES['userfile'] = $file;
$this->upload->initialize($upload_config);
if( ! isset($_FILES['userfile']['tmp_name']) OR ! $_FILES['userfile']['tmp_name']) continue;
if (! $this->upload->do_upload('userfile') )
{
alert('파일 업로드에 실패하였습니다.\\n'.$this->upload->display_errors(' ',' '));
exit;
}
else
{
$filedata = $this->upload->data();
$upload_array[] = array(
"att_target_type" => 'QNA',
"att_origin" => $filedata['orig_name'],
"att_filepath" => $dir_path . "/" . $filedata['file_name'],
"att_downloads" => 0,
"att_filesize" => $filedata['file_size'] * 1024,
"att_width" => $filedata['image_width'] ? $filedata['image_width'] : 0,
"att_height" => $filedata['image_height'] ? $filedata['image_height'] : 0,
"att_ext" => $filedata['file_ext'],
"att_is_image" => ($filedata['is_image'] == 1) ? 'Y' : 'N',
"reg_user" => $this->member->is_login(),
"reg_datetime" => date('Y-m-d H:i:s')
);
}
}
}
$this->db->insert('qna', $data);
$qna_idx = $this->db->insert_id();
if( count($upload_array) > 0 )
{
foreach($upload_array as &$arr) {
$arr['att_target'] = $qna_idx;
}
$this->db->insert_batch('attach', $upload_array);
}
alert('등록이 완료되었습니다.', base_url('customer/qna'));
}
else
{
$this->data['qna_category'] = $this->db->where('qnc_status','Y')->order_by('sort')->get('qna_category')->result_array();
$this->theme = $this->site->get_layout();
$this->view = "customer/qna";
}
}
function view($qna_idx) {
}
}