false, 'per_page' => 20, 'is_category_page' => '', 'no_write' => '' ); add_option('amumu_board_options', $amumu_board_options); $options = get_option( 'amumu_board_options' ); /* if ( empty( $options['is_allow'] ) || $options['is_allow'] == false ) return; */ add_action( 'wp_head', 'amumu_board_head' ); add_action( 'admin_head', 'amumu_board_head' ); wp_enqueue_script("jquery"); } function amumu_sns_init() { $amumu_sns_options = array('is_allow' => false, 'amumu_sns_api_key' => '', 'facebook_app_id' => '', 'allow_page' => '', ); // No options yet? add_option('amumu_sns_options', $amumu_sns_options); $options = get_option( 'amumu_sns_options' ); if ( empty( $options['facebook_app_id'] ) ) return; add_action( 'wp_head', 'amumu_sns_head' ); add_action( 'admin_head', 'amumu_sns_head' ); //wp_enqueue_script("jquery"); } function amumu_board_activate() { //WordPress Amumu Board Create Table amumu_board_install(); } function amumu_deactivation(){ } function amumu_board_install() { global $wpdb,$amumu_board_ver; $table_name = $wpdb->prefix . "amumu_board"; $table_name2 = $wpdb->prefix . "amumu_board_comments"; $sql = "CREATE TABLE IF NOT EXISTS ". $table_name." ( id bigint(20) unsigned NOT NULL auto_increment, `subject` varchar(255) NOT NULL default '', `author_id` varchar(255) default '0', `parent_id` bigint(20) NOT NULL, `author_email` varchar(255) NOT NULL default '', `author_name` varchar(50) default '', `author_pic` varchar(255) default '', `author_url` varchar(255) default '', `date` datetime NOT NULL default '0000-00-00 00:00:00', `text` text, category int(11), passwd varchar(50) default '', file_name varchar(255) default '', is_secret boolean not null default 0, is_notice boolean not null default 0, views int(11) NOT NULL default '0', PRIMARY KEY (id), FULLTEXT(`text`), FULLTEXT(`subject`) ) ENGINE=MYISAM DEFAULT CHARACTER SET = utf8;"; $sql2 = "CREATE TABLE IF NOT EXISTS ". $table_name2 ." ( `id` bigint(20) NOT NULL auto_increment, `parent_id` bigint(20) NOT NULL, `parent_comment_id` bigint(20) NOT NULL, `author_id` varchar(255) default '0', `author_email` varchar(255) NOT NULL default '', `author_name` varchar(50) NOT NULL default '', `author_pic` varchar(255) default '', `author_url` varchar(255) default '', `date` datetime NOT NULL default '0000-00-00 00:00:00', `text` text, `like` int(11) NOT NULL default '0', PRIMARY KEY (id), FULLTEXT(`text`) ) ENGINE=MYISAM DEFAULT CHARACTER SET = utf8;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); dbDelta($sql2); add_option("amumu_board_db_version", $amumu_board_ver); } function amumu_board_uninstall(){ global $wpdb; $drop_table = "DROP TABLE `".$wpdb->prefix."amumu_board`,`".$wpdb->prefix."amumu_board_comments`"; $wpdb->query($drop_table); } function amumu_board_submit_dialog($message, $post_ID, $error = false, $back = '') { if ($error) { $class = 'error amumu-board-submit'; } else { $class = 'updated amumu-board-submit'; } if($back == "back"){ echo '

'. $message . '

확인
'; }else{ echo '

'. $message . '

확인
'; } } function amumu_strlen_utf8($str, $checkmb = false) { preg_match_all('/[\xE0-\xFF][\x80-\xFF]{2}|./', $str, $match); // target for BMP $m = $match[0]; $mlen = count($m); // length of matched characters if (!$checkmb) return $mlen; $count=0; for ($i=0; $i < $mlen; $i++) { $count += ($checkmb && strlen($m[$i]) > 1)?2:1; } return $count; } function amumu_str_to_limit($str, $num = 30){ $str_len = amumu_strlen_utf8($str); if($str_len > $num){ $str_start = mb_substr($str,0,$num); $str_end = "..."; }else{ return $str; } return $str_start.$str_end; } function amumu_board_notice(){ if (function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, AMUMU_BOARD_UPDATE_URL); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 600); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0'); $data = curl_exec($ch); $data = simplexml_load_string($data); curl_close($ch); } else { // curl library is not installed so we better use something else $xml = @wp_remote_get(AMUMU_BOARD_UPDATE_URL); $data = @simplexml_load_string($xml['body']); } if(is_object($data)){ $is_update = false; if($data->version != AMUMU_BOARD_VERSION){ $is_update = true; } if (! current_user_can('manage_options') || $is_update == false ) return; echo "

현재 설치되어 있는 워드프레스 게시판 \"Amumu Board\"의 버전은 ".AMUMU_BOARD_VERSION."이며 버전 {$data->version} 가 새로 배포되었습니다.

"; echo "

다운로드 받으러 가기: $data->download

"; } } function amumu_get_list_count($category, $addsql){ global $wpdb; return $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->prefix."amumu_board WHERE category = ".$category." AND is_notice = 0 AND parent_id = 0".$addsql); } function amumu_get_list($where, $orderby="id", $offset = 0 , $limit = 10, $no){ global $wpdb; $wpdb->show_errors(); $query = "SELECT * FROM ".$wpdb->prefix."amumu_board WHERE 1=1 {$where} ORDER BY {$orderby}"; if( $limit > 0 ) $query .= " LIMIT {$offset}, {$limit}"; $data = $wpdb->get_results( $query ); return $data; } function amumu_get_content_reply_list($post_ID, $parent_id){ global $wpdb; $query = "SELECT * FROM ".$wpdb->prefix."amumu_board WHERE is_notice = 0 AND category = ".$post_ID." AND parent_id = ".$parent_id." ORDER BY id ASC"; $data = $wpdb->get_results( $query ); return $data; } function amumu_get_notice_list($post_ID){ global $wpdb; $query = "SELECT * FROM ".$wpdb->prefix."amumu_board WHERE is_notice = 1 AND category = ".$post_ID." ORDER BY id DESC"; $data = $wpdb->get_results( $query ); return $data; } function amumu_base64_url_encode($input) { return strtr(base64_encode($input), '+/=', '-_,'); } function amumu_base64_url_decode($input) { return base64_decode(strtr($input, '-_,', '+/=')); } function amumu_board_make($content){ global $post,$wpdb,$user_login,$user_email,$user_ID,$amumu_sns_facebook; $amumu_sns_facebook = isset($_SESSION['amumu_sns_facebook']) ? $_SESSION['amumu_sns_facebook'] : $user_ID; $amumu_sns_name = isset($_SESSION['amumu_sns_name']) ? $_SESSION['amumu_sns_name'] : $user_login; $amumu_sns_pic = isset($_SESSION['amumu_sns_pic']) ? $_SESSION['amumu_sns_pic'] : null; $amumu_sns_url = isset($_SESSION['amumu_sns_url']) ? $_SESSION['amumu_sns_url'] : null; $options = get_option( 'amumu_board_options' ); $allow_page = explode(",",$options['is_category_page']); $post_ID = $post->ID; $is_allow = in_array($post_ID,$allow_page); if( $post->post_type =="page" && ( $is_allow && $options['is_allow'] == true ) ) { require_once 'amumu-board-paging.php'; $action = isset($_REQUEST['action']) ? strip_tags($_REQUEST['action']) : null; $submit_type = isset($_REQUEST['submit_type']) ? strip_tags($_REQUEST['submit_type']) : null; $pid = isset($_REQUEST['pid']) ? strip_tags($_REQUEST['pid']) : null; $rid = isset($_REQUEST['rid']) ? strip_tags($_REQUEST['rid']) : null; $passwd = isset($_REQUEST['passwd']) ? strip_tags(trim($_POST['passwd'])) : null; if($submit_type == "add_post" && $action == "add_post"){ if(isset($_FILES['upload_file'])) $is_upload = $_FILES['upload_file']['error']; else $is_upload = 4; $uploadfilename = ""; if($is_upload != 4 && $is_upload == 0){ $uploaddir = AMUMU_BOARD_UPLOAD_DIR; $add_filename = date('Ymd'); //$uploadfile = $uploaddir.urlencode($add_filename."_".$_FILES['upload_file']['name']); //$uploadfilename = urlencode($add_filename."_".$_FILES['upload_file']['name']); $uploadfile = $uploaddir.$add_filename."_".$_FILES['upload_file']['name']; $uploadfilename = $add_filename."_".$_FILES['upload_file']['name']; if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploadfile)) { //echo "파일이 유효하고, 성공적으로 업로드 되었습니다.\n"; }else{ //print "파일 업로드 공격의 가능성이 있습니다!\n"; return amumu_board_submit_dialog("이미지 업로드 실패 관리자에게 문의하세요.",$post_ID,true); } } $is_secret = false; $is_notice = false; $subject = trim($_POST['subject']); $author_id = $_POST['post_author_id'] != 0 ? trim($_POST['post_author_id']) : 0; $author = trim($_POST['post_author']); $author_email = trim($_POST['post_author_email']); $author_pic = isset($_POST['post_author_pic']) ? $_POST['post_author_pic'] : ''; $author_url = isset($_POST['post_author_url']) ? $_POST['post_author_url'] : ''; $message = trim($_POST['message']); $is_secret = isset($_POST['is_secret']) ? $_POST['is_secret'] : ''; $is_notice = isset($_POST['is_notice']) ? $_POST['is_notice'] : ''; if($is_secret == "on") $is_secret = true; if($is_notice == "on") $is_notice = true; $table_name = $wpdb->prefix."amumu_board"; $wpdb->show_errors(); if($author_id != 0){ $rows_affected = $wpdb->query( $wpdb->prepare( " INSERT INTO $table_name (parent_id, subject, author_id, author_name, author_email, author_pic, author_url, date, text, category, is_secret, is_notice, file_name, views ) VALUES ( %d, %s, %s, %s, %s, %s, %s, %s, %s, %d, %d, %d, %s, %d ) ", $rid, $subject, $author_id, $author, $author_email, $author_pic, $author_url, current_time('mysql'), $message, $post_ID, $is_secret, $is_notice, $uploadfilename, 0 ) ); }else if($author_id == 0) { $rows_affected = $wpdb->query( $wpdb->prepare( " INSERT INTO $table_name (parent_id, subject, author_id, author_name, author_email, author_pic, author_url, date, text, category, is_secret, is_notice, views, passwd ) VALUES ( %d, %s, %s, %s, %s, %s, %s, %s, %s, %d, %d, %d, %d , %s) ", $rid, $subject, $author_id, $author, $author_email, $author_pic, $author_url, current_time('mysql'), $message, $post_ID, $is_secret, $is_notice, 0, $passwd ) ); } if($rows_affected == 1){ return amumu_board_submit_dialog("저장되었습니다.",$post_ID,true); }else{ return amumu_board_submit_dialog("DataBase 오류 입니다.",$post_ID,true); } }else if($submit_type == "edit_post" && $action == "edit_post"){ $subject = trim($_POST['subject']); $author_id = $_POST['post_author_id'] != 0 ? trim($_POST['post_author_id']) : 0; $message = trim($_POST['message']); $pid = trim($_POST['pid']); $table_name = $wpdb->prefix."amumu_board"; $wpdb->show_errors(); if($author_id == 1) { $rows_affected = $wpdb->query( $wpdb->prepare( " UPDATE $table_name SET subject = %s, text = %s WHERE id = %d ", $subject, $message, $pid ) ); }else{ $rows_affected = $wpdb->query( $wpdb->prepare( " UPDATE $table_name SET subject = %s, text = %s WHERE id = %d AND author_id = %d ", $subject, $message, $pid, $author_id ) ); } if($rows_affected == 1){ return amumu_board_submit_dialog("저장되었습니다.",$post_ID,true); }else{ return amumu_board_submit_dialog("DataBase 오류 입니다.",$post_ID,true); } } if($action == "add_post"){ $readonly = ""; $author_email = ""; if(current_user_can('manage_options')){ $author_name = $user_login; $author_email = $user_email; $amumu_sns_facebook = $user_ID; $amumu_sns_pic = ""; $amumu_sns_url = ""; $readonly = "readonly"; }else if($amumu_sns_facebook != 0) { $author_name = $_SESSION['amumu_sns_name']; $author_email = $_SESSION['amumu_sns_email']; $readonly = "readonly"; }else{ $author_name = ""; } //wp_editor( '바른말을 씁시다.', 'editor', array('media_buttons' => false, 'textarea_name' => 'message', 'textarea_rows' => 15, 'tinymce' => false)); $content = "
"; $content .= "
"; $content .= ""; $content .= amumu_get_password(); $content .= amumu_get_secret(); $content .= amumu_get_notice(); $content .= amumu_get_upload_file(); $content .= "
".__("제목", "amumu_board")."
".__("작성자", "amumu_board")."
".__("이메일", "amumu_board")."
저장
"; $content .= "
".amumu_board_menu()."
"; $content .= "
"; }else if($action == "edit_post") { if( $passwd != null){ $result = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid." and passwd='".$passwd."' AND author_id = '".$amumu_sns_facebook."'"); if(!$result){ return amumu_board_submit_dialog("일치하는 정보가 없습니다.",$post_ID,true); } } if(current_user_can('manage_options')){ $post_data = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid); }else if($amumu_sns_facebook != 0){ $post_data = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid." and author_id= ".$amumu_sns_facebook); }else if($amumu_sns_facebook == 0){ $post_data = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid." and passwd='".$passwd."'"); } if(sizeof($post_data) == 0){ return amumu_board_submit_dialog("잘못된 접근입니다.",$post_ID,true); } $subj = htmlentities($post_data->subject, $quote_style = ENT_QUOTES,'UTF-8'); $content = "
"; $content .= "
"; $content .= "
".__("제목", "amumu_board")."
".__("작성자", "amumu_board")."
저장
".amumu_board_menu()."
"; }else if($action == "del_post") { if($passwd != null && $amumu_sns_facebook == 0){ $result = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid." AND passwd = '".$passwd."' AND author_id = '".$amumu_sns_facebook."'"); if(!$result){ return amumu_board_submit_dialog("일치하는 정보가 없습니다.",$post_ID,true); } $wpdb->show_errors(); $rows_affected = $wpdb->query("DELETE FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid." AND passwd = '".$passwd."' AND author_id = '".$amumu_sns_facebook."'"); if($rows_affected == 1){ return amumu_board_submit_dialog("삭제 되었습니다.",$post_ID,true); }else{ return amumu_board_submit_dialog("DataBase 오류 입니다.",$post_ID,true); } }else{ $wpdb->show_errors(); if(current_user_can('manage_options')){ $rows_affected = $wpdb->query("DELETE FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid); }else{ $rows_affected = $wpdb->query("DELETE FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid." AND author_id = ".$amumu_sns_facebook); } if($rows_affected == 1){ return amumu_board_submit_dialog("삭제 되었습니다.",$post_ID,true); }else{ return amumu_board_submit_dialog("DataBase 오류 입니다.",$post_ID,true); } } }else if($action == "view") { //글 상세 보기 $posts = amumu_get_board_content($pid); //비밀글 처리 if($posts->is_secret){ $checked_pw = false; if($submit_type == "check_pw"){ $result = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->prefix."amumu_board WHERE category=".$post->ID." AND (id=".$pid." AND passwd='".strip_tags($_POST['secret_passwd'])."')"); if($result == 1){ $checked_pw = true; }else{ $checked_pw = false; } } if( (current_user_can('manage_options') || ( $amumu_sns_facebook == $posts->author_id && $amumu_sns_facebook != 0 ) || $checked_pw == true) ){ }else if($amumu_sns_facebook != $posts->author_id || $posts->author_id != 0){ return amumu_board_submit_dialog("비밀글은 작성자와 관리자만 확인 할 수 있습니다.",$post_ID,true); }else{ $message = "비밀번호를 입력해 주시기 바랍니다."; $content = "
". $message . "
ID,strip_tags($pid))."' method='post'>확인
"; return $content; } } // 조회수 올라가는 부분 $wpdb->query("UPDATE ".$wpdb->prefix."amumu_board SET views = views+1 WHERE id = ".$pid); $posts = amumu_get_board_content($pid); if($posts->author_pic != ""){ $content .= "

