示例#1
0
 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;
 }
示例#2
0
<?php

if (!defined('__MAGIC__')) {
    exit;
}
$v = Widget::Inst()->Action('data_explode', $this->wg_no);
echo Member::Inst($v['skin'])->SetConfig('rows', '', $v['rows'])->html();
示例#3
0
	$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('글쓴이를 입력해 주세요.');
示例#4
0
 * 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
示例#5
0
<?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);
示例#6
0
<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>
示例#7
0
    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 
示例#8
0
<?php

if (!defined("__MAGIC__")) {
    exit;
}
if (!Member::Inst()->Action('is_admin')) {
    Dialog::alert('관리자 권한이 필요한 서비스 입니다.');
}
示例#9
0
$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');
示例#10
0
<?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');

示例#11
0
<?php

if (!defined("__MAGIC__")) {
    exit;
}
if (Member::Inst()->Action('is_login')) {
    $state = 'logout';
} else {
    $state = 'login';
}
示例#12
0
$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');
示例#13
0
<?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}'");
?>
示例#14
0
<?php if(!defined("__MAGIC__")) exit; 

// 게시글 보기 이외에는 관리자여야함
if($this->CurrentState()!='view' && !Member::Inst()->Action('is_admin'))
	Dialog::alert("권한이 없습니다.");
示例#15
0
<?php

if (!defined('__MAGIC__')) {
    exit;
}
$v = Widget::Inst()->Action('data_explode', $this->wg_no);
echo Member::Inst($v['skin'])->html();
示例#16
0
<?php

if (!defined("__MAGIC__")) {
    exit;
}
$this->contents = Member::Inst()->html();
$this->head = PageElement::Inst('head')->html();
示例#17
0
$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;
示例#18
0
$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;
示例#19
0
<?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');
}
示例#20
0
<?php

if (!defined("__MAGIC__")) {
    exit;
}
$table = array();
$table['member'] = Member::Inst()->Table();
示例#21
0
<?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'));
示例#22
0
<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>
示例#23
0
<?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;
示例#24
0
<?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']);
示例#25
0
 /* 환경설정 정보 입력 */
 $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());
     }