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.

331 lines
11 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class Setting extends WB_Controller {
  4. public function __construct()
  5. {
  6. parent::__construct();
  7. $this->data['lang_name']['ko'] = '한국어';
  8. $this->data['lang_name']['en'] = 'English';
  9. $this->data['lang_name']['ja'] = '일본어';
  10. $this->data['lang_name']['zh-hans'] = '중국어(간체)';
  11. $this->data['lang_name']['zh-hant'] = '중국어(번체)';
  12. }
  13. public function basic()
  14. {
  15. // 메타태그 설정
  16. $this->site->meta_title = "사이트 기본설정"; // 이 페이지의 타이틀
  17. // 레이아웃 & 뷰파일 설정
  18. $this->theme = "admin";
  19. $this->view = "setting/basic";
  20. $this->active = "setting/basic";
  21. }
  22. public function agreement()
  23. {
  24. // 메타태그 설정
  25. $this->site->meta_title = "약관 설정"; // 이 페이지의 타이틀
  26. // 레이아웃 & 뷰파일 설정
  27. $this->theme = "admin";
  28. $this->view = "setting/agreement";
  29. $this->active = "setting/agreement";
  30. }
  31. public function member()
  32. {
  33. // 메타태그 설정
  34. $this->site->meta_title = "회원 설정"; // 이 페이지의 타이틀
  35. // 레이아웃 & 뷰파일 설정
  36. $this->theme = "admin";
  37. $this->view = "setting/member";
  38. $this->active = "setting/member";
  39. }
  40. public function apis()
  41. {
  42. // 메타태그 설정
  43. $this->site->meta_title = "소셜/API 설정"; // 이 페이지의 타이틀
  44. // 레이아웃 & 뷰파일 설정
  45. $this->theme = "admin";
  46. $this->view = "setting/apis";
  47. $this->active = "setting/apis";
  48. }
  49. public function localize($param="")
  50. {
  51. $this->load->library('form_validation');
  52. $this->form_validation->set_rules('mode',"mode", "required|trim");
  53. $accept_lang = $this->site->config('accept_languages');
  54. $this->data['accept_langs'] = explode(',', $accept_lang);
  55. if( $this->form_validation->run() != FALSE )
  56. {
  57. $loc_key = $this->input->post('loc_key', TRUE);
  58. foreach($this->data['accept_langs'] as $lang)
  59. {
  60. $lang_name = str_replace("-","_",$lang);
  61. $loc_value_{$lang_name} = $this->input->post('loc_value_'.$lang, TRUE);
  62. }
  63. $update = array();
  64. for($i=0; $i<count($loc_key); $i++)
  65. {
  66. $array['loc_key'] = $loc_key[$i];
  67. foreach($this->data['accept_langs'] as $lang)
  68. {
  69. $lang_name = str_replace("-","_",$lang);
  70. $array['loc_value_'.$lang] = $loc_value_{$lang_name}[$i];
  71. }
  72. $update[] = $array;
  73. }
  74. $this->db->update_batch("localize", $update, "loc_key");
  75. $this->cache->delete('site_language');
  76. alert('저장완료', base_url('admin/setting/localize/'.$param));
  77. exit;
  78. }
  79. else
  80. {
  81. if(empty($param))
  82. {
  83. $param = "공통";
  84. }
  85. $param = urldecode($param);
  86. $this->db->like("loc_key", $param, "after");
  87. $this->data['list'] = $this->db->order_by('loc_key ASC')->get('localize')->result_array();
  88. $this->data['active'] = $param;
  89. // 탭리스트
  90. $query = $this->db->query('SELECT SUBSTRING_INDEX(loc_key,"/",1) AS `keys` FROM wb_localize GROUP BY SUBSTRING_INDEX(loc_key,"/",1)');
  91. $this->data['tab_list'] = $query->result_array();
  92. // 메타태그 설정
  93. $this->site->meta_title = "다국어 설정"; // 이 페이지의 타이틀
  94. // 레이아웃 & 뷰파일 설정
  95. $this->theme = "admin";
  96. $this->view = "setting/localize";
  97. $this->active = "setting/localize";
  98. }
  99. }
  100. public function localize_form()
  101. {
  102. $this->load->library('form_validation');
  103. $this->form_validation->set_rules("loc_key", "구분 키", "required|trim|max_length[60]|min_length[5]|callback_loc_key_check");
  104. $this->form_validation->set_rules("loc_value_ko", "한글", "required|trim");
  105. $accept_lang = $this->site->config('accept_languages');
  106. $this->data['accept_langs'] = explode(',', $accept_lang);
  107. if( $this->form_validation->run() != FALSE )
  108. {
  109. $data['loc_key'] = $this->input->post('loc_key', TRUE);
  110. foreach($this->data['accept_langs'] as $langs)
  111. {
  112. $data['loc_value_'.$langs] = $this->input->post('loc_value_'.$langs, TRUE);
  113. }
  114. $this->db->insert('localize', $data);
  115. $this->cache->delete('site_language');
  116. alert_modal_close('등록완료');
  117. exit;
  118. }
  119. else
  120. {
  121. // 레이아웃 & 뷰파일 설정
  122. $this->theme = "admin";
  123. $this->theme_file = "iframe";
  124. $this->view = "setting/localize_form";
  125. }
  126. }
  127. public function loc_key_check($str)
  128. {
  129. $this->db->where('loc_key', $str);
  130. $result = $this->db->get('localize');
  131. $loc = $result->row_array();
  132. if( $loc )
  133. {
  134. $this->form_validation->set_message('loc_key_check', "이미 사용중인 {field}입니다 : {$str}");
  135. return FALSE;
  136. }
  137. return true;
  138. }
  139. public function admin()
  140. {
  141. $this->data['lists'] =
  142. $this->db
  143. ->from('member_auth AS MA')
  144. ->join('member AS M', 'MA.mem_idx=M.mem_idx','inner')
  145. ->where('MA.ath_type','SUPER')
  146. ->get()
  147. ->result_array();
  148. // 레이아웃 & 뷰파일 설정
  149. $this->theme = "admin";
  150. $this->view = "setting/admin";
  151. $this->active = "setting/admin";
  152. }
  153. public function admin_add()
  154. {
  155. $this->data['scol'] = $this->input->get('scol', TRUE, '');
  156. $this->data['stxt'] = $this->input->get('stxt', TRUE, '');
  157. $this->data['lists'] = array();
  158. if(! empty($this->data['stxt']))
  159. {
  160. $result =
  161. $this->db
  162. ->select('M.*, MA.ath_type')
  163. ->from('member AS M')
  164. ->join('member_auth AS MA', 'MA.mem_idx=M.mem_idx','left')
  165. ->like( $this->data['scol'], $this->data['stxt'] )
  166. ->where('mem_status','Y')
  167. ->where('ath_type IS NULL',FALSE, FALSE)
  168. ->group_by('M.mem_idx')
  169. ->get();
  170. $this->data['lists'] = $result->result_array();
  171. }
  172. $this->theme = "admin";
  173. $this->view = "setting/admin_add";
  174. $this->theme_file = "iframe";
  175. }
  176. public function update()
  177. {
  178. $reurl = $this->input->post('reurl', TRUE);
  179. $setting = $this->input->post('setting');
  180. // 수정할값을 저장하는 배열
  181. $update_data = array();
  182. foreach($setting as $key=>$val)
  183. {
  184. $update_data[] = array(
  185. "cfg_key" => $key,
  186. "cfg_value" => $val
  187. );
  188. }
  189. // 권한레벨 설정을 하였다면?
  190. if( $this->input->post('auth_name') )
  191. {
  192. $update_data[] = array(
  193. "cfg_key" => "name_auth_level",
  194. "cfg_value" => json_encode($this->post('auth_name'), JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE)
  195. );
  196. }
  197. if( $this->input->post('accept_language') )
  198. {
  199. $accept = $this->input->post('accept_language');
  200. if(count($accept) <= 0) {
  201. alert('최소한 하나의 언어를 선택하셔야 합니다.');
  202. exit;
  203. }
  204. $update_data[] = array(
  205. "cfg_key" => "accept_languages",
  206. "cfg_value" => implode(",", $accept)
  207. );
  208. }
  209. // 사이트 이미지 삭제가 되어있다면?
  210. if( $this->input->post('remove_site_meta_image') == 'Y' )
  211. {
  212. if( file_exists( FCPATH . $this->site->config('site_meta_image') ) )
  213. {
  214. @unlink ( FCPATH . $this->site->config('site_meta_image') );
  215. }
  216. }
  217. // 사이트 이미지 업로드가 있다면?
  218. if( isset($_FILES['site_meta_image']) && $_FILES['site_meta_image'] && $_FILES['site_meta_image']['tmp_name'] )
  219. {
  220. $up_dir = DIR_UPLOAD . DIRECTORY_SEPARATOR . 'common';
  221. make_dir($up_dir, FALSE);
  222. $config['upload_path'] = FCPATH . $up_dir;
  223. $config['allowed_types'] = 'gif|jpg|png';
  224. //$config['max_width'] = 1200;
  225. //$config['min_width'] = 1200;
  226. //$config['max_height'] = 600;
  227. //$config['min_height'] = 600;
  228. $config['file_ext_tolower'] = TRUE;
  229. $config['encrypt_name'] = TRUE;
  230. $this->load->library("upload", $config);
  231. $this->upload->initialize($config);
  232. if( ! $this->upload->do_upload('site_meta_image') )
  233. {
  234. alert("업로드중 오류가 발생하였습니다.".$this->upload->display_errors('업로드 오류:', ' '));
  235. }
  236. else
  237. {
  238. $update_data[] = array(
  239. "cfg_key" => "site_meta_image",
  240. "cfg_value" => str_replace(DIRECTORY_SEPARATOR, "/", $up_dir) . "/" . $this->upload->data('file_name')
  241. );
  242. // 기존에 업로드 되었던 파일은 삭제한다.
  243. if( file_exists( FCPATH . $this->site->config('site_meta_image') ) )
  244. {
  245. @unlink ( FCPATH . $this->site->config('site_meta_image') );
  246. }
  247. }
  248. }
  249. else {
  250. if( $this->input->post('remove_site_meta_image') == 'Y' )
  251. {
  252. $update_data[] = array(
  253. "cfg_key" => "site_meta_image",
  254. "cfg_value" => ''
  255. );
  256. }
  257. }
  258. // 수정할 값이 있다면 수정 실행
  259. if( count($update_data) > 0)
  260. {
  261. if( $this->db->update_batch( "config", $update_data, "cfg_key" ) )
  262. {
  263. // 저장된 캐시를 삭제
  264. $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => PROJECT));
  265. $this->cache->delete('site_config');
  266. alert('수정내역이 반영되었습니다.', $reurl);
  267. }
  268. else
  269. {
  270. alert('수정된 내역이 없습니다.', $reurl);
  271. }
  272. }
  273. else
  274. {
  275. alert('수정된 내역이 없습니다.', $reurl);
  276. }
  277. }
  278. }