".$posts->author_name."".$posts->date." 조회수 : ".$posts->views."

".stripslashes($posts->subject)."

"; $content .= "
"; }else{ $content .= "

".get_avatar( $posts->author_email, $size = '48' )."".$posts->author_name."".$posts->date." 조회수 : ".$posts->views."

".stripslashes($posts->subject)."

"; $content .= "
"; } $content .= "
"; $content .= stripslashes(nl2br($posts->text)); //$txt = amumu_my_nl2br($txt); $content .= "
"; $attachment = ""; if($posts->file_name != ''){ $attachment = "

첨부파일 : ".urldecode($posts->file_name)."

"; } $content .= $attachment; $action_del = get_amumu_board_link('del_post',$post_ID,$pid,true); $action_edit = get_amumu_board_link('edit_post',$post_ID,$pid,true); $input_passwd_del = ""; $input_passwd_edit = ""; $content .= "
".$input_passwd_del.$input_passwd_edit.amumu_board_menu_in($pid,$posts->author_id,$posts->parent_id).amumu_board_menu()."
"; $no_table = true; $reply_list = amumu_get_reply_content($pid); if(sizeof($reply_list) == 0) $no_table = false; $content .="
"; if($no_table){ for($i = 0; $i < sizeof($reply_list); $i++){ $content .= "
"; $content .= "
"; if($reply_list[$i]->author_pic != ""){ $content .= " ".$reply_list[$i]->author_name.""; }else{ $content .= "".get_avatar( $reply_list[$i]->author_email, $size = '48' )." ".$reply_list[$i]->author_name.""; } $content .= "".$reply_list[$i]->date.""; if($amumu_sns_facebook != null){ $content .= " 답글"; } $content .= amumu_board_menu_reply($pid,$reply_list[$i]->author_id,$reply_list[$i]->id); $content .= ""; $content .= "
"; $content .= "
"; $content .= "

