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

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. // 레이아웃 & 뷰파일 설정
  142. $this->theme = "admin";
  143. $this->view = "setting/admin";
  144. $this->active = "setting/admin";
  145. }
  146. public function admin_add()
  147. {
  148. $this->data['scol'] = $this->input->get('scol', TRUE, '');
  149. $this->data['stxt'] = $this->input->get('stxt', TRUE, '');
  150. $this->data['lists'] = array();
  151. if(! empty($this->data['stxt']))
  152. {
  153. $result =
  154. $this->db
  155. ->select('M.*, MA.ath_type')
  156. ->from('member AS M')
  157. ->join('member_auth AS MA', 'MA.mem_idx=M.mem_idx','left')
  158. ->like( $this->data['scol'], $this->data['stxt'] )
  159. ->where('mem_status','Y')
  160. ->where('ath_type IS NULL',FALSE, FALSE)
  161. ->group_by('M.mem_idx')
  162. ->get();
  163. $this->data['lists'] = $result->result_array();
  164. }
  165. $this->theme = "admin";
  166. $this->view = "setting/admin_add";
  167. $this->theme_file = "iframe";
  168. }
  169. public function update()
  170. {
  171. $reurl = $this->input->post('reurl', TRUE);
  172. $setting = $this->input->post('setting');
  173. // 수정할값을 저장하는 배열
  174. $update_data = array();
  175. foreach($setting as $key=>$val)
  176. {
  177. $update_data[] = array(
  178. "cfg_key" => $key,
  179. "cfg_value" => $val
  180. );
  181. }
  182. // 권한레벨 설정을 하였다면?
  183. if( $this->input->post('auth_name') )
  184. {
  185. $update_data[] = array(
  186. "cfg_key" => "name_auth_level",
  187. "cfg_value" => json_encode($this->post('auth_name'), JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE)
  188. );
  189. }
  190. if( $this->input->post('accept_language') )
  191. {
  192. $accept = $this->input->post('accept_language');
  193. if(count($accept) <= 0) {
  194. alert('최소한 하나의 언어를 선택하셔야 합니다.');
  195. exit;
  196. }
  197. $update_data[] = array(
  198. "cfg_key" => "accept_languages",
  199. "cfg_value" => implode(",", $accept)
  200. );
  201. }
  202. // 사이트 이미지 삭제가 되어있다면?
  203. if( $this->input->post('remove_site_meta_image') == 'Y' )
  204. {
  205. if( file_exists( FCPATH . $this->site->config('site_meta_image') ) )
  206. {
  207. @unlink ( FCPATH . $this->site->config('site_meta_image') );
  208. }
  209. }
  210. // 사이트 이미지 업로드가 있다면?
  211. if( isset($_FILES['site_meta_image']) && $_FILES['site_meta_image'] && $_FILES['site_meta_image']['tmp_name'] )
  212. {
  213. $up_dir = DIR_UPLOAD . DIRECTORY_SEPARATOR . 'common';
  214. make_dir($up_dir, FALSE);
  215. $config['upload_path'] = FCPATH . $up_dir;
  216. $config['allowed_types'] = 'gif|jpg|png';
  217. //$config['max_width'] = 1200;
  218. //$config['min_width'] = 1200;
  219. //$config['max_height'] = 600;
  220. //$config['min_height'] = 600;
  221. $config['file_ext_tolower'] = TRUE;
  222. $config['encrypt_name'] = TRUE;
  223. $this->load->library("upload", $config);
  224. $this->upload->initialize($config);
  225. if( ! $this->upload->do_upload('site_meta_image') )
  226. {
  227. alert("업로드중 오류가 발생하였습니다.".$this->upload->display_errors('업로드 오류:', ' '));
  228. }
  229. else
  230. {
  231. $update_data[] = array(
  232. "cfg_key" => "site_meta_image",
  233. "cfg_value" => str_replace(DIRECTORY_SEPARATOR, "/", $up_dir) . "/" . $this->upload->data('file_name')
  234. );
  235. // 기존에 업로드 되었던 파일은 삭제한다.
  236. if( file_exists( FCPATH . $this->site->config('site_meta_image') ) )
  237. {
  238. @unlink ( FCPATH . $this->site->config('site_meta_image') );
  239. }
  240. }
  241. }
  242. else {
  243. if( $this->input->post('remove_site_meta_image') == 'Y' )
  244. {
  245. $update_data[] = array(
  246. "cfg_key" => "site_meta_image",
  247. "cfg_value" => ''
  248. );
  249. }
  250. }
  251. // 수정할 값이 있다면 수정 실행
  252. if( count($update_data) > 0)
  253. {
  254. if( $this->db->update_batch( "config", $update_data, "cfg_key" ) )
  255. {
  256. // 저장된 캐시를 삭제
  257. $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => PROJECT));
  258. $this->cache->delete('site_config');
  259. alert('수정내역이 반영되었습니다.', $reurl);
  260. }
  261. else
  262. {
  263. alert('수정된 내역이 없습니다.', $reurl);
  264. }
  265. }
  266. else
  267. {
  268. alert('수정된 내역이 없습니다.', $reurl);
  269. }
  270. }
  271. }