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.

204 lines
8.0 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
5 years ago
7 years ago
5 years ago
7 years ago
5 years ago
7 years ago
5 years ago
7 years ago
5 years ago
7 years ago
5 years ago
7 years ago
  1. <?php
  2. /**
  3. * 최신글 추출 함수
  4. * @param string $skin_name 스킨이름
  5. * @param string $brd_key 게시판 고유
  6. * @param int $rows 가져올
  7. * @param bool $get_thumb_img 썸네일 이미지를 가져올 것인가?
  8. */
  9. function latest($skin_name="", $brd_key="", $rows=5, $get_thumb_img=FALSE, $file_list=FALSE, $cache_time=1)
  10. {
  11. $CI =& get_instance();
  12. if(empty($skin_name)) return "<p class='alert alert-danger'>".langs('게시판/latest/not_set_skin')."</p>";
  13. if(empty($brd_key)) return "<p class='alert alert-danger'>".langs('게시판/latest/not_set_board')."</p>";
  14. $skin_dir = rtrim(VIEWPATH, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . DIR_SKIN . DIRECTORY_SEPARATOR . 'latest'. DIRECTORY_SEPARATOR . $skin_name;
  15. $skin_file = $skin_dir . DIRECTORY_SEPARATOR . "skin.php";
  16. // 스킨 폴더나 스킨 파일이 존재하지 않을때
  17. if(! is_dir($skin_dir) OR !is_file($skin_file )) return '<p class="alert alert-danger">'.langs('게시판/latest/not_exist_skin').'</p>';
  18. $cache_name = "board-{$brd_key}-{$rows}-".($get_thumb_img ? 'thumb' : 'nothumb');
  19. $CI->load->library('boardlib');
  20. $data['board'] = $CI->boardlib->get($brd_key, FALSE);
  21. if(empty($data['board']) OR !isset($data['board']['brd_key'])) return '<p class="alert alert-danger">'.langs('게시판/msg/not_exist').'</p>';
  22. if( ! $data['list'] = $CI->cache->get($cache_name) )
  23. {
  24. $CI->db
  25. ->select("P.*, B.brd_title")
  26. ->from('board_post AS P')
  27. ->join("board AS B","B.brd_key=P.brd_key","inner")
  28. ->where('P.brd_key', $brd_key)
  29. ->where('post_status','Y')
  30. ->where('post_notice', 'N')
  31. ->order_by("post_num DESC, post_reply ASC, post_idx ASC")
  32. ->limit(5);
  33. $post_list = $CI->db->get()->Result_array();
  34. foreach($post_list as &$row)
  35. {
  36. $row = $CI->boardlib->post_process($data['board'], $row, "", $file_list);
  37. }
  38. $data['list'] = $post_list;
  39. if(! IS_TEST) {
  40. $CI->cache->save($cache_name, $data['list'], 60*5);
  41. }
  42. }
  43. $data['brd_key'] = $brd_key;
  44. // 스킨 불러오기
  45. $skin = $CI->load->view( DIR_SKIN . DIRECTORY_SEPARATOR . 'latest'. DIRECTORY_SEPARATOR . $skin_name . DIRECTORY_SEPARATOR . "skin.php", $data, TRUE );
  46. return $skin;
  47. }
  48. /**
  49. * 전체 게시판 불러오기
  50. * @param string $skin_name 스킨 이름
  51. * @param array $except_brd_key 제외할 게시판
  52. * @param int $rows 몇줄 불러올지
  53. * @param bool $get_thumb_img 썸네일 이미지 불러올지
  54. * @param bool $extra 추가 입력필드 불러올지
  55. * @param bool $file_list 첨부파일 목록 불러올지
  56. * @param int $cache_time 캐시 저장시간
  57. * @return string
  58. */
  59. function latest_multi($skin_name="", $except_brd_key=array(), $rows=5, $get_thumb_img=FALSE, $cache_time=1)
  60. {
  61. $CI =& get_instance();
  62. if(empty($skin_name)) return "<p class='alert alert-danger'>".langs('게시판/latest/not_set_skin')."</p>";
  63. $skin_dir = rtrim(VIEWPATH, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . DIR_SKIN . DIRECTORY_SEPARATOR . 'latest'. DIRECTORY_SEPARATOR . $skin_name;
  64. $skin_file = $skin_dir . DIRECTORY_SEPARATOR . "skin.php";
  65. // 스킨 폴더나 스킨 파일이 존재하지 않을때
  66. if(! is_dir($skin_dir) OR !is_file($skin_file )) return '<p class="alert alert-danger">'.langs('게시판/latest/not_exist_skin').'</p>';
  67. $cache_name = "board-multiples-{$rows}-".($get_thumb_img ? 'thumb' : 'nothumb');
  68. $CI->load->library('boardlib');
  69. if( ! $data['list'] = $CI->cache->get($cache_name) ) {
  70. // 일반 글 목록 가져오기
  71. if(is_array($except_brd_key) && count($except_brd_key) > 0)
  72. {
  73. foreach( $except_brd_key as $brd_key ) {
  74. $CI->db->where('P.brd_key !=', $brd_key);
  75. }
  76. }
  77. $CI->db
  78. ->select("P.*, PC.bca_name, B.brd_title")
  79. ->where('post_status','Y')
  80. ->where('post_notice', 'N')
  81. ->order_by('post_num DESC, post_reply ASC, post_idx ASC')
  82. ->from('board_post AS P')
  83. ->join("board AS B","B.brd_key=P.brd_key","inner")
  84. ->limit($rows);
  85. $post_list['list'] = $CI->db->get()->result_array();
  86. foreach($post_list['list'] as &$row)
  87. {
  88. $row = $CI->boardlib->post_process($row['brd_key'], $row, "", FALSE);
  89. }
  90. $data['list'] = $post_list['list'];
  91. if(! IS_TEST) {
  92. $CI->cache->save($cache_name, $data['list'], 60*5);
  93. }
  94. }
  95. // 스킨 불러오기
  96. $skin = $CI->load->view( DIR_SKIN . DIRECTORY_SEPARATOR . 'latest'. DIRECTORY_SEPARATOR . $skin_name . DIRECTORY_SEPARATOR . "skin.php", $data, TRUE );
  97. return $skin;
  98. }
  99. /**
  100. * 문의하기 스킨 함수
  101. * @param string $skin_name
  102. * @return string
  103. */
  104. function contact_form($skin_name="",$complete_msg="문의 작성이 완료되었습니다.")
  105. {
  106. $CI =& get_instance();
  107. if( ! $CI->site->config('email_send_address') )
  108. {
  109. return '<p class="alert alert-danger">관리자 이메일 주소가 설정되어 있지 않습니다.<br>[환경설정] > [사이트 기본 설정] 에서 관리자 이메일을 설정해주세요</p>';
  110. }
  111. if( ! filter_var($CI->site->config('email_send_address'), FILTER_VALIDATE_EMAIL))
  112. {
  113. return '<p class="alert alert-danger">관리자 이메일 주소가 올바른 메일 주소가 아닙니다.<br>[환경설정] > [사이트 기본 설정] 에서 관리자 이메일을 설정해주세요</p>';
  114. }
  115. // 스킨 이름을 지정하지 않았을때
  116. if(empty($skin_name)) {
  117. return '<p class="alert alert-danger">스킨 디렉토리가 지정되지 않았습니다.</p>';
  118. }
  119. $skin_dir = rtrim(VIEWPATH, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . DIR_SKIN . DIRECTORY_SEPARATOR . 'contact'. DIRECTORY_SEPARATOR . $skin_name;
  120. $skin_file = $skin_dir . DIRECTORY_SEPARATOR . "skin.php";
  121. // 스킨 폴더나 스킨 파일이 존재하지 않을때
  122. if(! is_dir($skin_dir) OR !is_file($skin_file )) return '<p class="alert alert-danger">지정한 스킨이 존재하지 않습니다.</p>';
  123. // form 태그 세팅
  124. $hidden = array('reurl'=>current_url(), "complete_msg"=>$complete_msg);
  125. $data['form_open'] = form_open('contact', array("id"=>"form-contact", "data-form"=>"contact"), $hidden);
  126. $data['form_close'] = form_close();
  127. // 스킨 불러오기
  128. $skin = $CI->load->view( DIR_SKIN . DIRECTORY_SEPARATOR . 'contact'. DIRECTORY_SEPARATOR . $skin_name . DIRECTORY_SEPARATOR . "skin.php", $data, TRUE );
  129. return $skin;
  130. }
  131. /**
  132. * 아웃로그인 스킨
  133. * @param string $skin_name
  134. * @return string
  135. */
  136. function outlogin($skin_name="") {
  137. $CI =& get_instance();
  138. if(empty($skin_name)) return "<p class='alert alert-danger'>".langs('회원/outlogin/not_set_skin')."</p>";
  139. $skin_dir = rtrim(VIEWPATH, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . DIR_SKIN . DIRECTORY_SEPARATOR . 'outlogin'. DIRECTORY_SEPARATOR . $skin_name;
  140. $skin_file = ($CI->member->is_login()) ? "skin.member.php" : "skin.guest.php";
  141. // 스킨 폴더나 스킨 파일이 존재하지 않을때
  142. if(! is_dir($skin_dir) OR !is_file($skin_dir . DIRECTORY_SEPARATOR .$skin_file )) return '<p class="alert alert-danger">'.langs('회원/outlogin/not_exist_skin').'</p>';
  143. $data = array();
  144. if( ! $CI->member->is_login() )
  145. {
  146. $form_attributes['id'] = "form-outlogin";
  147. $form_attributes['autocomplete'] = "off";
  148. $form_attributes['name'] = "form_login";
  149. $form_attributes['data-role'] = "form-login";
  150. $form_hidden_inputs['reurl'] = set_value('reurl', current_full_url());
  151. $action_url = base_url( 'members/login', SSL_VERFIY ? 'https' : 'http' );
  152. $data['form_open'] = form_open($action_url, $form_attributes, $form_hidden_inputs);
  153. $data['form_close'] = form_close();
  154. }
  155. // 스킨 불러오기
  156. $skin = $CI->load->view( DIR_SKIN . DIRECTORY_SEPARATOR . 'outlogin'. DIRECTORY_SEPARATOR . $skin_name . DIRECTORY_SEPARATOR . $skin_file, $data, TRUE );
  157. return $skin;
  158. }