".nl2br(stripslashes($reply_list[$i]->text))."

"; $content .= ""; $content .= ""; $content .= "
"; $content .= "
"; $reply_reply_list = amumu_get_reply_reply_content($pid,$reply_list[$i]->id); if(sizeof($reply_reply_list) != 0){ for($j = 0; $j < sizeof($reply_reply_list); $j++){ $content .= "
"; $content .= "
"; if($reply_reply_list[$j]->author_pic != ""){ $content .= " ".$reply_reply_list[$j]->author_name.""; }else{ $content .= "".get_avatar( $reply_reply_list[$j]->author_email, $size = '48' )." ".$reply_reply_list[$j]->author_name.""; } $content .= "".$reply_reply_list[$j]->date.""; $content .= amumu_board_menu_reply($pid,$reply_reply_list[$j]->author_id,$reply_reply_list[$j]->id); $content .= ""; $content .= "
"; $content .= "
"; $content .= "

".nl2br(stripslashes($reply_reply_list[$j]->text))."

"; $content .= ""; $content .= ""; $content .= "
"; $content .= "
"; } } } }; $content .="
"; if($amumu_sns_facebook != 0 || current_user_can('manage_options')){ $amumu_sns_email = ""; if(current_user_can('manage_options')){ $amumu_sns_facebook = $user_ID; $amumu_sns_name = $user_login; $amumu_sns_pic = ""; $amumu_sns_email = $user_email; $amumu_sns_email_hash = md5( $user_email ); } $content .= "
댓글입력 "; $content .= "
"; $content .= "
답글입력 취소 "; $content .= "
"; }else{ $content .= "
"; $content .= "
"; } $content .= "
"; }else{ // 시간순정렬관련 $orderby = isset( $_REQUEST['orderby'] ) ? strip_tags($_REQUEST['orderby']) : 'DESC'; $keyword = isset( $_REQUEST['keyword'] ) ? strip_tags($_REQUEST['keyword']) : ''; $addsql = ""; $addsql = $keyword == '' ? "" : " AND ( `subject` like '%$keyword%' OR `text` like '%$keyword%' )"; // 카테고리 명 $category = $post->ID; // paging $this_page = isset( $_REQUEST['this_page'] ) ? strip_tags($_REQUEST['this_page']) : 1; $page_id = isset( $_REQUEST['page_id'] ) ? strip_tags($_REQUEST['page_id']) : ''; $total_count = amumu_get_list_count($category,$addsql); $num_per_page = $options['per_page']; $paging = new amumu_paging( $total_count, $this_page, array( 'page_id' => $page_id, 'orderby' => $orderby, 'keyword' => $keyword ), $num_per_page, 5 ); $no = $paging->no; // 출력데이터 $data = amumu_get_list("AND category = ".$post->ID." AND is_notice =0 AND parent_id = 0".$addsql, "id ".$orderby, $paging->offset, $paging->size, $no); // 알림글 리스트업 고정 시작 $notice_list = amumu_get_notice_list($post_ID); $allow_page = explode(",",$options['is_category_page']); $post_ID = $post->ID; $is_allow = in_array($post_ID,$allow_page); $amumu_board_plugin_url = WP_PLUGIN_URL."/amumu-board/"; $num_post = sizeof($data); $num_notice = sizeof($notice_list); if( $num_post != 0 || $num_notice != 0 ){ $content .= amumu_board_menu_login(); $content .= "
"; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; if(sizeof($notice_list) != 0 ){ for ($i=0; $i date); if($notice_list[$i]->is_secret) $is_secret = true; $content .= ""; $content .= " "; $content .= " "; } } // 알림글 리스트업 고정 끝 for($i = 0; $i < $num_post ; $i++){ $date = explode(" ",$data[$i]->date); $is_secret = false; if($data[$i]->is_secret) $is_secret = true; $attachment = ""; if($data[$i]->file_name != '') $attachment = " "; $author_name = amumu_str_to_limit($data[$i]->author_name,15); $content .= ""; if($is_secret){ $content .= " "; }else{ $content .= " "; } $content .= " "; $content_reply_list = amumu_get_content_reply_list($post_ID,$data[$i]->id); if(sizeof($content_reply_list) != 0){ for($j = 0; $j < sizeof($content_reply_list); $j++){ $reply_author_name = amumu_str_to_limit($content_reply_list[$j]->author_name,15); $date = explode(" ",$content_reply_list[$j]->date); $content .= ""; if($is_secret){ $content .= ""; }else{ $content .= " "; } $content .= " "; } } $no--; } $content .= ""; $content .= "
No제목작성자날짜조회수
id)."'>".amumu_str_to_limit(stripslashes($notice_list[$i]->subject),25)."".amumu_get_reply_count($notice_list[$i]->id)."".$notice_list[$i]->author_name." ".$date[0]." ".$notice_list[$i]->views."
".$no."비밀글 : id)."'>".amumu_str_to_limit(stripslashes($data[$i]->subject),25)."".amumu_get_reply_count($data[$i]->id).$attachment."- ".$author_name."id)."'>".amumu_str_to_limit(stripslashes($data[$i]->subject),25)."".amumu_get_reply_count($data[$i]->id).$attachment."- ".$author_name."".$author_name." ".$date[0]." ".$data[$i]->views."
비밀글 : id)."'>".amumu_str_to_limit($content_reply_list[$j]->subject,20)."".amumu_get_reply_count($content_reply_list[$j]->id)."- ".$reply_author_name." id)."'>".amumu_str_to_limit($content_reply_list[$j]->subject,20)."".amumu_get_reply_count($content_reply_list[$j]->id)."- ".$reply_author_name."".$reply_author_name." ".$date[0]." ".$content_reply_list[$j]->views."
"; $content .= "
".$paging->amumu_get_paging()."
"; $content .= "
".amumu_board_search()."
"; $content .= "
"; }else{ // 작성된 글이 없을 경우 $content .= amumu_board_menu_login(); $content .= "
"; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= ""; $content .= "
No제목작성자날짜조회수
작성된 글이 없습니다.
"; $content .= "
".$paging->amumu_get_paging()."
"; $content .= "
".amumu_board_search()."
"; $content .= "
"; } } } return $content; } function amumu_sns_comment($content) { global $post, $amumu_sns_facebook; $options = get_option( 'amumu_sns_options' ); //$amumu_sns_facebook = isset($_SESSION['amumu_sns_facebook']) ? $_SESSION['amumu_sns_facebook'] : null; $allow_page = explode(",",$options['allow_page']); $is_allow = in_array($post->ID,$allow_page); if( is_single() == 1 && ( $post->post_type !="page" && is_home() == 0) || $is_allow ) { if ($options['is_allow']) { $amumu_sns_thumbnail = amumu_getImg($content); //$amumu_sns_comment_excerpt = amumu_sns_excerpt_max_charlength(140); $amumu_sns_post_id = $post->ID; $amumu_sns_plugin_url = WP_PLUGIN_URL.'/amumu-board/'; $amumu_sns_comment = '

