/** 외부로그인 * @class io * @param -skin: 로그인되어 있을 떄 스킨 -skin_not: 로그인이 되어있지 않을 때 스킨 -id: 스킨 적용할 게시판 번호 or 아이디 -group: 스킨 적용할 그룹 번호 -skip_style: 기본 스타일 로드를 스킵할지 선택 합니다. * @return Array 스킨이 있을 경우엔 리턴 안됨 */ function outlogin($param) { global $mini; $param = param($param); $skin = ''; // 없을 경우 기본 그룹으로 지정 if (empty($param['id']) && empty($param['group'])) { $param['group'] = 1; } $q = ''; if (!empty($param['id'])) { $q = "id={$param['id']}"; $data_board = getBoard($param['id'], 1); $data_site = getSite($data_board['site'], 1); } if (!empty($param['group'])) { $q = "group={$param['group']}"; $data_site = getSite($param['group'], 1); } // 로그인 되어 있을 떄 if (!empty($mini['log'])) { $val =& $mini['member']; $val = array_merge($val, array('url_logout' => "{$mini['dir']}login.php?mode=logout&url=" . url(), 'url_myinfo' => "{$mini['dir']}member.php?mode=modify&no={$mini['member']['no']}&{$q}&url=" . url(), 'url_mymenu' => "{$mini['dir']}mymenu.php?mode=memo&no={$mini['member']['no']}&{$q}&url=" . url(), 'url_admin' => "{$mini['dir']}admin/", 'js_back' => "onclick='history.back();'", 'js_back2' => "onclick='history.go(-2);'", 'is_admin' => !empty($mini['member']['level_admin']), 'is_god' => !empty($mini['member']['level_admin']) && $mini['member']['level_admin'] == 4, 'date' => $mini['date'], 'ip' => $mini['ip'])); if (!empty($val['url_myinfo'])) { $val['pop_myinfo'] = "iiPopup.init({ url: \"{$val['url_myinfo']}\", width:iiSize[\"myinfo\"][0], height:iiSize[\"myinfo\"][1], close: true });"; } if (!empty($val['url_mymenu'])) { $val['pop_mymenu'] = "iiPopup.init({ url: \"{$val['url_mymenu']}\", width:iiSize[\"mymenu\"][0], height:iiSize[\"mymenu\"][1] });"; } if (!empty($param['skin'])) { $skin = $param['skin']; } } else { $val = array('form_start' => "\n\t\t\t\t<form id='form_login' name='form_login' action='{$mini['dir']}login.php?url=" . url() . "' method='post'>\n\t\t\t\t<input type='hidden' name='mode' value='login' />\n\t\t\t", 'form_end' => "</form>\n\t\t\t\t<script type='text/javascript' src='{$mini['dir']}js/mootools.js'></script>\n\t\t\t\t<script type='text/javascript' src='{$mini['dir']}js/ii.js'></script>\n\t\t\t\t<script type='text/javascript' src='{$mini['dir']}js/ii.form.js'></script>\n\t\t\t\t<script type='text/javascript' src='{$mini['dir']}js/size.js'></script>\n\t\t\t\t<script type='text/javascript' src='{$mini['dir']}js/md5.js'></script>\n\t\t\t\t<script type='text/javascript' src='{$mini['dir']}js/sha1.js'></script>\n\t\t\t\t<script type='text/javascript'>\n\t\t\t\t//<![CDATA[\n\t\t\t\t\tvar miniDir = '{$mini['dir']}';\n\t\t\t\t\tvar secure_pass = '******'secure_pass']}';\n\t\t\t\t\tvar ip = '{$mini['ip']}';\n\t\t\t\t\tvar session_id = Cookie.get('" . ini_get('session.name') . "');\n\n\n//\t\t\t\t\tvar form_outlogin = \$('outlogin');\n//\t\t\t\t\tform_outlogin.submitAction = function () {\n//\t\t\t\t\t\terror(\"랄라\");\n//\t\t\t\t\t\treturn false;\n//\t\t\t\t\t};\n//\t\t\t\t\tform_outlogin.setForm();\n\t\t\t\t//]]>\n\t\t\t\t</script>\n\t\t\t\t<script type='text/javascript' src='{$mini['dir']}js/mini.login.js'></script>\n\t\t\t", 'form_autologin' => "<input type='checkbox' name='autologin' value='1' id='outlogin_autologin' />", 'url_login' => "{$mini['dir']}login.php?{$q}&url=" . url(), 'url_join' => "{$mini['dir']}member.php?{$q}&url=" . url(), 'url_find' => "{$mini['dir']}login.find.php?{$q}&url=" . url(), 'date' => $mini['date'], 'ip' => $mini['ip']); if (!empty($val['url_find'])) { $val['pop_find'] = "iiPopup.init({ url: \"{$val['url_find']}\", width:iiSize[\"find\"][0], height:iiSize[\"find\"][1] });"; } $val['pop_login'] = "******"{$val['url_login']}\", width:iiSize[\"login\"][0], height:iiSize[\"login\"][1] });"; $val['pop_join'] = "iiPopup.init({ url: \"{$val['url_join']}\", width:iiSize[\"join\"][0], height:iiSize[\"join\"][1], close: true });"; if (!empty($param['skin_not'])) { $skin = $param['skin_not']; } } urlToLink($val); // 변환 if (!empty($skin)) { $preg_left = $preg_right = array(); $preg_left[] = "/\\[:([a-z0-9_]+)\\.([a-z0-9_]+)\\.([a-z0-9_]+):\\]/ie"; $preg_right[] = "\$val['\\1']['\\2']['\\3']"; $preg_left[] = "/\\[:([a-z0-9_]+)\\.([a-z0-9_]+):\\]/ie"; $preg_right[] = "\$val['\\1']['\\2']"; $preg_left[] = "/\\[:([a-z0-9_]+):\\]/ie"; $preg_right[] = "\$val['\\1']"; $skin = preg_replace($preg_left, $preg_right, $skin); echo $skin; } else { return $val; } }
/** 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; } }