예제 #1
0
/** 외부로그인
 * @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}&amp;url=" . url(), 'url_join' => "{$mini['dir']}member.php?{$q}&amp;url=" . url(), 'url_find' => "{$mini['dir']}login.find.php?{$q}&amp;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;
    }
}
예제 #2
0
파일: temp.php 프로젝트: bluecat/iiwork-php
/** 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&amp;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']}&amp;no={$data['target_post']}&amp;cNo={$data['no']}";
    $data['url_del'] = "{$mini['dir']}cmt.x.php?id={$board_data['id']}&amp;no={$data['no']}&amp;mode=del&amp;script=move&amp;formMode=move&amp;url=" . url() . (!empty($_SESSION['pageCmtKey']) ? "&amp;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&amp;id={$board_data['id']}&amp;no={$data['no']}&amp;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']}&amp;mode=comment&amp;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']}&amp;group={$_REQUEST['group']}&amp;mode=comment&amp;no[]={$data['no']}&amp;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']}&amp;group={$_REQUEST['group']}&amp;mode=comment&amp;report=1&amp;no[]={$data['no']}&amp;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']}&amp;mode=comment&amp;no={$data['no']}&amp;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']}&amp;group={$_REQUEST['group']}&amp;target=_parent&amp;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']}&amp;group={$_REQUEST['group']}&amp;target=_parent&amp;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']}&amp;group={$_REQUEST['group']}&amp;target=_parent&amp;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;
    }
}