소셜계정으로 로그인 후 작성하세요

140 / 140
powered by AMUMUSNS

전체댓글수'.$post->comment_count.'

'; $amumu_sns_comment .= $amumu_sns_last_comment = amumu_sns_content($amumu_sns_post_id); $amumu_sns_comment .= '
MORE
'; if($amumu_sns_thumbnail != ''){ echo "
"; }else{ echo "
"; } $content .= $amumu_sns_comment; } } return $content; } function amumu_board_menu_login(){ $menu = ""; $menu .= "

"; return $menu; } function amumu_board_menu_reply($pid= '', $author_id = '', $reply_id){ global $amumu_sns_facebook; $menu = ""; if (($amumu_sns_facebook != 0 && $amumu_sns_facebook == $author_id) || current_user_can('manage_options')) { $menu .= ""; $menu .= "" .__("수정", "amumu_board").""; $menu .= "".__("삭제", "amumu_board").""; $menu .= ""; } return $menu; } function amumu_board_insert_comment(){ global $wpdb; $wpdb->show_errors(); $table_name = $wpdb->prefix."amumu_board_comments"; $content = $_POST['text']; $author_id = $_POST['author_id']; $author_name = $_POST['author_name']; $author_pic = $_POST['author_pic']; $author_email = $_POST['author_email']; $parent_id = $_POST['parent_id']; $parent_comment_id = $_POST['parent_comment_id']; $rows_affected = $wpdb->query( $wpdb->prepare( " INSERT INTO $table_name ( parent_id, parent_comment_id, author_id, author_name, author_pic, author_email, date, text, `like` ) VALUES ( %d, %d, %s, %s, %s, %s, %s, %s, %d ) ", $parent_id, $parent_comment_id, $author_id, $author_name, $author_pic, $author_email, current_time('mysql'), $content, 0 ) ); $reply_data = $wpdb->get_row("SELECT id, date FROM ".$table_name." ORDER BY id DESC LIMIT 1"); $reply_id = $reply_data->id; $date = $reply_data->date; if($rows_affected){ echo json_encode(array("result"=> 1, "reply_id" => $reply_id, "parent_comment_id" => $parent_comment_id, "date" => $date)); die(); }else{ echo json_encode(array("result"=> 0)); die(); } } add_action('wp_ajax_nopriv_amumu_board_insert_comment','amumu_board_insert_comment'); add_action('wp_ajax_amumu_board_insert_comment','amumu_board_insert_comment'); function amumu_board_delete_comment(){ global $wpdb; $table_name = $wpdb->prefix."amumu_board_comments"; $comment_ID = strip_tags($_POST['comment_ID']); $reply_author_id = $wpdb->get_var("SELECT author_id FROM ".$table_name." WHERE id = ".$comment_ID); if($_SESSION['amumu_sns_facebook'] == $reply_author_id || current_user_can('manage_options')){ $result = $wpdb->query("DELETE FROM ".$table_name." WHERE id =".$comment_ID); $wpdb->query("DELETE FROM ".$table_name." WHERE parent_comment_id =".$comment_ID); }else{ $result = FALSE; } if($result){ echo json_encode(array("result"=> 1)); die(); }else{ echo json_encode(array("result"=> 0)); die(); } } add_action('wp_ajax_nopriv_amumu_board_delete_comment','amumu_board_delete_comment'); add_action('wp_ajax_amumu_board_delete_comment','amumu_board_delete_comment'); function amumu_board_update_comment(){ global $wpdb; $table_name = "wp_amumu_board_comments"; $wpdb->show_errors(); $content = $_POST['text']; $reply_id = $_POST['reply_id']; $rows_affected = $wpdb->query( $wpdb->prepare( " UPDATE $table_name SET text = %s, date = %s WHERE id = %d ", $content, current_time('mysql'), $reply_id ) ); if($rows_affected){ echo json_encode(array("result"=> 1)); die(); }else{ echo json_encode(array("result"=> 0)); die(); } } add_action('wp_ajax_nopriv_amumu_board_update_comment','amumu_board_update_comment'); add_action('wp_ajax_amumu_board_update_comment','amumu_board_update_comment'); function amumu_get_board_content($pid){ global $wpdb; if($pid){ $posts = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."amumu_board WHERE id = ".$pid); return $posts; }else{ return false; } } function amumu_get_reply_content($pid = ''){ global $wpdb; return $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."amumu_board_comments WHERE parent_id = ".$pid." AND parent_comment_id = 0 ORDER BY `date` ASC"); } function amumu_get_reply_reply_content($pid = '', $parent_comment_id){ global $wpdb; return $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."amumu_board_comments WHERE parent_id = ".$pid." AND parent_comment_id = ".$parent_comment_id." ORDER BY `date` ASC"); } function amumu_my_nl2br($string){ $string = str_replace("\n", "
", $string); if(preg_match_all('/\(.*?)\<\/pre\>/', $string, $match)){ foreach($match as $a){ foreach($a as $b){ $string = str_replace('
'.$b.'
', "
".str_replace("
", "", $b)."
", $string); } } } return $string; } function amumu_get_password(){ global $user_ID, $amumu_sns_facebook; $out = ""; if($amumu_sns_facebook == 0){ $out = " 비밀번호 "; } return $out; } function amumu_get_secret(){ $out = ""; if(!current_user_can('manage_options')){ $out = " 비밀글 "; } return $out; } function amumu_get_notice(){ $out = ""; if(current_user_can('manage_options')){ $out = " 알림글 "; } return $out; } function amumu_get_upload_file(){ global $amumu_sns_facebook; $out = ""; if($amumu_sns_facebook != 0 || current_user_can('manage_options')){ $out = " 첨부파일 "; } return $out; } function amumu_board_menu(){ global $post; $options = get_option('amumu_board_options'); $no_write = explode(",",$options['no_write']); if(!in_array($post->ID, $no_write) || current_user_can('manage_options')){ $menu = "ID)."'>".__("목록", "amumu_board").""; $menu .= "ID)."'>".__("글쓰기", "amumu_board").""; }else{ $menu = "ID)."'>".__("목록", "amumu_board").""; } return $menu; } function amumu_board_search(){ global $post; $menu ="
"; $menu .= ""; $menu .= "ID)."' id='amumu_board_search_submit'>".__("검색", "amumu_board").""; $menu .=amumu_board_menu(); $menu .="
"; return $menu; } function amumu_board_menu_in($pid= '', $author_id = '', $parent_id = 0){ global $post,$amumu_sns_facebook; $menu = ""; if (($amumu_sns_facebook != 0 && $amumu_sns_facebook == $author_id) || (current_user_can('manage_options') && $pid != '')) { if(current_user_can('manage_options') && $pid != '' && $parent_id == 0) { $menu .= "ID,$pid,false,true)."'>답글"; } $menu .= "ID,$pid)."'>수정"; $menu .= "ID,$pid)."'>삭제"; }else if($amumu_sns_facebook == 0 && $author_id == 0){ $menu .= "수정"; $menu .= "삭제"; } return $menu; } function get_amumu_board_link($action, $post_ID = 0, $pid = 0, $is_member = false, $is_reply = false){ $options = get_option('permalink_structure'); if($options['option_value'] == ''){ $permalink_option = "&"; }else{ $permalink_option = "?"; } switch ($action) { case "view": return get_permalink($post_ID).$permalink_option."action=view&pid=".$pid; break; case "post_list": return get_permalink($post_ID); break; case "add_post": if($is_reply){ return get_permalink($post_ID).$permalink_option."action=add_post&rid=".$pid; }else{ return get_permalink($post_ID).$permalink_option."action=add_post"; } break; case "edit_post": if($is_member){ return get_permalink($post_ID).$permalink_option."action=edit_post&pid=".$pid."&passwd=passwd"; }else{ return get_permalink($post_ID).$permalink_option."action=edit_post&pid=".$pid; } case "del_post": if($is_member){ return get_permalink($post_ID).$permalink_option."action=del_post&pid=".$pid."&passwd=passwd"; }else{ return get_permalink($post_ID).$permalink_option."action=del_post&pid=".$pid; } break; case "del_reply": return get_permalink($post_ID).$permalink_option."action=del_reply&pid=".$pid; break; default : return get_permalink($post_ID); } } function get_amumu_permal_link(){ $options = get_option('permalink_structure'); if($options['option_value'] == ''){ $permalink_option = "&"; }else{ $permalink_option = "?"; } return $permalink_option; } function amumu_get_reply_count($id){ global $wpdb; $count = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->prefix."amumu_board_comments WHERE parent_id = ".(int)$id); if(!$count) { $count = ""; }else{ $count = " [".$count."]"; } return $count; } function amumu_board_list($post_ID){ global $wpdb; $options = get_option('amumu_board_options'); $board_list = explode(",",$options['is_category_page']); $board_nav = "
"; for ($i=0; $i get_var("SELECT post_title FROM ".$wpdb->prefix."posts WHERE id =".$board_list[$i]); $board_count = $wpdb->get_var("SELECT COUNT(id) FROM ".$wpdb->prefix."amumu_board WHERE category =".$board_list[$i]); if($post_ID == $board_list[$i]){ $board_nav .= " ".$board_title."[".$board_count."] ,"; }else{ $board_nav .= " ".$board_title."[".$board_count."] |"; } } $board_nav = substr($board_nav,0,strlen($board_nav) -2); $board_nav .= "
"; return $board_nav; } function amumu_board_page_list(){ global $wpdb; $page_list = $wpdb->get_results("SELECT post_title,ID FROM ".$wpdb->prefix."posts WHERE post_type='page'"); $output = "\n"; echo $output; } function amumu_board_nowrite_list(){ global $wpdb; $option = get_option('amumu_board_options'); $page_list = $wpdb->get_results("SELECT post_title,ID FROM ".$wpdb->prefix."posts WHERE post_type='page' AND ID in (".$option['is_category_page'].")"); $output = "\n"; echo $output; } function amumu_board_list_admin(){ global $wpdb; $option = get_option('amumu_board_options'); $where_in = $option['is_category_page']; $page_list = $wpdb->get_results("SELECT post_title,ID FROM ".$wpdb->prefix."posts WHERE post_type='page' AND ID in (".$where_in.")"); $output = "\n"; echo $output; } function amumu_sns_insert_comment(){ global $wpdb; $insert_date = time(); $return_date = date('Y-m-d H:i:s',$insert_date); $table_name = "wp_comments"; $table_name_meta = "wp_commentmeta"; $comment_post_ID = strip_tags($_POST['page_ID']); $comment_author = strip_tags($_POST['name']); $comment_author_email = ""; $comment_author_url = strip_tags($_POST['profile_link']); $comment_author_IP = ""; $comment_date = $return_date; $comment_date_gmt = $return_date; $comment_content = strip_tags($_POST['comment']); $comment_karma = ""; $comment_approved = 1; $comment_agent = strip_tags($_POST['comment_author']); $comment_type = strip_tags($_POST['comment_type']); $comment_parent = 0; $user_id = 0; $wpdb->show_errors(); $rows_affected = $wpdb->insert( $table_name, array( 'comment_post_ID' => $comment_post_ID , 'comment_author' => $comment_author, 'comment_author_email' => $comment_author_email, 'comment_author_url' => $comment_author_url, 'comment_date' => $comment_date, 'comment_date_gmt' => $comment_date_gmt, 'comment_content' => $comment_content, 'comment_karma' => $comment_karma , 'comment_approved' => $comment_approved , 'comment_agent' => $comment_agent , 'comment_type' => $comment_type , 'comment_parent' => $comment_parent , 'user_id' => $user_id ) ); if($wpdb->insert_id){ wp_update_comment_count( $comment_post_ID ); $table_name = "wp_commentmeta"; $meta_key = "amumu-sns-pic"; $meta_value = strip_tags($_POST['pic']); $comment_id = $wpdb->insert_id; $rows_affected_meta = $wpdb->insert( $table_name_meta, array( 'meta_key' => $meta_key , 'meta_value' => $meta_value, 'comment_id' => $comment_id ) ); } echo json_encode(array("result"=> 1, "plugins_url"=>WP_PLUGIN_URL."/amumu-board/", "date"=>$return_date, "comment_id"=>$comment_id)); die(); } add_action('wp_ajax_nopriv_amumu_sns_insert_comment','amumu_sns_insert_comment'); add_action('wp_ajax_amumu_sns_insert_comment','amumu_sns_insert_comment'); function amumu_sns_delete_comment(){ global $wpdb, $amumu_sns_facebook; //$amumu_sns_facebook = isset($_SESSION['amumu_sns_facebook']) ? $_SESSION['amumu_sns_facebook'] : null; $table_name = "wp_comments"; $table_name_meta = "wp_commentmeta"; $comment_ID = $_POST['comment_ID']; $comment_id = $_POST['comment_ID']; if($amumu_sns_facebook != 0 || current_user_can('manage_options')){ if(wp_delete_comment($comment_ID)){ $result = delete_comment_meta($comment_id,'amumu-sns-pic'); } }else{ $result = FALSE; } if($result){ echo json_encode(array("result"=> 1)); die(); }else{ echo json_encode(array("result"=> 0)); die(); } } add_action('wp_ajax_nopriv_amumu_sns_delete_comment','amumu_sns_delete_comment'); add_action('wp_ajax_amumu_sns_delete_comment','amumu_sns_delete_comment'); function amumu_sns_more_comment(){ global $wpdb, $amumu_sns_facebook; //$amumu_sns_facebook = isset($_SESSION['amumu_sns_facebook']) ? $_SESSION['amumu_sns_facebook'] : null; $offset = $_POST['page_offset'].",10"; $output_reply = ""; $comment_post_ID = $_POST['page_ID']; $wpdb->show_errors(); $data = $wpdb->get_results( "SELECT comment.*, meta.meta_value AS 'comment_pic' FROM wp_comments AS `comment` JOIN wp_commentmeta AS meta ON comment.comment_ID = meta.comment_id WHERE comment.comment_post_ID = ".$comment_post_ID." and comment.comment_approved = 1 ORDER BY comment_date_gmt DESC LIMIT ".$offset ); if(sizeof($data) == 0){ echo "nohave"; die(); }else{ for ($i=0; $i < sizeof($data); $i++) { $output_reply .= '
썸네일'; $output_reply .= '
'; $output_reply .= '
'; $output_reply .= '
f'.$data[$i]->comment_author.''.$data[$i]->comment_date_gmt.''; if($amumu_sns_facebook == $data[$i]->comment_agent || current_user_can('manage_options')){ $output_reply .= '삭제'; } $output_reply .= '

