public function CurrentPage() { $kn = $this->Config('key'); // 현재 페이지 $key = GV::Number($kn); if (!$key) { $key = 1; } return $key; }
public function Sql($fields) { $stx = GV::String($this->Config('key')); if (!$stx || !is_array($fields)) { return ''; } $sql = 'AND ('; foreach ($fields as $k => $v) { $fields[$k] = $v . " LIKE '%{$stx}%' "; } $sql .= implode(' OR ', $fields); $sql .= ')'; return $sql; }
protected function CreateHtml() { // 레이아웃 미리보기 // 임시로 다른 레이아웃을 적용하여 보여줌 $preview = GV::String('preview_layout'); if ($preview) { $this->Skin($preview); } $this->Init(); ob_start(); echo PageElement::Inst('header')->html(); include $this->path_view($this->CurrentState() . '.php'); $this->html = ob_get_contents(); ob_end_clean(); $this->html = $this->Parse($this->html); }
$pass=false; $board = Board::Inst()->bo_no($this->bo_no); $data = $this->Sql('fetch', $att[1]); // 기존 게시글 정보 if(is_array($data) && sizeof($data)!=0) { // 게시판 설정보다 회원 레벨이 높거나 같다면 if($this->Config('mb','level') >= intval($board->bo_level_modify)) { // 회원이 쓴 글이면 회원 자신만 수정가능함 if($data['mb_no']!=0) { if($data['mb_no'] == $this->Config('mb','no')) $pass = true; } // 비회원이 쓴 글이면 비밀번호 검사 else { if(GV::Anything('password')!='') { if($data['wr_password'] == $this->Sql('password', GV::Anything('password'))) $pass = true; else $pass = '******'; } else { $pass = '******'; } } // 수정불가 댓글수 등 체크 //if(!$board->bo_mod_comment) $mod_comment=9999; //else $mod_comment=$board->bo_mod_comment; //if($mod_comment<=intVal($this->model->CountComment($data['wr_no']))) // $pass = false; }
if (!$data['editor']) { $data['editor'] = $view['editor']; } if (!$data['editor']) { $data['editor'] = $this->Config('editor'); } // 에디터 너비 $data['editor_width'] = GV::String('editor_width'); if (!$data['editor_width']) { $data['editor_width'] = $view['editor_width']; } if (!$data['editor_width']) { $data['editor_width'] = $this->Config('editor_width'); } // 에디터 높이 $data['editor_height'] = GV::String('editor_height'); if (!$data['editor_height']) { $data['editor_height'] = $view['editor_height']; } if (!$data['editor_height']) { $data['editor_height'] = $this->Config('editor_height'); } $this->data = $data; // 에디터 목록 $this->editor_list = Editor::Inst('')->SkinList(); $this->action = $this->Link('insert'); if ($this->wg_no) { $this->action = $this->Link('update', $this->wg_no); } /* * 페이지 게시판 스킨 목록
/* * 링크 정의법 * --------- * $link['링크명']['include']['포함할 쿼리명'] = '쿼리값'; // 포함할 값 * $link['링크명']['exclude'][] = '현재주소에서 제거할 쿼리명'; // 제거할 값 * $link['링크명']['path'] = '현재주소와 다른 경로값 : 공백이면 현재주소 경로'; * * 함수 추가 파라메터 * delete, update등에서 키값을 활용할때 사용함 * -------------------------------------- * $att[1], $att[2], $att[3] * */ // 링크 생성에 필요한 값들 정의 $mode_name = $this->Mode('name'); // 모드명 $mode = GV::String($mode_name); // 현재모드 $key_name = $this->KN(); // 테이블의 키 이름 $link = array(); /* * 회원탈퇴 */ $link['delete']['include'][$mode_name] = 'delete'; $link['delete']['include'][$key_name] = $att[1]; /* * 회원목록 */ $link['list']['exclude'][] = $mode_name; $link['list']['exclude'][] = $key_name;
<?php if (!defined("__MAGIC__")) { exit; } $kn = $this->Config('key'); // 현재 페이지 $key = GV::Number($kn); if (!$key) { $key = 1; } // 한페이지에 표시되는 개시물 수 $rows = $this->Config('rows'); // 전체 게시물 수 $tot = $this->Config('tot'); // 한번에 표시되는 숫자들의 개수 $nWidth = $this->Config('nWidth'); // 전체 페이지 개수 $pages = ceil(intval($tot) / $rows); $list = array(); // 모든 변수가 재대로 되어 있어야 링크들을 생성함 if ($rows >= 1 && $tot >= 1 && $pages >= 1 && $nWidth >= 1) { /* * 처음 링크 생성 */ //if($key>2) { } $list[] = array('name' => '처음', 'class' => '', 'img' => $this->path_img('paging_first.gif'), 'link' => Url::Get('', $this->Config('key'))); /* * 이전링크 생성 */ $link = '';
<?php if (!defined('__MAGIC__')) { exit; } $state_x = GV::Number('state_x'); $state_o = GV::Number('state_o'); $active = array(); if ($state_x == 20) { $active[0] = true; } if ($state_x == 16 && $state_o == 8) { $active[1] = true; } if ($state_x == 16 && $state_o == '') { $active[2] = true; } if ($state_o == 16) { $active[3] = true; } ?> <ul id="msg_menu"> <li><a href="<?php echo $this->Link('write'); ?> ">쪽지쓰기</a></li> <li <?php echo $active[0] ? 'class="active"' : ''; ?> ><a href="<?php echo $this->Link('list_inbox');
<?php if (!defined("__MAGIC__")) { exit; } $m = $this->Sql('fetch', GV::Number($this->KN())); if (Config::Inst()->admin == $m['mb_id']) { Dialog::Alert("최고관리자는 질문 답변으로 비밀번호를 찾을수 없습니다."); } if ($m['mb_answer'] != $_POST['mb_answer']) { Dialog::Alert('답변이 틀렸습니다.'); } else { $new_passwd = ''; for ($i = 0; $i <= 7; $i++) { $new_passwd .= substr('23456789abcdef', rand(0, 13), 1); } $this->Sql('change_password', $m['mb_no'], $new_passwd); // 비밀번호 바꾸고 바뀐 비밀번호 알려주기 Dialog::alertNReplace("임시 비밀번호는 {$new_passwd} 입니다.\n개인정보에서 꼭 비밀번호를 변경하세요.", $this->Link('login')); }
* 우선순위 * 1.POST로 넘어온 미리보기 데이터 * 2.데이터베이스에 있는 데이터 * 3.기본 데이터 * */ // 1.데이터베이스에 있는 데이터 불러오기 $view = Widget::Inst()->Action('data_explode', $this->wg_no); $data = array(); // 위젯너비 $data['wg_width'] = GV::String('wg_width'); if (!$data['wg_width']) { $data['wg_width'] = $view['wg_width']; } if (!$data['wg_width']) { $data['wg_width'] = $this->Config('wg_width'); } // 위젯너비 단위 $data['wg_width_unit'] = GV::String('wg_width_unit'); if (!$data['wg_width_unit']) { $data['wg_width_unit'] = $view['wg_width_unit']; } if (!$data['wg_width_unit']) { $data['wg_width_unit'] = $this->Config('wg_width_unit'); } // 게시판 스킨 $data['skin'] = GV::String('skin'); if (!$data['skin']) { $data['skin'] = $view['skin']; } $this->view = $data;
<?php if (!defined("__MAGIC__")) { exit; } $tbn = $this->TBN(); $bo_no = $this->bo_no; $category = urldecode(GV::Category()); // 개수 카운트 $sql = "\n\tSELECT count(wr_no) as cnt \n\tFROM `{$tbn}` \n\tWHERE bo_no={$bo_no} AND wr_parent_no=0\n"; // 월별보기 저장소 쿼리 $archive = trim($_GET['archive']); if ($archive) { $archive = explode(' ', $archive); $archive[0] = preg_replace('/[^0-9]/', '', $archive[0]); $archive[1] = preg_replace('/[^0-9]/', '', $archive[1]); $sql .= " AND DATE_FORMAT(wr_datetime,'%Y%m')=DATE_FORMAT('{$archive[0]}-{$archive[1]}-01','%Y%m') "; } $sql .= Search::Inst()->Sql(array('wr_subject', 'wr_content')); $ca1 = trim($_GET['ca1']); $ca2 = trim($_GET['ca2']); if ($ca1) { $sql .= " AND wr_category LIKE '{$ca1}%' "; } if ($ca2) { $sql .= " AND wr_category LIKE '%{$ca2}' "; } $cnt = DB::Get()->sql_fetch($sql); $sql_result = $cnt['cnt'] ? $cnt['cnt'] : 0;
<?php if (!defined("__MAGIC__")) { exit; } $tbn = self::TBN(); $msg_no = GV::Number('msg_no'); $mb_no = Member::No(); $list = $_POST['check']; if ($msg_no) { $list[] = $msg_no; } if (sizeof($list) == 0) { Dialog::alert('복구할 글을 선택해 주세요.'); } foreach ($list as $v) { $sql = "\n\tUPDATE {$tbn} SET msg_state=msg_state&~{$this->Config('state', 'trash')}\n\tWHERE msg_no={$v}\n\t"; DB::Get()->sql_query($sql); } Url::Go($this->Link('list')); exit;
<?php if (!defined("__MAGIC__")) { exit; } $m = $this; ?> <div class="sub_title"><h2>회원탈퇴</h2></div> <form method="post" action="<?php echo $this->Link('unregist', $m->mb_no); ?> "> <input type="hidden" name="passwd" value="<?php echo GV::Password('passwd', 'POST'); ?> "/> <div id="member_unregist"> <div class="top_box"> <img class="icon" src="<?php echo $this->path_img('icon_unregist.gif'); ?> "/> <h3>회원 탈퇴</h3> </div> <p> </p> <p>회원 탈퇴에 앞서 아래의 사항을 반드시 숙지하시기 바랍니다.</p> <p> </p> <p>1. 회원탈퇴 후 모든 정보는 폐기처분 되며 어떠한 정보도 데이터베이스에 남겨두지 않습니다.</p>
if ($main) { $last_id = 'r=' . $root . ',id1=' . $main . ',id2=' . $clear['m_id']; } else { if ($root) { $last_id = 'r=' . $root . ',id1=' . $clear['m_id']; } else { $last_id = 'r=' . $clear['m_id']; } } $tbn_write = Write::Inst()->TBN(); $sql = " SELECT wr_no, last_id FROM {$tbn_write} WHERE bo_no=0 AND last_id LIKE '{$stx}%' "; $write_list = DB::Get()->sql_query_list($sql); foreach ($write_list as $v) { DB::Get()->update($tbn_write, array('last_id' => str_replace($stx, $last_id, $v['last_id'])), " WHERE wr_no='{$v['wr_no']}' "); } //* // 관리자페이지 아이디 변경 체크 if (Config::Inst()->path_admin == $data['m_id']) { $change_admin_page = true; DB::Get()->update(Config::Inst()->TBN(), array('cf_value' => $clear['m_id']), " WHERE cf_id='path_admin' "); } //*/ } // 회원정보 업데이트 $this->Sql('update', GV::Number($this->KN()), $clear); if ($change_admin_page) { Dialog::AlertNReplace("관리자 페이지 주소가 변경되었습니다.\n메인화면으로 이동합니다.", Path::Root()); } else { Url::GoReplace($this->Link('list')); } exit;
<?php if (!defined('__MAGIC__')) { exit; } $v = $this->Sql('fetch_by_id', GV::Id('mb_id')); ?> <div class="sub_title"><h2>비밀번호 찾기 질문</h2></div> <div id="member_view"> <div id="find_pw"> <img class="icon" src="<?php echo $this->path_img('icon_secret.gif'); ?> " alt="find_pw"/> <p>비밀번호를 찾으시려면 아래 질문에 답하세요.</p> <form method="post" action="<?php echo $this->Link('find_pw_question_check'); ?> "> <input type="hidden" name="mb_no" value="<?php echo $v['mb_no']; ?> "/> <table> <tbody> <tr> <th>질문</th> <td><?php echo $v['mb_question'];
<?php if (!defined("__MAGIC__")) { exit; } $parent_no = GV::Number('parent_no'); ?> <?php if ($this->Can('write')) { ?> <form method="post" action="<?php echo $this->Link('insert'); ?> "> <input type="hidden" name="edit" value="0"/> <input type="hidden" name="wr_no" value="<?php echo $this->wr_no; ?> "/> <input type="hidden" name="cmt_parent_no" value="<?php echo $parent_no; ?> "/> <div data-role="fieldcontain"> <fieldset data-role="controlgroup"> <textarea name="cmt_content" rows="2" style="width:100%" placeholder=""></textarea> </fieldset> </div> <input type="submit" data-icon="plus" data-iconpos="left" value="댓글입력" data-mini="true" /> </form>
<?php if (!defined("__MAGIC__")) { exit; } if ($_POST['bo_no'] == '') { $data['bo_subject'] = GV::String('bo_subject'); $_POST['bo_no'] = Board::Inst()->Action('insert_record', $data); unset($_POST['bo_subject']); } $_POST['columns'] = implode('|', $_POST['columns']); if (!$_POST['list_view']) { $_POST['list_view'] = 0; } if (!$_POST['show_notice']) { $_POST['show_notice'] = 0; } if (!$_POST['use_comment']) { $_POST['use_comment'] = 0; } $data = Widget::Inst()->Action('data_implode', $_POST); $key_name = $this->KN(); $key = GV::Number($key_name); DB::Get()->Update($this->TBN(), $data, "where {$key_name}='{$key}' "); ?> <script> window.opener.location.reload(); window.close(); </script> <?php exit;
<?php if (!defined("__MAGIC__")) { exit; } // 게시판 생성 if ($_POST['bo_no'] == '') { $data['bo_subject'] = GV::String('bo_subject'); $_POST['bo_no'] = Board::Inst()->Action('insert_record', $data); unset($_POST['bo_subject']); } if (!$_POST['list_view']) { $_POST['list_view'] = 0; } if (!$_POST['show_notice']) { $_POST['show_notice'] = 0; } if (!$_POST['use_comment']) { $_POST['use_comment'] = 0; } $data = Widget::Inst()->Action('data_implode', $_POST); $key = DB::Get()->InsertEx($this->TBN(), $data); if (!$key) { Dialog::Alert('정확한 정보를 입력하세요.'); } Widget::Inst()->Action('add_widget', $key); ?> <script> window.opener.location.reload(); window.close(); </script>
if (!defined("__MAGIC__")) { exit; } // 삽입된 위젯 번호 $key = $att[1]; /* * 위젯호출 부분의 데이터를 변경함 * 삽입된 위젯번호를 부여함 */ $params = $this->Config('add_widget'); $wg_table = GV::String($params['table']); $wg_key = GV::Number($params['key']); $wg_key_name = GV::String($params['key_name']); $wg_field = GV::String($params['field']); $wg_pos = GV::Number($params['pos']); // 기존 데이터 불러오기 $content = array_pop(DB::Get()->sql_fetch("\n\tSELECT {$wg_field}\n\tFROM {$wg_table}\n\tWHERE {$wg_key_name}='{$wg_key}'\n")); // 패턴을 이용하여 [[Widget]]구문을 분리함 $pattern = "/(\\[\\[Widget)([^\\]]*)(\\]\\])/"; $split = preg_split($pattern, $content); preg_match_all($pattern, $content, $match, PREG_PATTERN_ORDER); /* * 분리된 컨텐츠들을 합침 * 합치면서 삽입된 위젯 번호를 추가해줌 */ $result = ''; for ($i = 0; $i < count($match[0]); $i++) { $result .= $split[$i]; if ($i == $wg_pos) { $result .= '[[Widget|' . $key . ']]';
<?php if (!defined("__MAGIC__")) { exit; } $mb_id = GV::Id('mb_id', 'POST'); $mb_passwd = $this->Sql('password', GV::Password('mb_passwd', 'POST')); //if(!$mb_id) Dialog::alert("아이디를 입력하세요"); //if(!$mb_passwd) Dialog::alert("패스워드를 입력하세요"); //* if ($this->mb_id($mb_id)->mb_passwd != $mb_passwd) { Dialog::alert("로그인에 실패 했습니다.\n아이디와 비밀번호를 확인하세요."); exit; } //*/ // 로그인 $this->Action('login', $this->mb_no);
<?php if (!defined("__MAGIC__")) { exit; } $mb_id = GV::Id('mb_id', 'POST'); if (Config::Inst('config.php')->admin == $mb_id) { Dialog::Alert("최고관리자는 질문 답변으로 비밀번호를 찾을수 없습니다."); } $ret = $this->Sql('fetch_by_id', $mb_id); if (!$ret['mb_question']) { Dialog::alert("비밀번호 찾기 질문을 등록하지 않았습니다.\n질문 답변으로 비밀번호를 찾을수 없습니다.\n관리자에게 문의하세요.", Path::Group()); }
<?php if (!defined("__MAGIC__")) { exit; } /* * action파일 * action.*.php 파일은 Alert을 호출하지 않고 단순한 하나의 행동을하고 * 결과 값을 알려준다. * $result에 결과값을 저장해 줌 * -------------------------- */ // 필더링된 결과 값을 건내줌 $clear = GV::Clear($this->TBN()); // 포함시킬 결과값 $include = array('mb_id', 'mb_passwd', 'mb_nick', 'mb_email', 'mb_memo', 'mb_question', 'mb_answer'); $result = array(); foreach ($clear as $k => $v) { if (in_array($k, $include)) { $result[$k] = $v; } }
<?php if (!defined("__MAGIC__")) { exit; } $key = GV::Number($this->KN()); $file = $this->Sql('fetch', $key); $path = Path::Group($file['file_path']); // 무단 링크 검사 // 무단링크시에는 hotlink.gif이미지를 뿌려준다. $check_hotlink = GV::String(File::hotlink); if (!$check_hotlink || $_SESSION[File::hotlink] != $check_hotlink) { $path = Path::img('hotlink.gif'); } if (file_exists($path)) { header("content-type: {$file['file_type']}"); header("content-length: " . filesize($path)); header("pragma: no-cache"); header("expires: 0"); flush(); $fp = fopen($path, "rb"); while (!feof($fp)) { echo fread($fp, 100 * 1024); flush(); } fclose($fp); flush(); } else { Dialog::Alert("파일을 찾을 수 없습니다."); } exit;
<?php if (!defined("__MAGIC__")) { exit; } $mode = GV::GetParam($this->Mode('name'), 'GET'); $key = GV::Number($this->KN()); $state = 'view'; if ($this->wg_no == $key) { if ($mode) { $state = $mode; } else { if (GV::String('wgMode') == 'write') { $state = 'write'; } } }
// 비회원일 경우에 비밀번호 검사를 함 if(!$this->Config('mb','login')) { $clear['mb_no'] = 0; if($clear['wr_password']!=$_POST['wr_password_check']) Dialog::alert('[비밀번호/비밀번호확인]이 일치하지 않습니다.'); if(!$clear['wr_password']) Dialog::alert('비밀번호를 입력해 주세요.'); $clear['wr_password'] = $this->Sql('password', $clear['wr_password']); } else { $clear['wr_writer'] = Member::Inst()->mb_nick; } // 최근게시글을 위해 게시글이 출력되는 아이디를 저장함 $r = GV::String('r'); $id1 = GV::String('id1'); $id2 = GV::String('id2'); $qstr = array(); if($r) $qstr[] = 'r='.$r; if($id1) $qstr[] = 'id1='.$id1; if($id2) $qstr[] = 'id2='.$id2; $clear['last_id'] = '?'.implode('&', $qstr); // 기타 필수 입력 검사 if(!$clear['wr_subject']) Dialog::alert('제목을 입력해 주세요.'); if(!$clear['wr_writer']) Dialog::alert('글쓴이를 입력해 주세요.'); if(!$clear['wr_content']) Dialog::alert('내용을 입력해 주세요.'); // 분류생성 $clear['wr_category'] = array(); if($_POST['ca1']) $clear['wr_category'][] = $_POST['ca1']; if($_POST['ca2']) $clear['wr_category'][] = $_POST['ca2'];
<?php if(!defined("__MAGIC__")) exit; $tbn = $this->TBN(); $key = GV::Number($this->KN()); $board = Board::Inst()->bo_no($this->bo_no); $bo_no = $board->bo_no; $clear = $this->Clear(); $clear['wr_content'] = nl2br(htmlspecialchars($_POST['wr_content'])); $clear['wr_state'] = 0; $clear['wr_writer'] = Member::Inst()->mb_nick; $clear['last_id'] = GV::String('id1'); // 기타 필수 입력 검사 /* if(!$clear['wr_subject']) Dialog::alert('제목을 입력해 주세요.'); if(!$clear['wr_writer']) Dialog::alert('글쓴이를 입력해 주세요.'); if(!$clear['wr_content']) Dialog::alert('내용을 입력해 주세요.'); //*/ // 회원이면 자신의 회원번호를 입력함 $clear['mb_no'] = $this->Config('mb','no'); // 기본 정보들 자동입력 $clear['wr_datetime'] = 'NOW()'; $clear['wr_update'] = 'NOW()'; $clear['wr_ip'] = "INET_ATON('".Util::GetRealIPAddr()."')"; $clear['bo_no'] = $bo_no; $this->key = DB::Get()->InsertEx($tbn, $clear, array('wr_ip','wr_datetime','wr_update'));
<?php if(!defined("__MAGIC__")) exit; /* * 목록보기 데이터 정의 * --------------------- * 목록에서 추가/수정/삭제 모두 다 한다. * * * * */ $key = GV::Number($this->KN()); // 키 값 $mode = GV::GetParam($this->Mode('name'), 'GET'); // 모드 값 $this->href_list = $this->Link('list'); /* * 단락추가 모드 * 에디터와 업데이트 주소를 설정함 */ if($mode=='write') { $this->mode_write = true; $this->editor = Editor::Inst('wr_content',$this->Config('editor', 'name') )->db_edit('' )->width($this->Config('editor', 'width') )->height($this->Config('editor', 'height') )->html( ); $this->action = $this->Link('insert'); }
<?php if (!defined("__MAGIC__")) { exit; } // 스펨 차단코드 검사 Captcha::Inst()->Check(); $m = $this->Action('login_info'); $passwd = $this->Sql('password', $_POST['mb_passwd']); if ($passwd != $m['mb_passwd']) { Dialog::alert("기존 비밀번호가 맞지 않습니다.\n다시한번 확인하세요."); } // 파일을 업로드 했을 때 이전 파일들은 지움 $f = File::Inst(); $files = array(); foreach ($f->mb_no($m['mb_no'])->Action('files') as $v) { $files[] = $v['file_no']; } // 삭제해야할 파일들 삭제 foreach ($files as $v) { $f->Action('delete', $v); } $this->Sql('unregist', $m['mb_no'], GV::String('mb_memo')); $this->Action('logout'); Dialog::alert("정상적으로 회원탈퇴 되었습니다.\n그동안 이용해 주셔서 감사합니다.", Path::Group()); exit;
<?php if (!defined("__MAGIC__")) { exit; } $mode = GV::GetParam($this->Mode('name'), 'GET'); $key = GV::Number($this->KN()); $state = $mode; if ($key && !$mode) { $state = 'modify'; } else { if (!$key && !$mode) { $state = 'list'; } }
<?php if(!defined("__MAGIC__")) exit; // 게시글 하나 삭제 $this->Sql('delete', GV::Number($this->KN())); Url::GoReplace($this->Link('list'));