public function Parse($tbn, $key_name, $key, $field, $content, $index = null) { /* * 위젯호출 문법 패턴 * [[Widget|503]] 이런식으로 된 문자열을 파싱함 */ $pattern = "/(\\[\\[Widget)([^\\]]*)(\\]\\])/"; /* * 위젯과 위젯이 아닌 문자열을 분리 * 나중에 분리된 문자열과 변환된 위젯 스킨을 합하여 반환함 */ $split = preg_split($pattern, $content); /* * 위젯구문을 구해낸다 * [2]파라미터에 위젯 번호또는 빈 내용이 들어있다. * 매치된 전체 문장: $match[0][$i] * $match[2][$i] - 내용 */ preg_match_all($pattern, $content, $match, PREG_PATTERN_ORDER); // 파싱 결과가 저장될 배열 $result_parse = array(); //$read_pos=0; /* * 매칭된 문장의 갯수만큼 루프를 돌면서 변환함 * 위젯이 설정되지 않았을 경우 : 링크로 스킨 변경 팝업창을 호출 하도록 함 * 위젯이 이미 설정되어 있는 경우 : 위젯 스킨을 호출하여 HTML로 출력해줌 */ for ($i = 0; $i < count($match[0]); $i++) { $wg_no = array_pop(explode('|', $match[2][$i])); //$read_pos += strlen($split[$i]); /* * 위젯 번호가 ?인 경우 * wg_no를 get으로 받아옴 */ if ($wg_no == '?') { $wg_no = GV::Number('wg_no'); } // 위젯 번호가 있을 경우 // 위젯 번호가 있지만 삭제된 경우 패스함 if (intval($wg_no) && Widget::Inst()->wg_no($wg_no)->Sql('fetch', $wg_no)) { // 페이지게시판 중첩으로 입력되었을 경우 if ($this->old != $wg_no) { $this->old = $wg_no; $result_parse[$i] = Widget::Inst()->wg_no($wg_no)->html(); } // 위젯 입력모드일 경우 } else { if (GV::String($this->Mode('name'))) { $result_parse[$i] = $this->html(); // 위젯 번호가 없을 경우 } else { if (Member::Inst()->Action('is_admin')) { $result_parse[$i] = '<a class="button popup ui-icon-plusthick" href="' . $this->Link('write', $index ? $index : $i, $tbn, $key_name, $key, $field) . '" width="618" height="400">위젯추가</a>'; } } } //$read_pos += strlen($match[0][$i]); } // 변환되어 저장될 결과값 $result = ''; /* * 파싱된 결과 값과 기존의 html을 합친다. * head는 가장 마지막에 html()함수가 호출되어야 모든 스크립트/스타일들이 인크루드 되기 때문에 * 이렇게 시간차를 두고 호출한다. */ foreach ($result_parse as $k => $v) { if (is_object($v)) { $v = $v->html(); } $result .= $split[$k] . $v; } // 마지막으로 남은 html을 합쳐줌 $result .= $split[$i]; return $result; }
<?php if (!defined('__MAGIC__')) { exit; } $v = Widget::Inst()->Action('data_explode', $this->wg_no); echo Member::Inst($v['skin'])->SetConfig('rows', '', $v['rows'])->html();
$clear['wr_state'] = $clear['wr_state']|$this->Config('state', 'notice'); } if($_POST['opt_secret']) { $clear['wr_state'] = $clear['wr_state']|$this->Config('state', 'secret'); } // 비회원일 경우에 비밀번호 검사를 함 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('글쓴이를 입력해 주세요.');
* version 1.0 * 사용자의 구미에 맞도록 초기설치 제어를 수행함 */ $cfg = array(); // 데이터베이스 정보 $cfg['dbinfo'] = array('host' => 'localhost', 'user' => '', 'password' => '', 'db' => '', 'prefix' => 'm3_'); // 관리자 정보 $cfg['admin_info'] = array('id' => 'admin', 'password' => '', 'password_confirm' => '', 'name' => '최고관리자'); // 홈페이지 기본정보 $cfg['hp_info'] = array('title' => '매직보드'); // data 폴더 목록 // '폴더명'=>'권한값' $cfg['data_folder'] = array(Path::data() => 0707, Path::data_file() => 0707, Path::data('cache') => 0707, Path::data('zmLog') => 0707, Path::data('zmLogConnect') => 0755, Path::data('cheditor') => 0707, Path::data_member() => 0707); // 설치 테이블 정보 // '테이블명'=>'설치모듈 인스턴스' $cfg['tables'] = array('magic' => Magic::Inst(), 'config' => Config::Inst(), 'write' => Write::Inst(), 'board' => Board::Inst(), 'file' => File::Inst(), 'comment' => Comment::Inst(), 'member' => Member::Inst(), 'tag' => Tag::Inst(), 'widget' => Widget::Inst()); /* * 메뉴구성 및 기본 컨텐츠 설정 $cfg['default_data'] = " kr:index =widget:page=write:index.html +메뉴얼:basic =widget:page=write=widget:webclip:sub_title+=widget:page ++영문홈페이지:basic =widget:page=write=widget:webclip:sub_title+=widget:page ++모바일홈페이지:basic =widget:page=write=widget:webclip:sub_title+=widget:page +게시판:basic =widget:page=write=widget:webclip:sub_title+=widget:page ++공지사항:basic =widget:page=write=widget:webclip:sub_title+=widget:write=board:공지 eng:index =widget:page=write:index.html +English Sample:basic =widget:page=write member:member
<?php if (!defined("__MAGIC__")) { exit; } $cfg = array(); $cfg['mode']['name'] = 'cfgMode'; $cfg['hide_count'] = 0; // 현재 로그인한 회원정보 저장 $m = Member::Inst(); $cfg['mb'] = array('no' => $m->mb_no, 'name' => $m->mb_name, 'admin' => $m->Action('is_admin'), 'login' => $m->Action('is_login'), 'level' => $m->mb_level);
<tbody> <?php foreach ($this->list as $v) { ?> <tr> <td class="center first"><?php echo $v['mb_id']; ?> </td> <td class="center"><?php echo $v['mb_nick']; ?> </td> <td class="center"><?php echo Member::Inst()->Config('grade', $v['mb_grade']); ?> </td> <td class="center"><?php echo $v['mb_level']; ?> </td> <td class="center"><?php echo $v['mb_datetime']; ?> </td> <td class="center last"><?php echo $v['mb_memo']; ?> </td> </tr>
if ($this->Can('delete', $v['cmt_no'])) { $v['link_delete'] = $this->Link('delete', $v['cmt_no']); $v['icon_delete'] = $this->path_img('btn_cmt_delete.gif'); } $v['link_reply'] = $this->Link('reply', $this->wr_no, $v['cmt_no']); $v['icon_reply'] = $this->path_img('btn_cmt_reply.gif'); $v['picture'] = Member::Inst()->mb_no($v['mb_no'])->Action('picture'); if ($v['children']) { foreach ($v['children'] as $kk => $vv) { if ($this->Can('delete', $vv['cmt_no'])) { $vv['link_delete'] = $this->Link('delete', $vv['cmt_no']); $vv['icon_delete'] = $this->path_img('btn_cmt_delete.gif'); } $vv['link_reply'] = $this->Link('reply', $this->wr_no, $vv['cmt_no']); $vv['icon_reply'] = $this->path_img('btn_cmt_reply.gif'); $vv['picture'] = Member::Inst()->mb_no($vv['mb_no'])->Action('picture'); $v['children'][$kk] = $vv; } } else { $v['children'] = array(); } $list[$k] = $v; } ?> <div id="comment_title">댓글 <span><?php echo number_format($cnt); ?> </span></div> <ul id="comments"> <?php
<?php if (!defined("__MAGIC__")) { exit; } if (!Member::Inst()->Action('is_admin')) { Dialog::alert('관리자 권한이 필요한 서비스 입니다.'); }
$data['skin'] = GV::String('skin'); if (!$data['skin']) { $data['skin'] = $view['skin']; } $this->data = $data; /* * 폼 업데이트 링크 생성 */ $key_name = $this->KN(); $key = GV::Number($key_name); $this->action = $this->Link('insert'); if ($key) { $this->action = $this->Link('update'); } /* * 스킨 목록 */ $skin_list = array(); $skin_list[] = array('name' => '스킨선택'); foreach (Member::Inst()->SkinList() as $v) { if ($data['skin'] == $v['skin']) { $v['selected'] = 'selected'; } $skin_list[] = $v; } $this->skin_list = $skin_list; /* * 하단 버튼 링크생성 */ $this->btn_ok = Widget::Inst()->path_img('btn_ok.gif'); $this->btn_cancel = Widget::Inst()->path_img('btn_cancel.gif');
<?php if(!defined("__MAGIC__")) exit; $cfg = array(); $cfg['mode']['name'] = 'pageMode'; // 에디터 설정 $cfg['editor']['name'] = 'cheditor'; $cfg['editor']['width'] = '100%'; $cfg['editor']['height'] = '750px'; $cfg['mb']['admin'] = Member::Inst()->Action('is_admin');
<?php if (!defined("__MAGIC__")) { exit; } if (Member::Inst()->Action('is_login')) { $state = 'logout'; } else { $state = 'login'; }
$data['skin'] = GV::String('skin'); if (!$data['skin']) { $data['skin'] = $view['skin']; } $this->data = $data; /* * 폼 업데이트 링크 생성 */ $key_name = $this->KN(); $key = GV::Number($key_name); $this->action = $this->Link('insert'); if ($key) { $this->action = $this->Link('update'); } /* * 게시판 스킨 목록 */ $skin_list = array(); $skin_list[] = array('name' => '최신글스킨선택'); foreach (Member::Inst()->SkinList('latest') as $v) { if ($data['skin'] == $v['skin']) { $v['selected'] = 'selected'; } $skin_list[] = $v; } $this->skin_list = $skin_list; /* * 하단 버튼 링크생성 */ $this->btn_ok = Widget::Inst()->path_img('btn_ok.gif'); $this->btn_cancel = Widget::Inst()->path_img('btn_cancel.gif');
<?php if (!defined("__MAGIC__")) { exit; } // 스킨 변경시 업데이트 $_POST['wg_skin'] = GV::String('wgSkin'); $data = Widget::Inst()->Action('data_explode', $this->wg_no); if (!$data['wr_no']) { // wr_no가 없으면 입력 // 게시글 입력 $tbn = Write::Inst()->TBN(); $clear = array(); $clear['mb_no'] = Member::Inst()->mb_no; $clear['bo_no'] = 0; $clear['wr_datetime'] = 'NOW()'; $clear['wr_update'] = 'NOW()'; $clear['wr_ip'] = "INET_ATON('" . Util::GetRealIPAddr() . "')"; $clear['wr_content'] = ''; $clear['wr_subject'] = '페이지(일반형)'; $key = DB::Get()->InsertEx($tbn, $clear, array('wr_ip', 'wr_datetime', 'wr_update')); // 게시글번호 저장 $_POST['wr_no'] = $key; } else { $_POST['wr_no'] = $data['wr_no']; } // POST 데이터 변환 $data = Widget::Inst()->Action('data_implode', $_POST); // 업데이트 DB::Get()->Update($this->TBN(), $data, "where wg_no='{$this->wg_no}'"); ?>
<?php if(!defined("__MAGIC__")) exit; // 게시글 보기 이외에는 관리자여야함 if($this->CurrentState()!='view' && !Member::Inst()->Action('is_admin')) Dialog::alert("권한이 없습니다.");
<?php if (!defined('__MAGIC__')) { exit; } $v = Widget::Inst()->Action('data_explode', $this->wg_no); echo Member::Inst($v['skin'])->html();
<?php if (!defined("__MAGIC__")) { exit; } $this->contents = Member::Inst()->html(); $this->head = PageElement::Inst('head')->html();
$pass=false; $board = Board::Inst()->bo_no($this->bo_no); $data = $this->Sql('fetch', GV::Number($this->KN())); if(is_array($data) && sizeof($data)!=0) { if($this->Config('mb','level')>=intval($board->bo_level_view)) { // 비밀글이면 패스워드 확인 if($data['wr_is_secret']!=0) { // 비회원이 쓴 비밀 글이라면 GET으로 비밀번호 받아와서 읽어 들임 if($data['mb_no']==0) { if(GV::Anything('password')!='') { if($data['wr_password'] == $this->Sql('password', GV::Anything('password'))) $pass = true; else $pass = '******'; } else { $pass = '******'; } } // 회원이 쓴 글이라면 해당 회원만 읽기 가능 else if($data['mb_no'] == Member::Inst()->mb_no) { $pass = true; } } else { $pass = true; } } } if($this->Config('mb','admin')) $pass = true;
$uploaded_files = array(); $number_of_files = sizeof($_FILES[$fName_file]['tmp_name']); for ($i = 0; $i < $number_of_files; $i++) { if (!$_FILES[$fName_file]['name'][$i]) { continue; } $file_name = $_FILES[$fName_file]['name'][$i]; $type = $_FILES[$fName_file]['type'][$i]; $tmp_name = $_FILES[$fName_file]['tmp_name'][$i]; $size = $_FILES[$fName_file]['size'][$i]; $wr_no = $att[1]; if (is_uploaded_file($tmp_name)) { $real_file_name = $this->Action('realfilename', $file_name); //$this->GenRealFileName($file_name); $upload_path = $this->Config('upload_path'); $dest_file = Path::Group($upload_path . $real_file_name); if (move_uploaded_file($tmp_name, $dest_file)) { chmod($dest_file, 0606); // insert record $insertData['mb_no'] = Member::Inst()->mb_no; $insertData['wr_no'] = $wr_no; $insertData['file_name'] = $file_name; $insertData['file_path'] = $upload_path . $real_file_name; $insertData['file_size'] = $size; $insertData['file_type'] = $type; $insertData['file_datetime'] = Util::GetDatetime(); $uploaded_files[] = DB::Get()->InsertEx($this->TBN(), $insertData); } } } $result = $uploaded_files;
<?php if (!defined("__MAGIC__")) { exit; } $this->logo = Layout::Inst('admin')->path_img('logo.png'); $this->logo_link = Path::Root('?r=admin'); $this->link_logout = Member::Inst()->Link('logout'); $this->link_home = Path::Root(); $this->btn_home = Layout::Inst('admin')->path_img('btn_home.gif'); $this->btn_logout = Layout::Inst('admin')->path_img('btn_logout.gif'); $this->link_design = Widget::Inst()->Config('link_design'); $this->link_page = Widget::Inst()->Config('link_page'); // 아이콘 if (Widget::Inst()->Config('is_design')) { $this->icon_design = Layout::Inst('admin')->path_img('icon_design_on.gif'); } else { $this->icon_design = Layout::Inst('admin')->path_img('icon_design_off.gif'); } if (Widget::Inst()->Config('is_page')) { $this->icon_page = Layout::Inst('admin')->path_img('icon_page_on.gif'); } else { $this->icon_page = Layout::Inst('admin')->path_img('icon_page_off.gif'); }
<?php if (!defined("__MAGIC__")) { exit; } $table = array(); $table['member'] = Member::Inst()->Table();
<?php if (!defined("__MAGIC__")) { exit; } foreach ($_POST['cf_id'] as $k => $v) { $clear = array('cf_value' => $_POST['cf_value'][$k], 'cf_desc' => $_POST['cf_desc'][$k]); // 관리자 아이디 업데이트 함 if ($v == 'admin') { $sql = " SELECT * from {$this->TBN()} WHERE cf_id='{$v}' "; $fetch = DB::Get()->sql_fetch($sql); DB::Get()->update(Member::Inst()->TBN(), array('mb_id' => $clear['cf_value']), " WHERE mb_id='{$fetch['cf_value']}' "); } DB::Get()->update($this->TBN(), $clear, " WHERE cf_id='{$v}' "); } Url::GoReplace($this->Link('list'));
<body> <div data-role="page"> <div data-theme="a" data-role="header"> <h3><?php echo Config::Inst()->hp_title; ?> </h3> <a href="<?php echo $root['link']; ?> " data-icon="home" data-iconpos="notext" data-direction="reverse">Home</a> <?php if (Member::Inst()->Action('is_login')) { ?> <a href="<?php echo Member::Inst('mbasic')->Link('logout'); ?> " data-transition="fade">Logout</a> <?php } else { ?> <a href="<?php echo Path::Root('?r=mobile_member'); ?> " data-transition="fade">Login</a> <?php } ?> <!-- 상단 네비게이션 --> <div data-role="navbar" data-iconpos="left"> <ul>
<?php if (!defined("__MAGIC__")) { exit; } /* * action파일 * action.*.php 파일은 Alert을 호출하지 않고 단순한 하나의 행동을하고 * 결과 값을 알려준다. * $result에 결과값을 저장해 줌 * -------------------------- * 서버에 저장될 파일명 생성 * $att[1] 첫번째 파라메터는 삭제할 파일번호다. */ $file_name = $att[1]; $mb_no = Member::Inst()->mb_no; // 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함 $file_name = preg_replace("/\\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "\$0-x", $file_name); $mb_no = sprintf("%05d", $mb_no); $datetime = date("ymd_His"); do { $realname = $mb_no . '_' . $datetime . '_' . substr(md5(uniqid(time())), 0, 4); $realname .= strrchr($file_name, '.'); $path = $this->Config('upload_path') . $realname; } while (is_file($path)); $result = $realname;
<?php if (!defined("__MAGIC__")) { exit; } $cfg = array(); $cfg['mode']['name'] = 'cmtMode'; // 현재 로그인한 회원정보 저장 $m = Member::Inst()->Action('login_info'); $cfg['mb'] = array('no' => $m['mb_no'], 'nick' => $m['mb_nick'], 'admin' => Member::Inst()->Action('is_admin'), 'login' => Member::Inst()->Action('is_login'), 'level' => $m['mb_level']);
/* 환경설정 정보 입력 */ $tbn_cfg = Config::Inst()->TBN(); /* mysql_query(" INSERT INTO `$tbn_cfg` SET `cf_id` = 'hp_title', `cf_type` = 'str', `cf_value` = '$hp_title', `cf_desc` = '홈페이지 타이틀' "); $this->msg[] = 'insert to config `hp_title`'; //*/ // 관리자 회원가입 $tbn_mb = Member::Inst()->TBN(); mysql_query("\n\t\tINSERT INTO `{$tbn_mb}` \n\t\t\tSET\n\t\t\t`mb_no` = NULL,\n\t\t\t`mb_id` = '{$admin_id}',\n\t\t\t`mb_passwd` = PASSWORD('{$admin_pass}'),\n\t\t\t`mb_nick` = '{$admin_name}',\n\t\t\t`mb_email` = '',\n\t\t\t`mb_level` = 10,\n\t\t\t`mb_grade` = 'admin',\n\t\t\t`mb_memo` = '',\n\t\t\t`mb_datetime` = NOW(),\n\t\t\t`mb_leave` = '0'\n\t"); $this->msg[] = '관리자 아이디 생성완료'; $sql_data = file_get_contents($this->path_view('data.sql')); $sql_data = str_replace('m3_board', $prefix . 'board', $sql_data); $sql_data = str_replace('m3_comment', $prefix . 'comment', $sql_data); $sql_data = str_replace('m3_config', $prefix . 'config', $sql_data); $sql_data = str_replace('m3_file', $prefix . 'file', $sql_data); $sql_data = str_replace('m3_magic', $prefix . 'magic', $sql_data); $sql_data = str_replace('m3_member', $prefix . 'member', $sql_data); $sql_data = str_replace('m3_widget', $prefix . 'widget', $sql_data); $sql_data = str_replace('m3_write', $prefix . 'write', $sql_data); foreach (explode(";\n", $sql_data) as $v) { if (trim($v)) { mysql_query($v) or die(mysql_error()); }