PluginProbe
Mang Board WP / 2.3.6
Mang Board WP v2.3.6
2.4.0 2.3.9 2.3.8 2.3.7 2.3.6 2.3.5 1.1.8 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 All 95 releases
mangboard / mangboard.php

mangboard.php in Mang Board WP 2.3.6, at mangboard.php

237 lines 9.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: MangBoard WP
4 * Plugin URI: https://www.mangboard.com/
5 * Description: MangBoard WP는 Wordpress에서 게시판을 생성/관리 할 수 있는 기능을 제공합니다
6 * Version: 2.3.6
7 * Author: Hometory
8 * Author URI: https://www.hometory.com/
9 */
10
11 if(!function_exists( 'add_filter' )) return;
12 define("_MB_", true);
13
14 $site_url = site_url();
15 $home_url = home_url();
16 $content_url = content_url();
17 $plugins_url = plugins_url('', __FILE__)."/";
18
19 define("MBW_SITE_URL", $site_url);
20 define("MBW_HOME_URL", $home_url);
21 $auth_site_url = str_replace(array("http://","https://"), "", MBW_HOME_URL);
22 if(strpos($auth_site_url, ':') !== false) $auth_site_url = substr($auth_site_url,0,strpos($auth_site_url, ':'));
23 define("MBW_AUTH_SITE_URL", $auth_site_url);
24 define("MBW_CONTENT_URL", $content_url);
25 define("MBW_PLUGIN_URL", $plugins_url);
26
27 define("MBW_PLUGIN_DIR", "mangboard");
28 define("MBW_UPLOAD_PATH", WP_CONTENT_DIR."/uploads/mangboard/");
29 define("MBW_LOG_PATH", WP_CONTENT_DIR."/uploads/mangboard/log/");
30 define("MBW_PLUGIN_PATH", plugin_dir_path(__FILE__));
31 define("MBW_PLUGIN_FILE", __FILE__);
32
33
34 define("MBW_SECURE_AUTH_COOKIE", "mb_sec_".md5(MBW_AUTH_SITE_URL));
35 define("MBW_AUTH_COOKIE", "mb_".md5(MBW_AUTH_SITE_URL));
36 define("MBW_SHORTCODE_BOARD", "mb_board");
37 define("MBW_QUERY_LOG", false); //디비 쿼리 로그 설정: 관리자>MangBoard>Log 관리
38 define("MBW_PARAM_LOG", false); //파라미터 로그 설정: /wp-content/uploads/mangboard/log/log_xxxxxx.txt
39
40
41 require_once(MBW_PLUGIN_PATH."includes/mb-settings.php");
42 if(empty($mstore)) return;
43
44 if(!function_exists('mbw_init')){
45 function mbw_init(){
46 mbw_add_trace("mbw_init");
47 global $mb_options;
48 global $mstore,$mb_vars;
49 if(function_exists('load_plugin_textdomain')){
50 if($mb_options["wp_multi_language"])
51 load_plugin_textdomain('mangboard', false, MBW_PLUGIN_PATH . '/includes/languages/');
52 }
53 mbw_set_params();
54 if(mbw_get_access_token()==""){
55 mbw_generate_access_token();
56 if($mstore->is_login_cookie()) mbw_refresh_auth_cookie();
57 }
58 global $current_user;
59 if(get_current_user_id()!=0){
60 if(!$mstore->is_login_cookie()){
61 mbw_generate_auth_cookie($current_user->data->user_login,"WP");
62 }else if(!mbw_validate_auth_cookie()){
63 mbw_clear_auth_cookie();
64 mbw_generate_auth_cookie($current_user->data->user_login,"WP");
65 }
66 }else if($mstore->is_login_cookie()){
67 if(mbw_validate_auth_cookie()){
68 $cookie = $mstore->get_login_cookie();
69 $cookie_elements = explode('|', $cookie);
70 list($user_id, $expiration, $hmac, $user_mode) = $cookie_elements;
71 mbw_set_wp_user_data($user_id);
72 if($user_mode=="WP") mbw_logout("MB",false);
73 }else{
74 mbw_clear_auth_cookie();
75 }
76 }
77 mbw_is_permission_level();
78 if(is_admin() && !empty($_GET["page"])){
79 $page_name = $_GET["page"];
80 if(strpos($page_name, 'mbw_')===0 && strpos($page_name, 'mbw_page')!==0 && $page_name!="mbw_dashboard" && $page_name!="mbw_commerce_dashboard" && $page_name!="mbw_commerce_category"){
81 $mstore->set_board_options(mbw_get_admin_board_name());
82 }
83 }
84 }
85 }
86 add_action('init', 'mbw_init', 0);
87
88 // 사용자 javascript 파일 호출
89 if(!function_exists('mbw_load_scripts')){
90 function mbw_load_scripts(){
91 global $mb_scripts,$mb_styles;
92 $mb_scripts[] = mbw_init_javascript();
93 $mb_styles[] = mbw_init_style();
94 if(mbw_get_trace("mbw_print_scripts")!="" && !empty($mb_scripts)){
95 mbw_print_scripts();
96 }
97 }
98 }
99 add_action('wp_enqueue_scripts', 'mbw_load_scripts',1);
100 add_action('admin_enqueue_scripts', 'mbw_load_scripts',1);
101 add_action('login_enqueue_scripts', 'mbw_load_scripts',1);
102 add_action('wp_print_scripts', 'mbw_print_scripts',3);
103 add_action('wp_footer', 'mbw_print_scripts',1);
104
105
106
107 // 관리자 메뉴설정
108 if(!function_exists('mbw_create_board_menu')){
109 function mbw_create_board_menu(){
110 $index = 31;
111 while(!empty($GLOBALS['menu'][$index])) $index++;
112 add_menu_page('MangBoard', 'MangBoard', 'administrator', 'mbw_dashboard', 'mbw_manage_page', plugins_url(MBW_PLUGIN_DIR.'/assets/images/favicon.png'), $index);
113 add_submenu_page('mbw_dashboard', __MW('W_MENU_DASHBOARD'), __MW('W_MENU_DASHBOARD'), 'administrator', 'mbw_dashboard', 'mbw_manage_page');
114 add_submenu_page('mbw_dashboard', __MW('W_MENU_BOARD'), __MW('W_MENU_BOARD'), 'administrator', 'mbw_board_options', 'mbw_manage_board');
115 add_submenu_page('mbw_dashboard', __MW('W_MENU_USER'), __MW('W_MENU_USER'), 'administrator', 'mbw_users', 'mbw_manage_board');
116 add_submenu_page('mbw_dashboard', __MW('W_MENU_OPTION'), __MW('W_MENU_OPTION'), 'administrator', 'mbw_options', 'mbw_manage_board');
117 add_submenu_page('mbw_dashboard', __MW('W_MENU_FILE'), __MW('W_MENU_FILE'), 'administrator', 'mbw_files', 'mbw_manage_board');
118 add_submenu_page('mbw_dashboard', __MW('W_MENU_ANALYTICS'), __MW('W_MENU_ANALYTICS'), 'administrator', 'mbw_analytics', 'mbw_manage_board');
119 add_submenu_page('mbw_dashboard', __MW('W_MENU_REFERER'), __MW('W_MENU_REFERER'), 'administrator', 'mbw_referers', 'mbw_manage_board');
120 add_submenu_page('mbw_dashboard', __MW('W_MENU_LOG'), __MW('W_MENU_LOG'), 'administrator', 'mbw_logs', 'mbw_manage_board');
121 }
122 }
123 add_action('admin_menu', 'mbw_create_board_menu',31);
124 if(!function_exists('mbw_create_board')){
125 function mbw_create_board($args, $content=""){
126 if(!defined('DONOTCACHEPAGE')){ define('DONOTCACHEPAGE', true); }
127 mbw_add_trace("mbw_create_board");
128
129 global $mdb,$mstore;
130 if(!empty($content)) $args["content"] = $content;
131
132 if(!isset($args['name'])){
133 mbw_error_message("MSG_SEARCH_ERROR2", "ShortCode","1000");
134 }else{
135 $args['name'] = mbw_value_filter(trim($args['name']),"name");
136 if(mbw_get_param("board_name")!="" && $args['name']!=mbw_get_param("board_name")){
137 return;
138 }
139 mbw_set_board_params($args);
140 mbw_is_permission_level();
141 }
142
143 if(empty($args['echo'])) ob_start();
144 do_action('mbw_create_board_header',$args);
145 echo '<div class="clear"></div>';
146 /*
147 $theme_name = wp_get_theme();
148 $theme_array = array("Twenty Twenty-Two","Twenty Twenty-Three");
149 if(in_array($theme_name, $theme_array)){
150 if(mbw_get_option("locale")=="ko_KR"){
151 $error_message = '호환성 문제가 있는 �
152 �마에서는 게시판 사용이 불가합니다';
153 }else{
154 $error_message = 'This theme is not supported';
155 }
156 mbw_error_message($error_message.'<div>['.implode(', ',$theme_array).']</div>',"","1104");
157 }
158 */
159 if(defined('ELEMENTOR_PATH')){
160 global $post;
161 if(!empty($post) && !empty($post->ID)){
162 $elementor_edit_mode = get_post_meta( $post->ID, '_elementor_edit_mode' , true);
163 if($elementor_edit_mode=="builder"){
164 $elementor_data = get_post_meta( $post->ID, '_elementor_data' , true);
165 if(strpos($elementor_data, 'settings":{"editor":"<p>[mb_board') !== false){
166 mbw_error_message('엘리멘터에서 제공하는 "숏코드" 아이�
167 �을 이용하여 게시판 숏코드를 �
168 력해 주세요<div style="font-size:14px;padding:8px 0 0;">(게시판 추가방법: <a href="https://www.mangboard.com/tip/?vid=47" target="_blank">https://www.mangboard.com/tip/?vid=47</a>)</div>',"","1104");
169 }
170 }
171 }
172 }
173 if(mbw_get_result_data("state")=="error"){
174 echo mbw_echo_error_message();
175 }else{
176 $MangBoard = new MangBoard($mdb,$mstore);
177 $MangBoard->get_board_panel($args);
178 }
179 do_action('mbw_create_board_footer',$args);
180 if(empty($args['echo'])) return ob_get_clean();
181 }
182 }
183
184 if(!function_exists('mbw_disable_plugin_updates')){
185 function mbw_disable_plugin_updates($value){
186 if(isset($value->response['mangboard/mangboard.php'])){
187 if(get_option("mb_install_product")!="0:0" || get_option("mb_skin_model")!="3:4"){
188 unset($value->response['mangboard/mangboard.php']);
189 }
190 }
191 return $value;
192 }
193 }
194 add_filter('site_transient_update_plugins', 'mbw_disable_plugin_updates');
195
196 if(!function_exists('mbw_check_shortcode')){
197 function mbw_check_shortcode($posts,$query){
198 if(is_admin() && !empty($_GET["page"]) && strpos($_GET["page"], 'mbw_')===0) return $posts;
199 else if(empty($posts) || count($posts)!=1 || mbw_get_trace("mbw_head")!="" || !is_singular()) return $posts;
200 mbw_add_trace("mbw_check_shortcode");
201
202 if(!empty($posts[0])){
203 $post = $posts[0];
204 if(!empty($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"]!="/"){
205 $permalink_structure = get_option('permalink_structure');
206 $request_uri = $_SERVER["REQUEST_URI"];
207
208 if(empty($permalink_structure) || strpos($permalink_structure, '%post_id%')!==false){
209 if(!empty($post->ID) && strpos($request_uri, strval($post->ID))===false){
210 return $posts;
211 }
212 }else if(strpos($permalink_structure, '%postname%')!==false){
213 if(!empty($post->post_name) && strpos(strtolower($request_uri), strtolower($post->post_name))===false){
214 return $posts;
215 }
216 }
217 }
218 global $mb_board_name;
219 if(!empty($post->post_content) && strpos($post->post_content, '['.MBW_SHORTCODE_BOARD." name=") !== false){
220 $post_content = $post->post_content;
221 $index1 = strpos($post_content,'['.MBW_SHORTCODE_BOARD." name=")+16;
222 $index2 = strpos($post_content,"\"",$index1);
223 $board_name = trim(substr($post_content,$index1,$index2-$index1));
224 if(!empty($board_name) && empty($mb_board_name)){
225 $mb_board_name = mbw_value_filter($board_name,"name");
226 mbw_init_board($mb_board_name);
227 }
228 }
229 do_action('mbw_shortcode', $post->post_content);
230 if(mbw_get_trace("mbw_is_permission_level")=="") mbw_is_permission_level();
231 }
232 return $posts;
233 }
234 }
235 add_shortcode(MBW_SHORTCODE_BOARD, 'mbw_create_board');
236 add_filter('the_posts', 'mbw_check_shortcode',10,2);
237 ?>