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.
322 lines
11 KiB
322 lines
11 KiB
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
class Setting extends WB_Controller {
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
$this->data['lang_name']['ko'] = '한국어';
|
|
$this->data['lang_name']['en'] = 'English';
|
|
$this->data['lang_name']['ja'] = '일본어';
|
|
$this->data['lang_name']['zh-hans'] = '중국어(간체)';
|
|
$this->data['lang_name']['zh-hant'] = '중국어(번체)';
|
|
}
|
|
|
|
public function basic()
|
|
{
|
|
// 메타태그 설정
|
|
$this->site->meta_title = "사이트 기본설정"; // 이 페이지의 타이틀
|
|
|
|
// 레이아웃 & 뷰파일 설정
|
|
$this->theme = "admin";
|
|
$this->view = "setting/basic";
|
|
$this->active = "setting/basic";
|
|
}
|
|
|
|
public function agreement()
|
|
{
|
|
// 메타태그 설정
|
|
$this->site->meta_title = "약관 설정"; // 이 페이지의 타이틀
|
|
|
|
// 레이아웃 & 뷰파일 설정
|
|
$this->theme = "admin";
|
|
$this->view = "setting/agreement";
|
|
$this->active = "setting/agreement";
|
|
}
|
|
|
|
public function member()
|
|
{
|
|
// 메타태그 설정
|
|
$this->site->meta_title = "회원 설정"; // 이 페이지의 타이틀
|
|
|
|
// 레이아웃 & 뷰파일 설정
|
|
$this->theme = "admin";
|
|
$this->view = "setting/member";
|
|
$this->active = "setting/member";
|
|
}
|
|
|
|
public function apis()
|
|
{
|
|
// 메타태그 설정
|
|
$this->site->meta_title = "소셜/API 설정"; // 이 페이지의 타이틀
|
|
|
|
// 레이아웃 & 뷰파일 설정
|
|
$this->theme = "admin";
|
|
$this->view = "setting/apis";
|
|
$this->active = "setting/apis";
|
|
}
|
|
|
|
public function localize($param="")
|
|
{
|
|
$this->load->library('form_validation');
|
|
|
|
$this->form_validation->set_rules('mode',"mode", "required|trim");
|
|
|
|
$accept_lang = $this->site->config('accept_languages');
|
|
$this->data['accept_langs'] = explode(',', $accept_lang);
|
|
|
|
if( $this->form_validation->run() != FALSE )
|
|
{
|
|
$loc_key = $this->input->post('loc_key', TRUE);
|
|
foreach($this->data['accept_langs'] as $lang)
|
|
{
|
|
$lang_name = str_replace("-","_",$lang);
|
|
$loc_value_{$lang_name} = $this->input->post('loc_value_'.$lang, TRUE);
|
|
}
|
|
|
|
$update = array();
|
|
for($i=0; $i<count($loc_key); $i++)
|
|
{
|
|
$array['loc_key'] = $loc_key[$i];
|
|
foreach($this->data['accept_langs'] as $lang)
|
|
{
|
|
$lang_name = str_replace("-","_",$lang);
|
|
$array['loc_value_'.$lang] = $loc_value_{$lang_name}[$i];
|
|
}
|
|
|
|
$update[] = $array;
|
|
}
|
|
|
|
$this->db->update_batch("localize", $update, "loc_key");
|
|
$this->cache->delete('site_language');
|
|
alert('저장완료', base_url('admin/setting/localize/'.$param));
|
|
exit;
|
|
}
|
|
else
|
|
{
|
|
if(empty($param))
|
|
{
|
|
$param = "공통";
|
|
}
|
|
|
|
$param = urldecode($param);
|
|
|
|
$this->db->like("loc_key", $param, "after");
|
|
$this->data['list'] = $this->db->order_by('loc_key ASC')->get('localize')->result_array();
|
|
$this->data['active'] = $param;
|
|
|
|
// 탭리스트
|
|
$query = $this->db->query('SELECT SUBSTRING_INDEX(loc_key,"/",1) AS `keys` FROM wb_localize GROUP BY SUBSTRING_INDEX(loc_key,"/",1)');
|
|
$this->data['tab_list'] = $query->result_array();
|
|
|
|
// 메타태그 설정
|
|
$this->site->meta_title = "다국어 설정"; // 이 페이지의 타이틀
|
|
|
|
// 레이아웃 & 뷰파일 설정
|
|
$this->theme = "admin";
|
|
$this->view = "setting/localize";
|
|
$this->active = "setting/localize";
|
|
}
|
|
}
|
|
|
|
public function localize_form()
|
|
{
|
|
$this->load->library('form_validation');
|
|
|
|
$this->form_validation->set_rules("loc_key", "구분 키", "required|trim|max_length[60]|min_length[5]|callback_loc_key_check");
|
|
$this->form_validation->set_rules("loc_value_ko", "한글", "required|trim");
|
|
|
|
|
|
$accept_lang = $this->site->config('accept_languages');
|
|
$this->data['accept_langs'] = explode(',', $accept_lang);
|
|
|
|
if( $this->form_validation->run() != FALSE )
|
|
{
|
|
$data['loc_key'] = $this->input->post('loc_key', TRUE);
|
|
|
|
foreach($this->data['accept_langs'] as $langs)
|
|
{
|
|
$data['loc_value_'.$langs] = $this->input->post('loc_value_'.$langs, TRUE);
|
|
}
|
|
|
|
$this->db->insert('localize', $data);
|
|
|
|
$this->cache->delete('site_language');
|
|
|
|
alert_modal_close('등록완료');
|
|
exit;
|
|
}
|
|
else
|
|
{
|
|
// 레이아웃 & 뷰파일 설정
|
|
$this->theme = "admin";
|
|
$this->theme_file = "iframe";
|
|
$this->view = "setting/localize_form";
|
|
}
|
|
}
|
|
|
|
public function loc_key_check($str)
|
|
{
|
|
$this->db->where('loc_key', $str);
|
|
$result = $this->db->get('localize');
|
|
$loc = $result->row_array();
|
|
|
|
if( $loc )
|
|
{
|
|
$this->form_validation->set_message('loc_key_check', "이미 사용중인 {field}입니다 : {$str}");
|
|
return FALSE;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function admin()
|
|
{
|
|
// 레이아웃 & 뷰파일 설정
|
|
$this->theme = "admin";
|
|
$this->view = "setting/admin";
|
|
$this->active = "setting/admin";
|
|
}
|
|
|
|
public function admin_add()
|
|
{
|
|
$this->data['scol'] = $this->input->get('scol', TRUE, '');
|
|
$this->data['stxt'] = $this->input->get('stxt', TRUE, '');
|
|
|
|
$this->data['lists'] = array();
|
|
|
|
if(! empty($this->data['stxt']))
|
|
{
|
|
$result =
|
|
$this->db
|
|
->select('M.*, MA.ath_type')
|
|
->from('member AS M')
|
|
->join('member_auth AS MA', 'MA.mem_idx=M.mem_idx','left')
|
|
->like( $this->data['scol'], $this->data['stxt'] )
|
|
->where('mem_status','Y')
|
|
->where('ath_type IS NULL',FALSE, FALSE)
|
|
->group_by('M.mem_idx')
|
|
->get();
|
|
$this->data['lists'] = $result->result_array();
|
|
}
|
|
|
|
$this->theme = "admin";
|
|
$this->view = "setting/admin_add";
|
|
$this->theme_file = "iframe";
|
|
}
|
|
|
|
public function update()
|
|
{
|
|
$reurl = $this->input->post('reurl', TRUE);
|
|
$setting = $this->input->post('setting');
|
|
|
|
// 수정할값을 저장하는 배열
|
|
$update_data = array();
|
|
foreach($setting as $key=>$val)
|
|
{
|
|
$update_data[] = array(
|
|
"cfg_key" => $key,
|
|
"cfg_value" => $val
|
|
);
|
|
}
|
|
|
|
// 권한레벨 설정을 하였다면?
|
|
if( $this->input->post('auth_name') )
|
|
{
|
|
$update_data[] = array(
|
|
"cfg_key" => "name_auth_level",
|
|
"cfg_value" => json_encode($this->post('auth_name'), JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE)
|
|
);
|
|
}
|
|
|
|
if( $this->input->post('accept_language') )
|
|
{
|
|
$accept = $this->input->post('accept_language');
|
|
if(count($accept) <= 0) {
|
|
alert('최소한 하나의 언어를 선택하셔야 합니다.');
|
|
exit;
|
|
}
|
|
|
|
$update_data[] = array(
|
|
"cfg_key" => "accept_languages",
|
|
"cfg_value" => implode(",", $accept)
|
|
);
|
|
}
|
|
|
|
// 사이트 이미지 삭제가 되어있다면?
|
|
if( $this->input->post('remove_site_meta_image') == 'Y' )
|
|
{
|
|
if( file_exists( FCPATH . $this->site->config('site_meta_image') ) )
|
|
{
|
|
@unlink ( FCPATH . $this->site->config('site_meta_image') );
|
|
}
|
|
}
|
|
|
|
// 사이트 이미지 업로드가 있다면?
|
|
if( isset($_FILES['site_meta_image']) && $_FILES['site_meta_image'] && $_FILES['site_meta_image']['tmp_name'] )
|
|
{
|
|
$up_dir = DIR_UPLOAD . DIRECTORY_SEPARATOR . 'common';
|
|
make_dir($up_dir, FALSE);
|
|
$config['upload_path'] = FCPATH . $up_dir;
|
|
$config['allowed_types'] = 'gif|jpg|png';
|
|
//$config['max_width'] = 1200;
|
|
//$config['min_width'] = 1200;
|
|
//$config['max_height'] = 600;
|
|
//$config['min_height'] = 600;
|
|
$config['file_ext_tolower'] = TRUE;
|
|
$config['encrypt_name'] = TRUE;
|
|
|
|
$this->load->library("upload", $config);
|
|
$this->upload->initialize($config);
|
|
if( ! $this->upload->do_upload('site_meta_image') )
|
|
{
|
|
alert("업로드중 오류가 발생하였습니다.".$this->upload->display_errors('업로드 오류:', ' '));
|
|
}
|
|
else
|
|
{
|
|
$update_data[] = array(
|
|
"cfg_key" => "site_meta_image",
|
|
"cfg_value" => str_replace(DIRECTORY_SEPARATOR, "/", $up_dir) . "/" . $this->upload->data('file_name')
|
|
);
|
|
|
|
// 기존에 업로드 되었던 파일은 삭제한다.
|
|
if( file_exists( FCPATH . $this->site->config('site_meta_image') ) )
|
|
{
|
|
@unlink ( FCPATH . $this->site->config('site_meta_image') );
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if( $this->input->post('remove_site_meta_image') == 'Y' )
|
|
{
|
|
$update_data[] = array(
|
|
"cfg_key" => "site_meta_image",
|
|
"cfg_value" => ''
|
|
);
|
|
}
|
|
}
|
|
|
|
// 수정할 값이 있다면 수정 실행
|
|
if( count($update_data) > 0)
|
|
{
|
|
if( $this->db->update_batch( "config", $update_data, "cfg_key" ) )
|
|
{
|
|
// 저장된 캐시를 삭제
|
|
$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => PROJECT));
|
|
$this->cache->delete('site_config');
|
|
|
|
alert('수정내역이 반영되었습니다.', $reurl);
|
|
}
|
|
else
|
|
{
|
|
alert('수정된 내역이 없습니다.', $reurl);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
alert('수정된 내역이 없습니다.', $reurl);
|
|
}
|
|
}
|
|
}
|