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.

393 lines
14 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
7 years ago
7 years ago
  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class Members extends WB_Controller {
  4. public function __construct()
  5. {
  6. parent::__construct();
  7. $this->theme = "admin";
  8. }
  9. public function login(){
  10. if( $this->member->is_login() ) {
  11. alert(langs('회원/login/already'), base_url("members/info"));
  12. exit;
  13. }
  14. $form_attributes['id'] = "form-login";
  15. $form_attributes['autocomplete'] = "off";
  16. $form_attributes['name'] = "form_login";
  17. $form_attributes['data-role'] = "form-login";
  18. $form_hidden_inputs['reurl'] = set_value('reurl', $this->input->get("reurl", TRUE, base_url()));
  19. $action_url = base_url( 'admin/members/login', SSL_VERFIY ? 'https' : 'http' );
  20. $this->data['form_open'] = form_open($action_url, $form_attributes, $form_hidden_inputs);
  21. $this->data['form_close'] = form_close();
  22. $this->site->meta_title = "관리자 로그인";
  23. $this->theme = "admin";
  24. $this->theme_file = "iframe";
  25. $this->view = "members/login";
  26. }
  27. /*****************************************************************
  28. * 회원 목록
  29. *****************************************************************/
  30. public function lists()
  31. {
  32. $this->load->model('member_model');
  33. $this->data['sdate'] = $this->input->get('sdate', TRUE);
  34. $this->data['startdate'] = $this->input->get('startdate', TRUE);
  35. $this->data['enddate'] = $this->input->get('enddate', TRUE);
  36. if( $this->data['sdate'] && $this->data['startdate'] ) $param['where']['mem_' . $this->data['sdate'] . ' >=' ] = $this->data['startdate'] . " 00:00:00";
  37. if( $this->data['sdate'] && $this->data['enddate'] ) $param['where']['mem_' . $this->data['sdate'] . ' <=' ] = $this->data['enddate'] . " 23:59:59";
  38. // 메타태그 설정
  39. $this->site->meta_title = "회원 목록"; // 이 페이지의 타이틀
  40. // 레이아웃 & 뷰파일 설정
  41. $this->view = $this->active = "members/lists";
  42. }
  43. /**
  44. * @param $mem_idx
  45. */
  46. public function info($mem_idx)
  47. {
  48. if(empty($mem_idx))
  49. {
  50. alert_modal_close('잘못된 접근입니다.');
  51. exit;
  52. }
  53. $this->data['mem'] = $this->member->get_member($mem_idx,'mem_idx');
  54. $this->theme = "admin";
  55. $this->theme_file = "iframe";
  56. $this->view = "members/info";
  57. }
  58. /**
  59. * 회원 포인트 관리
  60. * @param $mem_idx
  61. */
  62. public function point($mem_idx)
  63. {
  64. if(empty($mem_idx))
  65. {
  66. alert_modal_close('잘못된 접근입니다.');
  67. exit;
  68. }
  69. $this->load->model('member_model');
  70. // 회원 정보
  71. $this->data['mem'] = $this->member->get_member($mem_idx,'mem_idx');
  72. $this->theme = "admin";
  73. $this->theme_file = "iframe";
  74. $this->view = "members/point";
  75. }
  76. /**
  77. * 회원 포인트 추가
  78. * @param $mem_idx
  79. */
  80. public function point_form($mem_idx)
  81. {
  82. if(empty($mem_idx))
  83. {
  84. alert_modal2_close('잘못된 접근입니다.');
  85. exit;
  86. }
  87. $this->data['mem'] = $this->member->get_member($mem_idx,'mem_idx');
  88. $this->load->library('form_validation');
  89. $this->form_validation->set_rules('mem_idx', '회원번호', 'required|trim');
  90. $this->form_validation->set_rules('mpo_value', $this->site->config('point_name'), 'required|trim|numeric');
  91. $this->form_validation->set_rules('mpo_description', $this->site->config('point_name').' 내용', 'required|trim');
  92. if( $this->form_validation->run() != FALSE )
  93. {
  94. $data['mem_idx'] = $this->input->post('mem_idx', TRUE);
  95. $data['mpo_flag'] = $this->input->post('mpo_flag', TRUE, 1);
  96. $data['mpo_value'] = $this->input->post('mpo_value', TRUE);
  97. $data['mpo_description'] = $this->input->post('mpo_description', TRUE);
  98. $data['target_type'] = $this->input->post('target_type', TRUE);
  99. $data['mpo_regtime'] = date('Y-m-d H:i:s');
  100. if( $this->member->add_point($data['mem_idx'],$data['mpo_flag'], $data['mpo_value'], FALSE, $data['target_type'], $data['mpo_description'],0))
  101. {
  102. alert_modal2_close('등록완료');
  103. exit;
  104. }
  105. else {
  106. alert('DB 입력도중 오류가 발생하였습니다.');
  107. exit;
  108. }
  109. }
  110. else
  111. {
  112. $this->data['mem_idx'] = $mem_idx;
  113. $this->theme = "admin";
  114. $this->theme_file = "iframe";
  115. $this->view = "members/point_form";
  116. }
  117. }
  118. /**
  119. * 포인트 관리
  120. */
  121. function points()
  122. {
  123. // 메타태그 설정
  124. $this->site->meta_title = $this->site->config('point_name'). " 관리";
  125. // 레이아웃 & 뷰파일 설정
  126. $this->theme = "admin";
  127. $this->view = "members/points";
  128. $this->active = "members/points";
  129. }
  130. /*****************************************************************
  131. * 회원 추가
  132. ****************************************************************/
  133. public function add()
  134. {
  135. $this->load->model('member_model');
  136. $this->load->library('form_validation');
  137. $this->form_validation->set_rules('mem_userid', "아이디", "required|trim|min_length[6]" . (USE_EMAIL_ID ? '|valid_email' :'') . '|callback_userid_check' );
  138. $this->form_validation->set_rules('mem_password', '비밀번호', 'required|trim|min_length[6]');
  139. $this->form_validation->set_rules('mem_password2', "비밀번호 확인", "required|trim|matches[mem_password]");
  140. $this->form_validation->set_rules('mem_nickname', "닉네임", "required|trim|callback_nickname_check");
  141. $this->form_validation->set_rules('mem_email', '이메일', 'required|trim|valid_email');
  142. if( $this->form_validation->run() != FALSE)
  143. {
  144. $data['mode'] = "INSERT";
  145. $data['mem_userid'] = $this->input->post('mem_userid', TRUE);
  146. $data['mem_password'] = $this->input->post('mem_password', TRUE);
  147. $data['mem_nickname'] = $this->input->post('mem_nickname', TRUE);
  148. $data['mem_email'] = $this->input->post('mem_email', TRUE);
  149. $data['mem_verfy_email'] = ( USE_EMAIL_VERFY ) ? ( $this->input->post('mem_verfy_email', TRUE) == 'Y' ? 'Y' : 'N' ) : 'Y';
  150. $data['mem_phone'] = $this->input->post('mem_phone', TRUE);
  151. $data['mem_auth'] = $this->input->post('mem_auth', TRUE);
  152. $data['mem_gender'] = $this->input->post('mem_gender', TRUE);
  153. $data['mem_recv_email'] = $this->input->post('mem_recv_email', TRUE) == 'Y' ? 'Y' : 'N';
  154. $data['mem_recv_sms'] = $this->input->post('mem_recv_sms', TRUE) == 'Y' ? 'Y' : 'N';
  155. $data['mem_password'] = get_password_hash($data['mem_password']);
  156. if( $this->member->info_process($data) )
  157. {
  158. alert('사용자 등록이 완료되었습니다.', base_url('admin/members/lists'));
  159. exit;
  160. }
  161. else {
  162. alert('등록도중 오류가 발생하였습니다.');
  163. exit;
  164. }
  165. }
  166. else
  167. {
  168. // 메타태그 설정
  169. $this->site->meta_title = "신규 회원 등록"; // 이 페이지의 타이틀
  170. // 레이아웃 & 뷰파일 설정
  171. $this->theme = "admin";
  172. $this->view = "members/add";
  173. $this->active = "members/add";
  174. }
  175. }
  176. /*****************************************************************
  177. * 폼검증 : 회원 아이디 체크
  178. ****************************************************************/
  179. public function userid_check($str)
  180. {
  181. $deny_id = explode(',', $this->site->config('deny_id'));
  182. if( in_array($str, $deny_id) )
  183. {
  184. $this->form_validation->set_message('userid_check', "{field}에 사용할 수 없는 단어입니다 : {$str}");
  185. return FALSE;
  186. }
  187. if( $member = $this->member->get_member($str, 'mem_userid') )
  188. {
  189. $this->form_validation->set_message('userid_check', "이미 사용중인 {field}입니다 : {$str}");
  190. return FALSE;
  191. }
  192. return true;
  193. }
  194. /*****************************************************************
  195. * 폼검증 : 회원 닉네임 체크
  196. ****************************************************************/
  197. public function nickname_check_pre($str)
  198. {
  199. $deny_nickname = explode(',',$this->site->config('deny_nickname'));
  200. $deny_word = explode(',', $this->site->config('deny_word'));
  201. $deny = array();
  202. foreach($deny_nickname as $d) $deny[] = trim($d);
  203. foreach($deny_word as $d) $deny[] = trim($d);
  204. if ( in_array($str, $deny) )
  205. {
  206. $this->form_validation->set_message('nickname_check_pre', "{field}에 사용할 수 없는 단어입니다 : {$str}");
  207. return FALSE;
  208. }
  209. return TRUE;
  210. }
  211. /*****************************************************************
  212. * 폼검증 : 회원 닉네임 체크 + 사용여부 체크
  213. ****************************************************************/
  214. public function nickname_check($str)
  215. {
  216. if(! $this->nickname_check_pre($str) )
  217. {
  218. return FALSE;
  219. }
  220. if( $member = $this->member->get_member($str, 'mem_nickname') )
  221. {
  222. $this->form_validation->set_message('nickname_check', "이미 사용중인 {field} 입니다 : {$str}");
  223. return FALSE;
  224. }
  225. return TRUE;
  226. }
  227. /**
  228. * 사용자 로그인 로그
  229. */
  230. public function log()
  231. {
  232. $this->data['st'] = $this->input->get('st', TRUE);
  233. $this->data['sc'] = $this->input->get('sc', TRUE);
  234. $popup_mode = strtolower($this->input->get('mode', TRUE)) == 'popup';
  235. // 메타태그 설정
  236. $this->site->meta_title = "회원 로그인 기록"; // 이 페이지의 타이틀
  237. // 레이아웃 & 뷰파일 설정
  238. $this->view = "members/log";
  239. $this->active = "members/log";
  240. if($popup_mode) {
  241. $this->theme_file = 'iframe';
  242. }
  243. }
  244. /**
  245. * 사용자 비밀번호 변경
  246. */
  247. public function password($mem_idx)
  248. {
  249. if(empty($mem_idx))
  250. {
  251. alert_modal_close('잘못된 접근입니다.');
  252. exit;
  253. }
  254. $this->data['mem'] = $this->member->get_member($mem_idx,'mem_idx');
  255. $this->load->library('form_validation');
  256. $this->form_validation->set_rules('mem_password', '새 비밀번호', 'required|trim|min_length[6]');
  257. $this->form_validation->set_rules('mem_password2', "새 비밀번호 확인", "required|trim|matches[mem_password]");
  258. if( $this->form_validation->run() != FALSE)
  259. {
  260. $data['mem_password'] = $this->input->post('mem_password', TRUE);
  261. $data['mem_password'] = get_password_hash($data['mem_password']);
  262. if( $this->db->where('mem_idx', $mem_idx)->set('mem_password', $data['mem_password'])->update('member') )
  263. {
  264. alert_modal_close('사용자의 비밀번호가 변경되었습니다.');
  265. exit;
  266. }
  267. else {
  268. alert('비밀번호 변경도중 오류가 발생하였습니다.');
  269. exit;
  270. }
  271. }
  272. else
  273. {
  274. // 레이아웃 & 뷰파일 설정
  275. $this->theme = "admin";
  276. $this->view = "members/password";
  277. $this->theme_file = "iframe";
  278. }
  279. }
  280. /**
  281. * 사용자 정보수정
  282. */
  283. public function modify($mem_idx)
  284. {
  285. if(empty($mem_idx))
  286. {
  287. alert_modal_close('잘못된 접근입니다.');
  288. exit;
  289. }
  290. if(! $this->data['mem'] = $this->member->get_member($mem_idx,'mem_idx'))
  291. {
  292. alert_modal_close('존재하지 않는 회원입니다.');
  293. exit;
  294. }
  295. $this->load->model('member_model');
  296. $this->load->library('form_validation');
  297. $this->form_validation->set_rules('mem_nickname', "닉네임", "required|trim|callback_nickname_check_pre");
  298. $this->form_validation->set_rules('mem_email', '이메일', 'required|trim|valid_email');
  299. if( $this->form_validation->run() != FALSE)
  300. {
  301. $data['mode'] = "MODIFY";
  302. $data['mem_idx'] = $mem_idx;
  303. $data['mem_nickname'] = $this->input->post('mem_nickname', TRUE);
  304. $data['mem_email'] = $this->input->post('mem_email', TRUE);
  305. $data['mem_phone'] = $this->input->post('mem_phone', TRUE);
  306. $data['mem_auth'] = $this->input->post('mem_auth', TRUE);
  307. $data['mem_gender'] = $this->input->post('mem_gender', TRUE);
  308. $data['mem_recv_email'] = $this->input->post('mem_recv_email', TRUE) == 'Y' ? 'Y' : 'N';
  309. $data['mem_recv_sms'] = $this->input->post('mem_recv_sms', TRUE) == 'Y' ? 'Y' : 'N';
  310. if( $this->member->info_process($data) )
  311. {
  312. alert_modal_close('사용자 정보수정이 완료되었습니다.');
  313. exit;
  314. }
  315. else {
  316. alert('등록도중 오류가 발생하였습니다.');
  317. exit;
  318. }
  319. }
  320. else
  321. {
  322. // 메타태그 설정
  323. $this->site->meta_title = "신규 회원 등록"; // 이 페이지의 타이틀
  324. // 레이아웃 & 뷰파일 설정
  325. $this->theme = "admin";
  326. $this->view = "members/modify";
  327. $this->theme_file = "iframe";
  328. }
  329. }
  330. }