/** 글 삭제 * @class write * @param $no: 게시물 번호, 배열로 복수개 가능 $board_data: 게시판 설정 data -id: 게시판 아이디. 게시판 설정 data가 없을 때 아이디를 토대로 설정을 로드한다. */ function delPost($no, $board_data = '', $param = '') { global $mini; $param = param($param); iss($param['id']); //// 게시판 설정 if (!is_array($board_data)) { if ($param['id']) { $board_data = getBoard($param['id'], 1); } else { __error('게시판 설정이 없습니다'); } } //// 게시물 번호 if (!is_array($no)) { $tmp = $no; $no = array(); $no[0] = $tmp; } //// 삭제 foreach ($no as $key => $val) { check($val, "type:num, name:게시물번호"); // 데이터 로드 $data_ex = sql("SELECT * FROM {$board_data['table']} WHERE no={$val}"); if (!is_array($data_ex)) { __error('해당 게시물이 존재하지 않습니다'); } // 잠긴글 if (empty($mini['member']['level_admin']) && !empty($data_ex['is_lock'])) { __error("[{$data_ex['no']}] 게시물이 잠겨 있어 수정, 삭제를 할 수 없습니다"); } // 회원정보 로드 if (!empty($data_ex['target_member'])) { $mdata = sql("SELECT * FROM {$mini['name']['member']} WHERE no={$data_ex['target_member']}"); if (is_array($mdata)) { parseMember($mdata); } else { $data_ex['target_member'] = 0; $data_ex['pass'] = md5(); } } // 권한 체크 if (!empty($data_ex['target_member'])) { if (empty($mini['log'])) { __error("[{$data_ex['no']}] 권한이 없습니다. [로그인이 필요합니다]"); } if (empty($mini['member']['level_admin']) && $mdata['no'] != $mini['member']['no']) { __error("[{$data_ex['no']}] 권한이 없습니다. [자신이 쓴 글만 수정할 수 있습니다]"); } if (!empty($mdata['level_admin']) && $mdata['no'] != $mini['member']['no'] && $mdata['level_admin'] >= $mini['member']['level_admin']) { __error("[{$data_ex['no']}] 권한이 없습니다. [자신보다 높거나 같은 권한의 관리자가 쓴 글 입니다]"); } } else { if (empty($mini['member']['level_admin'])) { if (count($no) > 1) { __error('비회원의 글은 한번에 한개씩 삭제하실 수 있습니다.'); } else { if (empty($mini['member']['level_admin'])) { if (empty($_REQUEST['pass_encode'])) { __error(array('mode' => 'goto', 'url' => "pass.php?id={$_REQUEST['id']}&group={$_REQUEST['group']}&url=" . url())); } if (!empty($mini['log'])) { __error("[{$data_ex['no']}] 권한이 없습니다. [비회원이 쓴글 입니다]"); } if ($_REQUEST['pass_encode'] != md5("{$data_ex['pass']}|{$mini['ip']}|" . session_id())) { __error("[{$data_ex['no']}] 권한이 없습니다. [비밀번호가 일치하지 않습니다]"); } } } } } // 휴지통 if (!empty($board_data['use_trash'])) { $trash = $trash_tmp = array(); foreach ($data_ex as $key2 => $val2) { switch ($key2) { case 'category': case 'tag': case 'target_member': case 'name': case 'mail': case 'title': case 'ment': case 'ip': case 'date': case 'trackback': $trash[$key2] = $val2; break; case 'no': case 'prev': case 'next': break; default: $trash_tmp[$key2] = $val2; } } $trash = array_merge($trash, array('target_member_in' => !empty($mini['log']) ? $mini['member']['no'] : 0, 'ip_in' => $mini['ip'], 'date_in' => $mini['date'], 'num' => $data_ex['no'], 'id' => $board_data['no'], 'field' => serialize($trash_tmp))); sql("INSERT INTO {$mini['name']['trash']} " . query($trash, 'insert')); } // 댓글 제거 $tmp = sql("q:SELECT no FROM {$board_data['table_cmt']} WHERE target_post={$data_ex['no']}, mode:firstFieldArray"); if (!empty($tmp) && count($tmp) >= 1) { delCmt($tmp, $board_data, "del_post:1", $data_ex); } // 쿼리 sql("DELETE FROM {$board_data['table']} WHERE no={$val}"); // 현재글의 prev에서 현재글을 뺀다 if ($data_ex['prev']) { $data_prev = sql("q:SELECT * FROM {$board_data['table']} USE INDEX (num) WHERE " . sqlSel($data_ex['prev']) . " ORDER BY num DESC, mode:array"); if (is_array($data_prev)) { foreach ($data_prev as $key2 => $val2) { // 빼기 $val2['next'] = str_replace("[{$data_ex['no']}]", "", $val2['next']); // next 연장해주기 if ($data_ex['next']) { $tmp = array(); $tmp = getStr($data_ex['next']); $tmp_key = $board_data['list_count_relate'] - 1 * ($key2 + 1); iss($tmp[$tmp_key]); $tmp2 = array(); $tmp2 = getStr($val2['next']); if ($tmp_key >= 0 && $tmp2[count($tmp2) - 1] != $tmp[$tmp_key] && $tmp[$tmp_key]) { $val2['next'] .= "[" . $tmp[$tmp_key] . "]"; } } // 입력 sql("UPDATE {$board_data['table']} SET next='{$val2['next']}' WHERE no={$val2['no']}"); } } } // 현재글의 next에서 현재글을 뺀다 if ($data_ex['next']) { $data_next = sql("q:SELECT * FROM {$board_data['table']} USE INDEX (num) WHERE " . sqlSel($data_ex['next']) . " ORDER BY num, mode:array"); if (is_array($data_next)) { foreach ($data_next as $key2 => $val2) { // 빼기 $val2['prev'] = str_replace("[{$data_ex['no']}]", "", $val2['prev']); // prev 연장해주기 if ($data_ex['prev']) { $tmp = array(); $tmp = getStr($data_ex['prev']); $tmp_key = $board_data['list_count_relate'] - 1 * ($key2 + 1); iss($tmp[$tmp_key]); $tmp2 = array(); $tmp2 = getStr($val2['prev']); if ($tmp_key >= 0 && $tmp2[count($tmp2) - 1] != $tmp[$tmp_key] && $tmp[$tmp_key]) { $val2['prev'] .= "[" . $tmp[$tmp_key] . "]"; } } // 입력 sql("UPDATE {$board_data['table']} SET prev='{$val2['prev']}' WHERE no={$val2['no']}"); } } } // 총 게시물 수 updateTotal($data_ex, $board_data, "del"); if (!empty($mini['board']) && $board_data['no'] == $mini['board']['no']) { $mini['board']['total'] = $board_data['total']; } sql("UPDATE {$mini['name']['admin']} SET total = '" . serialize($board_data['total']) . "' WHERE no={$board_data['no']}"); // 포인트 if ($board_data['point_post'] !== 0 && !empty($mini['log']) && !empty($data_ex['target_member'])) { setPoint("\n\t\t\t\t\t\ttarget: {$data_ex['target_member']}\n\t\t\t\t\t\tpoint: {$board_data['point_post']}\n\t\t\t\t\t\tmsg: 글 삭제\n\t\t\t\t\t\tparent_no: {$board_data['no']}\n\t\t\t\t\t\tdata_no: {$data_ex['no']}\n\t\t\t\t\t\tis_del: 1\n\t\t\t\t\t"); } //+ 파일 제거 // 검색어 제거 delIndex($data_ex['num']); } }
/** 최근게시물 * @class io * @param -id: 게시판아이디 -table: 임의지정테이블 -mode: 최근게시물모드 [!|issue|writer|relate|popup|memo] -order: 임의정렬쿼리 -where: 임의검색쿼리 -count: 출력수 -cut_title: 제목길이 -cut_ment: 내용길이 -skin: 게시물 스킨 -skin_not: 게시물이 없을 떄 스킨 -skin_first: 첫 게시물 스킨 -debug: debug모드 -is_key: 키테이블 사용여부 -type: 종류 [post!|cmt|memo|member] * @return Array 스킨이 있을 경우엔 리턴 안됨 */ function mhot($param) { global $mini; $param = param($param); def($param['cut_title'], 0); def($param['cut_ment'], 0); def($param['count'], 5); def($param['type'], 'post'); // 설정 기본값 def($mini['setting']['issue_interval'], 48); if (preg_match("/[^0-9]/", $mini['setting']['issue_interval'])) { $mini['setting']['issue_interval'] = 48; } if (preg_match("/[^0-9\\,]/", $param['count'])) { __error('출력개수에는 숫자와 ,만 입력 가능합니다' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')'); } if ($param['count'] > 100) { __error('출력개수는 100개를 초과할 수 없습니다' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')'); } $where = $order = $board_data = $table = ''; $data = $sel_board = array(); // 복수 게시판 지정(keyTable 이 사용된다) if (!empty($param['id']) && (strpos($param['id'], '[') !== false || $param['id'] == '*')) { $is_multi = 1; // 게시판 나눠넣기 if (strpos($param['id'], '[') !== false) { $sel_board = getStr($param['id']); } } // 테이블 임의지정 if (!empty($param['table'])) { $table = $param['table']; } // 키테이블 지정 if (!empty($param['is_key'])) { $table = $mini['name']['search']; } // 아이디로 테이블 지정 if (!$table && !empty($param['id']) && $param['id'] != '*') { if (!empty($mini['board']) && !empty($mini['board']['id']) && $mini['board']['id'] == $param['id']) { $board_data =& $mini['board']; } else { $board_data = getBoard($param['id'], 1); } $table = $param['type'] == 'post' ? $board_data['table'] : $board_data['table_cmt']; } // 키테이블인데 글, 댓글이 아닐 경우 에러 if (!empty($param['is_key']) && $param['type'] != 'post' && $param['type'] != 'cmt') { __error('검색테이블을 참조할 때는 글, 댓글 형식만 사용하실 수 있습니다' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')'); } // 특별 모드 if (!empty($param['mode'])) { switch ($param['mode']) { case 'issue': $where .= " and (issue=1 or (date>=DATE_ADD('{$mini['date']}', INTERVAL -{$mini['setting']['issue_interval']} HOUR) and date<=DATE_ADD('{$mini['date']}', INTERVAL 1 DAY)))"; $order .= ",issue*999999 + hit + vote*10 desc"; break; case 'writer': if (empty($mini['setting']['writer_no'])) { return 0; } $where .= " and target_member={$mini['setting']['writer_no']}"; $order .= ",no desc"; break; case 'relate': if (empty($mini['setting']['relate'])) { return 0; } $where .= " and " . sqlSel(explode(",", $mini['setting']['relate'])); $order .= ",no desc"; break; case 'popup': $where .= " and popup=1"; $order .= ",no desc"; break; case 'memo': $table = $mini['name']['memo']; $param['count'] = 20; $param['type'] = 'memo'; if (!empty($mini['log'])) { $where .= " and target_member={$mini['member']['no']} and date_read=0 and del_target=0"; $order .= ",no"; } break; } } // 여러 테이블 검색시 게시판 정보 로드 및 쿼리 설정 if (!empty($is_multi)) { $q_admin = ''; if (!empty($param['id']) && !empty($sel_board)) { $q_admin .= 'WHERE ' . sqlSel($sel_board); // $where .= " and ".sqlSel($sel_board, 'id'); } $data_board = sql("\n\t\t\tq: SELECT * FROM {$mini['name']['admin']} {$q_admin}\n\t\t\tmode: array\n\t\t"); $board_name = $board_data_arr = array(); if (!empty($data_board)) { foreach ($data_board as $key => $val) { $board_name[$val['no']] = $val['name']; parseBoard($val); $board_data_arr[$val['no']] = $val; } unset($data_board); } } // 키 테이블 검색시 종류에 따라 쿼리 설정 if (!empty($param['is_key'])) { $where .= $param['type'] == 'post' ? " and cmt_no=0" : " and cmt_no!=0"; } // 테이블명이 지정되지 않았다면 에러 if (empty($param['id']) && empty($param['table']) && empty($table)) { __error('게시판 아이디나 테이블명을 입력해주세요' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')'); } // 임의 설정 추가 if (!empty($param['where'])) { if (!preg_match("/^ ?(and|or)/i", $param['where'])) { $param['where'] = " and ({$param['where']})"; } $where .= $param['where']; } if (!empty($param['order'])) { if (!preg_match("/^\\,/i", $param['order'])) { $param['order'] = ",{$param['order']}"; } $order .= $param['order']; } else { if (empty($order)) { $order = ",date desc"; } } // 쪽지인데 로그인이 안되어 있다면 넘김 if (!empty($param['mode']) && $param['mode'] == 'memo' && empty($mini['log'])) { return false; } else { // 쿼리날림 if ($where) { $where = "WHERE " . substr($where, 4); } if ($order) { $order = "ORDER BY " . substr($order, 1); } // 복수 게시판일 경우 if (!empty($is_multi)) { // 전체 게시판일 때 if (empty($sel_board) && $param['id'] == '*') { $sel_board = array_keys($board_data_arr); } if (!empty($sel_board)) { $tmp_data = array(); $tmp_data_order = array(); $order_name = $order_type = ''; $order_data = array(); $data = array(); // order 분석 if (count(explode(",", $order)) > 1) { __error('정렬 기준은 한개만 가능합니다' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')'); } $tmp_order = explode(" ", str_replace("ORDER BY ", "", $order)); $order_name = $tmp_order[0]; $order_type = empty($tmp_order[1]) ? 'asc' : $tmp_order[1]; unset($tmp_order); foreach ($sel_board as $val) { // 키테이블 사용시 if (!empty($param['is_key'])) { $tmp_where = !empty($where) ? $where . " and id={$val}" : "WHERE id={$val}"; $table = $mini['name']['search']; } else { $tmp_where = $where; $table = $param['type'] == 'post' ? $mini['name']['board'] . $val : $mini['name']['cmt'] . $val; } $tmp_data = array_merge($tmp_data, sql(array('q' => "SELECT * FROM {$table} {$tmp_where} " . (!empty($param['is_key']) ? "GROUP BY num" : "") . " {$order} LIMIT {$param['count']}", 'mode' => 'array', 'extra_name' => 'id', 'extra_value' => $val))); } // 정렬 기준에 따라서 나눔 foreach ($tmp_data as $key => $val) { $order_data[$key] = $val[$order_name]; } // 정렬 if ($order_type == 'asc') { asort($order_data); } else { arsort($order_data); } // 정렬한 순서대로 data 정의 $i = 0; foreach ($order_data as $key => $val) { if ($i >= $param['count']) { break; } $data[$i] = $tmp_data[$key]; ++$i; } unset($tmp_data); unset($order_data); } } else { $data = sql(array('q' => "SELECT * FROM {$table} {$where} " . (!empty($param['is_key']) ? "GROUP BY num" : "") . " {$order} LIMIT {$param['count']}", 'mode' => 'array')); } if (!empty($data)) { $a = 0; $count_data = count($data); foreach ($data as $key => $val) { // 여러 게시판 사용시 게시판 정보 입력 if (!empty($is_multi)) { if (!empty($board_name[$data[$key]['id']])) { $data[$key]['board_name'] = $board_name[$data[$key]['id']]; } if (!empty($data[$key]['id'])) { $data[$key]['url_board'] = "{$mini['dir']}mini.php?id={$data[$key]['id']}"; } if (!empty($board_data_arr)) { $mini['board_data'] = $board_data_arr[$data[$key]['id']]; } } else { $mini['board_data'] = $board_data; } if (!empty($param['is_key'])) { // 키 테이블 사용 시 진짜 자료 로드 $val2 = sql("SELECT * FROM " . (!empty($data[$key]['cmt_no']) ? $mini['name']['cmt'] : $mini['name']['board']) . "{$data[$key]['id']} WHERE " . (!empty($data[$key]['cmt_no']) ? "no={$data[$key]['cmt_no']}" : "num={$data[$key]['num']}")); $data[$key] = array_merge($data[$key], $val2); } // title 은 포함된 변수가 많기 때문에 먼저 잘라준다 if (!empty($param['cut_title']) && !empty($data[$key]['title'])) { $data[$key]['title'] = strCut($data[$key]['title'], $param['cut_title']); } // 가공 함수 실행 $tmp_func = "parse" . ($param['type'] == 'cmt' ? 'comment' : $param['type']); if ($count_data == 1) { $tmp_func($data[$key], 'view'); } else { $tmp_func($data[$key], ''); } // 내용 자르기 if (!empty($param['cut_ment']) && !empty($data[$key]['ment'])) { $data[$key]['ment'] = strCut($data[$key]['ment'], $param['cut_ment']); $data[$key]['ment_notag'] = strCut($data[$key]['ment_notag'], $param['cut_ment']); } // if (!empty($param['debug'])) { // echo nl2br(print_r($data[$key], 1)); // exit; // } if (!empty($param['skin'])) { $skin = ''; if ($a == 0 && !empty($param['skin_first'])) { $skin = $param['skin_first']; } else { $skin = $param['skin']; } // 논리문 $preg_left = $preg_right = array(); $preg_left[] = "/\\[:([a-z0-9_]+)\\.([a-z0-9_]+)\\.([a-z0-9_]+):\\]/ie"; $preg_right[] = "\$data[{$key}]['\\1']['\\2']['\\3']"; $preg_left[] = "/\\[:([a-z0-9_]+)\\.([a-z0-9_]+):\\]/ie"; $preg_right[] = "\$data[{$key}]['\\1']['\\2']"; $preg_left[] = "/\\[:([a-z0-9_]+):\\]/ie"; $preg_right[] = "\$data[{$key}]['\\1']"; $skin = preg_replace($preg_left, $preg_right, $skin); echo $skin; } $a++; } if (empty($param['skin'])) { if (count($data) == 1 && $param['count'] == 1) { return current($data); } else { return $data; } } } else { if (!empty($param['skin_not'])) { echo $param['skin_not']; } } } }
/** COMMENT 파싱 * @class view * @param $data: DB 데이터 $ret: return 모드 * @return */ function parseComment(&$data, $ret = 0) { global $mini; // 외부 게시판 설정 적용 $board_data = !empty($mini['board_data']) ? $mini['board_data'] : $mini['board']; // decode if (!empty($data)) { foreach ($data as $key => $val) { str($data[$key], 'decode'); } } // 추가필드 iss($data['field']); if ($data['field']) { $data['field'] = unserialize($data['field']); if (is_array($data['field'])) { ksort($data['field']); } } // 링크 iss($data['link']); if ($data['link']) { $data['link'] = unserialize($data['link']); } // 권한 뽑음 $data['permit_comment'] = getPermit("name:comment"); $data['permit_handle'] = !empty($mini['member']['level_admin']) || !empty($data['target_member']) && !empty($mini['log']) && $data['target_member'] == $mini['member']['no'] || empty($data['target_member']) && empty($mini['log']); // depth iss($data['parent']); $data['depth'] = count(getStr($data['parent'])); // 필수 스킨요소 $data['skin'] = array('id' => "tableRowsCmt_{$data['no']}", 'tool' => "cmtTools_{$data['no']}", 'write' => "write_comment{$data['no']}"); // 이름 parseName($data); // 번호 $data['view_no'] = $board_data['use_view_no'] ? !empty($data['parent']) ? "{$data['num']}-" : $data['num'] : $data['no']; // 관리자 체크박스 $data['checkbox'] = !empty($mini['member']['level_admin']) ? "<input type='checkbox' name='no[]' value='{$data['no']}' class='middle' />" : ""; // 날짜 $data['time'] = strtotime($data['date']); $data['date_out'] = date($board_data['date_comment'], $data['time']); $data['date_str'] = $mini['time'] - $data['time'] < $mini['set']['date_str'] * 86400 ? dateSec($mini['time'] - $data['time']) . "전" : ""; $data['date_simple'] = date("H:i", $data['time']); // 태그 if ($data['tag']) { $data['tag'] = getStr($data['tag']); } // 내용 if (!empty($data['ment']) && !empty($data['autobr'])) { $data['ment'] = nl2br($data['ment']); } $data['ment'] = str_replace("<br /><!--n-->", "\n", $data['ment']); if (strpos($data['ment'], "<pre title='code'") !== false) { $mini['is_syntax'] = 1; } // 트랙백 if (!empty($data['trackback'])) { $data['trackback'] = amp($data['trackback'], 'encode'); } // 파일 $data['is_file'] = 0; if (!empty($data['file'])) { unset($file); $file = sql("\n\t\t\t\tq: SELECT * FROM {$mini['name']['file']} WHERE " . sqlSel($data['file']) . "\n\t\t\t\tmode: array\n\t\t\t"); if (!empty($file)) { $data['is_file'] = 1; $data['file_data'] = array(); // 파일 링크 만들기 foreach ($file as $key => $val) { $tmp_no = $key + 1; $data["url_file{$tmp_no}"] = "{$mini['dir']}download.php?mode=view&no={$val['no']}"; $data["link_file{$tmp_no}"] = "href='{$mini['dir']}download.php?no={$val['no']}'"; $data['file_data'][$tmp_no] = parseFile($val, 1); } unset($file); } } // 경고 if (!empty($data['alert']) && !empty($board_data['use_alert'])) { $data['ment'] = "<div class='alertDiv'>경고(!) 클릭하시면 내용이 펼쳐집니다. 위험한 내용이나 스포일러성 내용이 포함되어 있을 수 있습니다.</div><span style='display:none;'>{$data['ment']}</span>"; } // 라이센스 처리 if (!empty($data['license'])) { $data['license_out'] = getLicense($data['license']); } // 수정 시간제한 if (!empty($board_data['limit_edit_comment']) && empty($mini['member']['level_admin'])) { if (strtotime($data['date']) + $board_data['limit_edit_comment'] * 60 >= $mini['time']) { $data['edit_left'] = dateSec($board_data['limit_edit_comment'] * 60 - ($mini['time'] - strtotime($data['date']))); } } // 글쓴이가 쓴 댓글 처리 $data['is_writer'] = !empty($data['target_member']) && !empty($mini['skin']['view']['target_member']) && $data['target_member'] == $mini['skin']['view']['target_member']; // 링크 $data['url_view'] = "{$mini['dir']}mini.php?id={$board_data['id']}&no={$data['target_post']}&cNo={$data['no']}"; $data['url_del'] = "{$mini['dir']}cmt.x.php?id={$board_data['id']}&no={$data['no']}&mode=del&script=move&formMode=move&url=" . url() . (!empty($_SESSION['pageCmtKey']) ? "&pageCmtKey={$_SESSION['pageCmtKey']}" : ""); $data['js_name'] = "onclick='view_member.open(event, { target_member: \"{$data['target_member']}\", id: \"{$board_data['id']}\", post_no: \"{$data['target_post']}\", cmt_no: \"{$data['no']}\" })'"; $data['url_award'] = "{$mini['dir']}ajax.php?mode=award&id={$board_data['id']}&no={$data['no']}&url=" . url(); $data['js_reply'] = $data['permit_comment'] ? "onclick='replys({$data['no']}); return false;'" : ""; $data['js_modify'] = $data['permit_handle'] ? "onclick='edits({$data['no']}); return false;'" : ""; $data['js_del'] = $data['permit_handle'] ? "onclick='dels({$data['no']}); return false;'" : ""; $data['js_vote'] = "onclick='votes({ mode: \"vote\", id: \"{$board_data['id']}\", cmt_no: \"{$data['no']}\" }); return false;'"; $data['js_hate'] = "onclick='votes({ mode: \"hate\", id: \"{$board_data['id']}\", cmt_no: \"{$data['no']}\" }); return false;'"; $data['js_award'] = "onclick=''"; $data['url_report'] = "{$mini['dir']}report.php?id={$board_data['id']}&mode=comment&no={$data['no']}"; $data['pop_report'] = "iiPopup.init({ url: \"{$data['url_report']}\", width:iiSize[\"report\"][0], height:iiSize[\"report\"][1] });"; $data['url_manage'] = "{$mini['dir']}manage.php?id={$board_data['id']}&group={$_REQUEST['group']}&mode=comment&no[]={$data['no']}&url=" . url(); $data['pop_manage'] = "iiPopup.init({ url: \"{$data['url_manage']}\", width:iiSize[\"manage\"][0], height:iiSize[\"manage\"][1] }); return false;"; $data['url_manage_report'] = "{$mini['dir']}manage.php?id={$board_data['id']}&group={$_REQUEST['group']}&mode=comment&report=1&no[]={$data['no']}&url=" . url(); $data['pop_manage_report'] = "iiPopup.init({ url: \"{$data['url_manage_report']}\", width:iiSize[\"manage\"][0], height:iiSize[\"manage\"][1] }); return false;"; $data['url_report_view'] = "{$mini['dir']}manage.php?id={$board_data['id']}&mode=comment&no={$data['no']}&url=" . url(); $data['pop_report_view'] = "iiPopup.init({ url: \"{$data['url_report_view']}\", width:iiSize[\"manage\"][0], height:iiSize[\"manage\"][1] }); return false;"; // 삭제 처리 if (!empty($data['is_del'])) { $data['ment'] = "<span class='is_del'>{$data['ment']}</span>"; } // 아이피 if (!empty($data['ip'])) { $data['ip_hide'] = preg_replace("/([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)/", "\\1.*.\\3.*", $data['ip']); } // link 변수 생성 urlToLink($data); // 비회원 댓글 삭제시 패스워드 입력폼 링크 if (!empty($data['pass']) && empty($mini['member']['level_admin'])) { $data['link_del'] = "href='#' onclick='iiPopup.init({ url: \"{$mini['dir']}pass.php?id={$board_data['id']}&group={$_REQUEST['group']}&target=_parent&url=" . urlencode($data['url_del']) . "\", width:iiSize[\"pass\"][0], height:iiSize[\"pass\"][1] }); return false;'"; $data['js_del'] = "onclick='iiPopup.init({ url: \"{$mini['dir']}pass.php?id={$board_data['id']}&group={$_REQUEST['group']}&target=_parent&url=" . urlencode($data['url_del']) . "\", width:iiSize[\"pass\"][0], height:iiSize[\"pass\"][1] }); return false;'"; } // 비밀 댓글 처리 $is_secret = 0; if ($data['secret'] && !getPermit("name:secret") && (empty($mini['log']) || $data['target_member'] != $mini['member']['no'])) { if (empty($data['pass']) || empty($_REQUEST['pass_encode']) || !empty($_REQUEST['pass_encode']) && $_REQUEST['pass_encode'] != md5("{$data['pass']}|{$mini['ip']}|" . session_id())) { $is_secret = 1; $data['ment'] = "비밀 댓글 입니다."; if ($data['pass']) { $data['ment'] .= " <a href='#' onclick='iiPopup.init({ url: \"{$mini['dir']}pass.php?id={$board_data['id']}&group={$_REQUEST['group']}&target=_parent&url=" . url() . "\", width:iiSize[\"pass\"][0], height:iiSize[\"pass\"][1] }); return false;'>여기를 눌러 비밀번호를 입력하세요.</a>"; } else { $data['name'] = '비밀'; } } } if ($data['secret'] && !$is_secret) { $data['ment'] = '[비밀댓글 입니다]<br />' . $data['ment']; } // 태그 없는 변수 $data['ment_notag'] = strip_tags($data['ment']); if ($ret) { return $data; } }