'; $output_reply .= amumu_sns_nl2br($data[$i]->comment_content); $output_reply .= '

'; } echo $output_reply; die(); } } add_action('wp_ajax_nopriv_amumu_sns_more_comment','amumu_sns_more_comment'); add_action('wp_ajax_amumu_sns_more_comment','amumu_sns_more_comment'); function amumu_sns_logout(){ unset($_SESSION['amumu_sns_facebook']); unset($_SESSION['amumu_sns_name']); unset($_SESSION['amumu_sns_email']); unset($_SESSION['amumu_sns_type']); unset($_SESSION['amumu_sns_pic']); unset($_SESSION['amumu_sns_url']); $result = WP_PLUGIN_URL."/amumu-board/image/img_ssome.gif"; if($result){ echo json_encode(array("result"=> 1, "url"=> $result, "amumu_sns_facebook"=> $_SESSION['amumu_sns_facebook'])); die(); }else{ echo json_encode(array("result"=> 0)); die(); } } add_action('wp_ajax_nopriv_amumu_sns_logout','amumu_sns_logout'); add_action('wp_ajax_amumu_sns_logout','amumu_sns_logout'); function amumu_sns_login(){ $amumu_sns_type = $_POST['amumu_sns_type']; $amumu_sns_id = $_POST['amumu_sns_id']; $amumu_sns_name = $_POST['amumu_sns_name']; $amumu_sns_email = $_POST['amumu_sns_email']; $amumu_sns_pic = $_POST['amumu_sns_pic']; $amumu_sns_url = $_POST['amumu_sns_url']; if($amumu_sns_type == 'facebook') { $_SESSION['amumu_sns_type'] = $amumu_sns_type; $_SESSION['amumu_sns_facebook'] = $amumu_sns_id; $_SESSION['amumu_sns_name'] = $amumu_sns_name; $_SESSION['amumu_sns_email'] = $amumu_sns_email; $_SESSION['amumu_sns_pic'] = $amumu_sns_pic; $_SESSION['amumu_sns_url'] = $amumu_sns_url; } if(isset($_SESSION['amumu_sns_facebook'])){ echo json_encode(array("result"=> 1)); die(); }else{ echo json_encode(array("result"=> 0)); die(); } } add_action('wp_ajax_nopriv_amumu_sns_login','amumu_sns_login'); add_action('wp_ajax_amumu_sns_login','amumu_sns_login'); function amumu_sns_page_list(){ global $wpdb; $page_list = $wpdb->get_results("SELECT post_title,ID FROM wp_posts WHERE post_type='page'"); $output = "\n"; echo $output; } function amumu_getImg($content) { $img = ""; preg_match("]*>", $content, $imgTag); if($imgTag[0]){ if( stristr($imgTag[0], "http://") ) { preg_match("/http:\/\/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[0], $imgName); $img = $imgName[0]; } else { preg_match("/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[0], $imgName); $img = $imgName[0]; } } /* if($imgTag) { if( stristr($imgTag[2], "http://") ) { preg_match("/http:\/\/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[2], $imgName); $img = $imgName[0]; } else { preg_match("/.*\.(jp[e]?g|gif|png)/Ui", $imgTag[2], $imgName); $img = $imgName[0]; } } */ return $img; } function amumu_sns_excerpt_max_charlength($charlength) { global $post,$wpdb; $content = $post->post_content; $excerpt = sanitize_text_field($content); $charlength++; if ( mb_strlen( $excerpt ) > $charlength ) { $subex = mb_substr( $excerpt, 0, $charlength - 5 ); $exwords = explode( ' ', $subex ); $excut = - ( mb_strlen( $exwords[ count( $exwords ) - 1 ] ) ); if ( $excut < 0 ) { $excerpt = mb_substr( $subex, 0, $excut ); } else { $excerpt = $subex; } return $excerpt."[...]"; } else { return $excerpt; } } function amumu_sns_content($post_ID){ global $wpdb, $amumu_sns_facebook; $data = $wpdb->get_results( "SELECT comment.*, meta.meta_value AS 'comment_pic' FROM wp_comments AS `comment` JOIN wp_commentmeta AS meta ON comment.comment_ID = meta.comment_id WHERE comment.comment_post_ID = ".$post_ID." and comment.comment_approved = 1 ORDER BY comment_date_gmt DESC LIMIT 10" ); for ($i=0; $i < sizeof($data); $i++) { $output_reply .= '
썸네일'; $output_reply .= '
'; $output_reply .= '
'; $output_reply .= '
f'.$data[$i]->comment_author.'
'.$data[$i]->comment_date_gmt.''; if($amumu_sns_facebook == $data[$i]->comment_agent || current_user_can('manage_options')){ $output_reply .= '삭제'; } $output_reply .= '

