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);
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 |