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.

310 lines
10 KiB

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