'; $output_reply .= amumu_sns_nl2br($data[$i]->comment_content); $output_reply .= '

'; } return $output_reply; } function amumu_sns_comment_count($comment_post_ID){ global $wpdb; $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = ".$comment_post_ID." and comment_approved = 1;" ) ); echo $result; } function amumu_sns_nl2br($string){ $string = str_replace("\n", "
", $string); if(preg_match_all('/\(.*?)\<\/pre\>/', $string, $match)){ foreach($match as $a){ foreach($a as $b){ $string = str_replace('
'.$b.'
', "
".str_replace("
", "", $b)."
", $string); } } } return $string; } function amumu_sns_close_wp_comments($comments) { return null; } add_filter('comments_array','amumu_sns_close_wp_comments'); function amumu_sns_set_wp_comment_status ( $posts ) { $options = get_option('amumu_sns_options'); $allow_page = explode(",",$options['allow_page']); $post_ID = $posts[0]->ID; $is_allow = in_array($post_ID,$allow_page); if($is_allow){ if ( ! empty( $posts ) && is_singular() ) { $posts[0]->comment_status = 'open'; $posts[0]->post_status = 'open'; } } return $posts; } add_filter( 'the_posts', 'amumu_sns_set_wp_comment_status' ); function amumu_board_head() { echo ''; echo ''; echo ''; } function amumu_sns_head() { $options = get_option( 'amumu_sns_options' ); if ( empty( $options['facebook_app_id'] ) ) return; $args = apply_filters( 'amumu_sns_init', array( 'appId' => $options['facebook_app_id'], //'channelUrl' => add_query_arg( 'fb-channel-file', 1, site_url( '/' ) ), 'channelUrl' => '//'+window.location.hostname+'/channel', 'status' => true, 'cookie' => true, 'xfbml' => true ) ); echo ''; echo '
'; echo ''; echo '"; echo ''; //add_action( 'wp_footer', 'fb_root' ); } ?>