示例#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
<?php

require "functions.php";
$uri = file_get_contents("php://input");
if (isHtml($uri)) {
    echo getSite($uri);
}
示例#3
0
function deleteLink($lid)
{
    global $cfg;
    // Link Mod
    //AuditAction($cfg["constants"]["admin"], _DELETE." Link: ".getLink($lid));
    AuditAction($cfg["constants"]["admin"], _DELETE . " Link: " . getSite($lid) . " [" . getLink($lid) . "]");
    // Link Mod
    deleteOldLink($lid);
    header("location: admin.php?op=editLinks");
}
示例#4
0
/**
 * 회원 수정
 * @class admin.member
 * @param
		$data: 자료
		$no: 대상번호
		-is_check: 입력변수 체크 여부
*/
function editMember($data, $no, $param = '')
{
    global $mini;
    $param = param($param);
    def($param['is_check'], 1);
    $is_admin = !empty($mini['member']['level_admin']) && $mini['member']['level_admin'] >= 2;
    //// 수정할 수 없는 정보 제거
    unset($data['no']);
    unset($data['ip']);
    unset($data['ip_join']);
    unset($data['key_find']);
    unset($data['key_sms']);
    unset($data['key_login']);
    unset($data['date']);
    unset($data['date_login']);
    unset($data['count_login']);
    unset($data['count_vote']);
    unset($data['count_post']);
    unset($data['count_comment']);
    unset($data['count_recent_comment']);
    unset($data['history_login']);
    unset($data['mode']);
    unset($data['script']);
    unset($data['admin']);
    unset($data['id_mode']);
    if (!$is_admin) {
        unset($data['site']);
        unset($data['site_link']);
        unset($data['level']);
        unset($data['admit']);
        unset($data['confirm_co']);
        unset($data['confirm_mail']);
        unset($data['point']);
        unset($data['point_sum']);
        unset($data['money']);
        unset($data['count_alert']);
        unset($data['lock_login']);
        unset($data['history_admin']);
        unset($data['date_punish']);
    } else {
        $data['admit'] = $data['confirm_cp'] = $data['confirm_mail'] = 1;
    }
    if (isset($data['admit_sms'])) {
        $admit_sms = $data['admit_sms'];
    }
    //// 추가필드 권한 체크
    if (!empty($mini['site']['field'])) {
        foreach ($mini['site']['field'] as $key => $val) {
            if (empty($data['field'][$key]) && !empty($val['is_req'])) {
                __error("[{$val['name']}]을 입력해 주세요");
            }
        }
    }
    //// 변수 체크
    if ($param['is_check']) {
        checkFieldMember($data);
    }
    //// 넘어오지 않은 변수 처리
    if (!empty($mini['member']['level_admin']) && empty($data['site_link'])) {
        $data['site_link'] = '';
    }
    if (empty($data['open'])) {
        $data['open'] = '';
    }
    //// 번호 넣기
    if (is_array($no) && isset($data['name'])) {
        __error('회원 다중 수정에 닉네임 수정이 포함되어 있습니다');
    }
    if (!is_array($no)) {
        $tmp = $no;
        $no = array();
        $no[0] = $tmp;
    }
    foreach ($no as $key => $val) {
        //// 번호 체크
        check($val, 'type:num, name:회원번호');
        //// 데이터 로드
        $data_ex = sql("SELECT * FROM {$mini['name']['member']} WHERE no={$val}");
        if (!is_array($data_ex)) {
            __error('해당 회원이 존재하지 않습니다');
        }
        //// 권한체크
        if (!empty($mini['is_admin'])) {
            checkAdmin("\n\t\t\t\t\tsite: {$data_ex['site']}\n\t\t\t\t\ttype: ajax\n\t\t\t\t");
        }
        //// 아이디 중복 체크
        if (isset($data['uid'])) {
            check($data['uid'], 'type:id, name:회원아이디');
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and uid='{$data['uid']}'")) {
                __error('중복된 회원 아이디 입니다.');
            }
        }
        //// 닉네임 중복 체크
        if (isset($data['name'])) {
            if (empty($data['name'])) {
                __error('회원 닉네임을 입력해 주세요');
            }
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and name='{$data['name']}'")) {
                __error("중복된 닉네임 입니다.");
            }
        }
        //// 메일 중복 체크
        if (isset($data['mail'])) {
            if (empty($data['mail'])) {
                __error('메일을 입력해 주세요');
            }
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and mail='{$data['mail']}'")) {
                __error("중복된 메일 입니다.");
            }
        }
        //// 주민등록번호 중복 체크 및 암호화
        if (isset($data['jumin']) && $data['jumin']) {
            $data['jumin'] = md5($data['jumin']);
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and jumin='{$data['jumin']}'")) {
                __error("중복된 주민등록번호 입니다.");
            }
        }
        //// 주민등록번호 삭제 방지
        if (isset($data['jumin']) && empty($data['jumin']) && $data['jumin'] !== 0) {
            unset($data['jumin']);
        }
        if (isset($data['jumin']) && empty($data['jumin']) && $data['jumin'] === 0) {
            $data['jumin'] = '';
        }
        //// 사업자번호 중복 체크
        if (isset($data['co_num']) && $data['co_num']) {
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and co_num='{$data['co_num']}'")) {
                __error("중복된 사업자등록번호 입니다.");
            }
        }
        //// 인증받은 자료 변경시 인증 풀림
        if (!$is_admin) {
            if (!empty($data_ex['confirm_mail']) && $data_ex['mail'] != $data['mail']) {
                $data['confirm_mail'] = 0;
            }
            if (!empty($data_ex['confirm_cp']) && $data_ex['cp'] != $data['cp']) {
                $data['confirm_cp'] = 0;
            }
        }
        //// SMS인증 확인
        if (!empty($admit_sms) && !empty($mini['site']['admit']) && $mini['site']['admit'] == 'sms' && !$is_admin) {
            if (empty($data_ex['key_sms'])) {
                __error('인증번호를 받지 않았습니다');
            }
            $tmp = explode("|", $data_ex['key_sms']);
            if ($admit_sms != $tmp[0]) {
                __error('인증번호가 일치하지 않습니다');
            }
            if ($data['cp'] != $tmp[1]) {
                __error('인증받은 휴대전화번호가 아닙니다');
            }
            if ($mini['time'] - 300 > strtotime($tmp[2])) {
                __error('5분이 경과되었습니다. 다시 인증번호를 신청하시기 바랍니다');
            }
            $data['admit'] = 1;
            $data['key_sms'] = $data['key_find'] = '';
            $data['confirm_cp'] = 1;
        }
        //// 필수입력 정보 사이트 정보대로 처리해야 함
        if (!empty($mini['site']['join_check'])) {
            $tmp = '';
            foreach ($mini['site']['join_check'] as $key2 => $val2) {
                if (empty($data[$key2]) && !empty($val2['name'])) {
                    $tmp = !empty($tmp) ? $tmp . ",{$val2['name']}" : $val2['name'];
                }
            }
            if (!empty($tmp)) {
                __error("필수입력정보를 입력해 주세요. [{$tmp}]");
            }
        }
        //// 기본변수 여부 체크
        if (isset($data['site']) && !check($data['site'], 'type:num')) {
            __error("그룹을 선택해 주세요");
        }
        //// 다른 회원의 정보를 수정할 때 권한 체크
        // 그룹 정보를 저장
        if (!empty($mini['site'])) {
            $tmp_site = $mini['site'];
        }
        // 파싱
        if ($mini['member']['level_admin'] < 3) {
            $mini['member']['level_admin'] = 0;
        }
        getSite($data_ex['site']);
        $tmp = parseMember($data_ex, 1);
        if (empty($mini['member']['level_admin']) && count(array_intersect($mini['member']['site_admin'], $tmp['site_link_arr']))) {
            $mini['member']['level_admin'] = 2;
        }
        // 비교
        if (!empty($mini['member']['level_admin']) && $mini['member']['no'] != $data_ex['no'] && $mini['member']['level_admin'] < 4 && $mini['member']['level_admin'] <= $tmp['level_admin']) {
            __error('자신보다 높은 권한의 관리자 정보를 수정/열람할 수 없습니다');
        }
        if (!empty($tmp_site)) {
            $mini['site'] = $tmp_site;
            unset($tmp_site);
        }
        //// 쿼리
        sql("UPDATE {$mini['name']['member']} SET " . query($data, 'update') . " WHERE no={$val}");
        //// 번호 재입력
        $data['no'] = $val;
        //// 로그 기록
        addLog(array('mode' => 'member_edit', 'field1' => $data['no']));
    }
}
/**
 * deleteLink
 */
function admin_deleteLink()
{
    global $cfg;
    $lid = tfb_getRequestVar('lid');
    AuditAction($cfg["constants"]["admin"], $cfg['_DELETE'] . " Link: " . getSite($lid) . " [" . getLink($lid) . "]");
    deleteOldLink($lid);
    // flush session-cache
    cacheFlush();
    @header("location: admin.php?op=editLinks");
    exit;
}
示例#6
0
<?php

function getSite($website)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $website);
    curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $output = curl_exec($ch);
    curl_close($ch);
    header("Access-Control-Allow-Origin: *");
    header('Content-Type: application/javascript');
    return $output;
}
echo getSite("http://www.reddit.com/r/circlejerk.json");
示例#7
0
/**
 * 로그인
 * @class login
 * @param
		$data: POST array
		-site: 그룹번호
		-board: 게시판번호
		-is_passed: 무조건로그인[0!|1]
*/
function setLogin(&$data, $param)
{
    global $mini;
    $param = param($param);
    iss($data['uid']);
    iss($data['pass']);
    iss($data['pass_encode']);
    iss($data['autologin']);
    iss($mini['set']['use_login_session']);
    iss($pass_after);
    iss($key_login);
    iss($autologin_after);
    def($mini['this']['script'], $_REQUEST['script']);
    def($mini['this']['script'], 'back');
    def($mini['set']['lock_login'], 5);
    def($param['is_passed'], 0);
    $site_data = $board_data = array();
    $site = '';
    if (empty($param['site'])) {
        __error('선택된 그룹이 없습니다.' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')');
    }
    //// 그룹 로드
    if (!empty($mini['site']) && $mini['site']['no'] == $param['site']) {
        $site_data = $mini['site'];
    } else {
        $site_data = getSite($param['site'], 1);
    }
    //// 게시판 로드
    if (!empty($param['board'])) {
        if (!empty($mini['board']) && $mini['board']['no'] == $param['board']) {
            $board_data = $mini['board'];
        } else {
            $board_data = getBoard($param['board'], 1);
        }
    } else {
        if (!empty($mini['board']['site']) && $mini['board']['site'] == $site_data['no']) {
            $board_data = $mini['board'];
        }
    }
    //// 변수 검사
    check($data['uid'], "name: 아이디");
    if (!$param['is_passed']) {
        check($data['pass_encode'], "type:id, name:암호화된 비밀번호, min:16, max:40");
    }
    if (!isset($site_data)) {
        __error('선택된 그룹이 없습니다.');
    }
    $data['uid'] = mysql_escape_string($data['uid']);
    //// 미니아이 로그인
    if (preg_match("/^\\@/", $data['uid'])) {
        __error('준비중 입니다.');
    } else {
        $site = "[{$site_data['no']}]";
        // 그룹의 그룹연결
        if (!empty($site_data['site_link'])) {
            $site .= $site_data['site_link'];
        }
        // 게시판의 그룹연결
        if (!empty($board_data['site_link'])) {
            $site .= $board_data['site_link'];
        }
    }
    //// 데이터 로드
    $tmp_data = sql("q:SELECT * FROM {$mini['name']['member']} WHERE uid='{$data['uid']}', mode:array");
    //// 아이디 확인
    if (!is_array($tmp_data)) {
        __error('일치하는 회원이 없습니다');
    }
    //// 그룹 확인
    $check = 0;
    foreach ($tmp_data as $key => $val) {
        if (inStr($val['site'], $site) || count(array_intersect(getStr($site), getStr($val['site_link']))) || inStr('god', $val['admin']) || inStr('admin', $val['admin'])) {
            $check = 1;
            $data_ex = $val;
        }
    }
    if (!$check) {
        __error('일치하는 회원이 없습니다');
    }
    //// 컨버팅 회원 확인
    if (preg_match("/^\\!/", $data_ex['pass'])) {
        if (!empty($mini['complete']['ajax'])) {
            __complete(array('mode' => 'ajax,reload.parent', 'script' => "window.open(\"{$mini['dir']}login.conv.php?no={$data_ex['no']}\", \"conv\", \"width=400, height=400, scrollbars=2\");"));
        } else {
            __complete(array('mode' => 'move', 'url' => "{$mini['dir']}login.conv.php?no={$data_ex['no']}"));
        }
    }
    //// 실패 회수 확인
    if ($data_ex['lock_login'] >= $mini['set']['lock_login'] && $data_ex['no'] != 1) {
        __error("로그인을 {$mini['set']['lock_login']}회 이상 실패하여 아이디가 잠겼습니다. 관리자에게 문의하세요");
    }
    //// 비밀번호 확인
    if (!$param['is_passed'] && $data['pass_encode'] != md5("{$data_ex['pass']}|{$mini['ip']}|" . session_id())) {
        if ($data_ex['pass'] == 'reset!') {
            __error('비밀번호가 초기화 되었습니다. 아이디/비밀번호 찾기를 통해 새 비밀번호로 설정해 주세요');
        }
        sql("UPDATE {$mini['name']['member']} SET lock_login = lock_login + 1 WHERE no={$data_ex['no']}");
        addLog("\n\t\t\t\tmode: login_lock_login\n\t\t\t\ttarget_member: {$data_ex['no']}\n\t\t\t\tfield1: {$data_ex['lock_login']}\n\t\t\t");
        __error("비밀번호가 일치하지 않습니다 (" . ($data_ex['lock_login'] + 1) . "회 오류)");
    }
    //// 암호화
    // 자동 로그인
    if ($data['autologin']) {
        $pass_after = '';
        $key_login = md5($mini['date']);
        $autologin_after = md5("{$data_ex['pass']}|{$mini['ip']}|{$key_login}");
        $interval = time() + 2592000;
        // 30 days after
    } else {
        $pass_after = md5("{$data_ex['pass']}|{$mini['ip']}");
        $key_login = $autologin_after = '';
        $interval = 0;
    }
    //// 굽기
    // 세션
    if ($mini['set']['use_login_session']) {
        $_SESSION['m_no'] = $data_ex['no'];
        $_SESSION['m_pass'] = $pass_after;
    } else {
        setcookie("m_no", $data_ex['no'], $interval, '/');
        setcookie("m_pass", $pass_after, $interval, '/');
    }
    // 자동로그인
    if ($data['autologin']) {
        setcookie("m_no", $data_ex['no'], $interval, '/');
        setcookie("m_autologin", $autologin_after, $interval, '/');
    } else {
        setcookie("m_autologin", '', 0, '/');
    }
    //// 로그인 기록 추가
    def($mini['set']['login_history_count'], 10);
    $data_ex['history_login'] .= "{$mini['ip']}|{$mini['date']}\n";
    $tmp = explode("\n", $data_ex['history_login']);
    if (count($tmp) > $mini['set']['login_history_count']) {
        unset($tmp[0]);
    }
    $data_ex['history_login'] = is_array($tmp) ? implode("\n", $tmp) : "";
    //// 로그인 포인트 설정
    if (!empty($site_data['point_login'])) {
        if (!sql("SELECT COUNT(*) FROM {$mini['name']['log']} WHERE mode='point' and target_member={$data_ex['no']} and field3='로그인' and date >= '" . date("Y/m/d 00:00:00", $mini['time']) . "'")) {
            setPoint("\n\t\t\t\t\ttarget: {$data_ex['no']}\n\t\t\t\t\tmsg: 로그인\n\t\t\t\t\tpoint: {$site_data['point_login']}\n\t\t\t\t");
        }
    }
    //// 다중 자동로그인 설정
    //+ 정식버젼에서 지울 구문임
    if (!empty($data_ex['ip']) && strpos($data_ex['ip'], '[') === false) {
        $data_ex['ip'] = "[{$data_ex['ip']}]";
    }
    if (!empty($data_ex['key_login']) && strpos($data_ex['key_login'], '[') === false) {
        $data_ex['key_login'] = "******";
    }
    if (empty($key_login)) {
        $key_login = '******';
    }
    // 입력
    $data_ex['ip'] .= "[{$mini['ip']}]";
    $data_ex['key_login'] .= "[{$key_login}]";
    // 3개 한정
    $arr_ip = getStr($data_ex['ip']);
    if (count($arr_ip) > 5) {
        unset($arr_ip[0]);
        $data_ex['ip'] = "[" . implode("][", $arr_ip) . "]";
    }
    $arr_key_login = getStr($data_ex['key_login']);
    if (count($arr_key_login) > 5) {
        unset($arr_key_login[0]);
        $data_ex['key_login'] = "******" . implode("][", $arr_key_login) . "]";
    }
    //// DB수정
    sql("UPDATE {$mini['name']['member']} SET ip='{$data_ex['ip']}', date_login='******'date']}', key_login='******'key_login']}', lock_login=0, count_login=count_login+1, history_login='******'history_login']}' WHERE no={$data_ex['no']}");
}
示例#8
0
/** 코멘트 목록 뽑기
 * @class io
 * @param
		-name: 검색배열이름 (list_cmt)
		-id: 게시판아이디, board_data가 있으면 없어도 된다
		-page: 페이지 (마지막페이지)
		-target_post: 대상게시물번호. view가 있으면 없어도 된다
		$board_data: 게시판정보
		$view: 게시물정보
 * @return Array
 */
function getListCmt($param, $board_data = '', $view = '')
{
    global $mini;
    $param = param($param);
    $output = array();
    iss($param['page']);
    def($param['name'], 'list_cmt');
    def($_REQUEST['cPage'], $param['page']);
    def($_REQUEST['cPage'], 999999999999);
    //// 게시판정보
    if (empty($board_data) && !empty($param['id'])) {
        getBoard($param['id']);
        if (empty($mini['site']) || $mini['site']['no'] != $mini['board']['site']) {
            getSite($mini['board']['site']);
        }
    } else {
        if (empty($board_data) && !empty($mini['board'])) {
            $board_data = $mini['board'];
        }
    }
    //// 게시물정보
    if (empty($view)) {
        $view = sql("SELECT * FROM {$board_data['table']} WHERE no={$param['target_post']}");
        if (!is_array($view)) {
            __error('게시물이 존재하지 않습니다' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')');
        }
        parsePost($view);
        $output['view'] = $view;
    } else {
        $param['target_post'] = $view['no'];
    }
    $is_comment_page = !empty($board_data['use_comment_page']) && !empty($board_data['list_count_comment']) ? 1 : 0;
    if (!$is_comment_page) {
        $board_data['list_count_comment'] = 9999999;
    }
    //// 공지사항 제외
    $is_first = 0;
    if ($is_comment_page || empty($_REQUEST['cQuick']) && empty($_REQUEST['cS']) && empty($_REQUEST['cSort'])) {
        $_REQUEST['cS']['notice!'] = 0;
        $is_first = 1;
    }
    $_REQUEST['cAnd'] = 1;
    //// 검색 처리
    setSearch("\n\t\t\tname: {$param['name']}\n\t\t\tquickName: cQuick\n\t\t\tsName: cS\n\t\t\tandName: cAnd\n\t\t\tis_simple: 1\n\t\t");
    //// 기본 검색쿼리 지정
    check($param['target_post'], 'type:num, name:게시물번호');
    $tmp_trackback = !empty($board_data['use_trackback_cmt']) ? '' : " and trackback=''";
    $mini['list'][$param['name']]['where'] = !empty($mini['list'][$param['name']]['where']) ? $mini['list'][$param['name']]['where'] . " and target_post={$param['target_post']}{$tmp_trackback}" : "WHERE target_post={$param['target_post']}{$tmp_trackback}";
    //// 공지사항 로드
    if ($is_first) {
        $notice = sql("q:SELECT * FROM {$board_data['table_cmt']} WHERE notice=1 and target_post={$param['target_post']} ORDER BY num, mode:array");
        $output['notice'] = $notice;
    }
    //// 정렬 처리
    setSort("\n\t\t\tname: {$param['name']}\n\t\t\tsortName: cSort\n\t\t\ttable: {$board_data['table_cmt']}\n\t\t\torder: ORDER BY num, reply\n\t\t\torder_desc: ORDER BY num DESC, reply ASC\n\t\t");
    //// 리스트
    $data = getList("\n\t\t\tname: {$param['name']}\n\t\t\tlist: {$board_data['list_count_comment']}\n\t\t\ttable: {$board_data['table_cmt']}\n\t\t\tpageName: cPage\n\t\t\tdivName: cDiv\n\t\t\tstartName: cStart\n\t\t");
    $output['data'] = $data;
    //		pr($mini['list'][$param['name']]);
    //// 트랙백 같이 뽑기
    /*
    	$t_data = array();
    	if (!empty($board_data['use_trackback_cmt'])) {
    		$t_data = sql("q:SELECT * FROM {$board_data['table_cmt']} WHERE target_post={$view['no']} and trackback!='' ORDER BY num, mode:array");
    		$output['data'] = array_merge($t_data, $output['data']);
    		unset($t_data);
    	}
    */
    //// 트랙백 따로 뽑기
    if ($is_first && empty($board_data['use_trackback_cmt'])) {
        $t_data = sql("q:SELECT * FROM {$board_data['table_cmt']} WHERE target_post={$view['no']} and trackback!='' ORDER BY num, mode:array");
        $output['trackback'] = $t_data;
    }
    return $output;
}
示例#9
0
<?php

require "functions.php";
$dir = dirname(__FILE__);
$path = $dir . "/tmp/data.txt";
$data = fread_all($path);
$loads = json_decode($data);
$i = 0;
foreach ($loads as $load) {
    // getSite
    $content = getSite($load->baseurl);
    if (!$content) {
        continue;
    }
    // createFeed
    $feed = getRss2String($content, $load);
    // save
    fsave($dir . "/feeds/feed_" . sprintf("%05d", $i) . ".xml", $feed, "w");
    $i++;
}
示例#10
0
function getVIVOPersonData($search)
{
    include_once "arc2/ARC2.php";
    $identifier = getURI($search);
    $personURI = $search;
    //What's the VIVO URI for this person?
    $site = getSite($search);
    $personRDF = "http://" . $site . "/individual/" . $identifier . "/" . $identifier . ".rdf";
    //Where is the raw RDF?
    $personSubject = "http://" . $site . "/individual/" . $identifier;
    $parser = ARC2::getRDFParser();
    $parser->parse($personRDF);
    $index = $parser->getSimpleIndex();
    //Get the person's name, this should be checking for foaf:firstName, but it doesn't exist anywhere I've seen.
    //First, let's try for an active directory name. This only exists on the UF VIVO ontology extension
    $personName = $index[$personSubject]["http://vivo.ufl.edu/ontology/vivo-ufl/activeDirName"][0];
    //If we don't find it..
    if (strlen($personName) < 1) {
        //Fallback to rdfs:label
        $personName = $index[$personSubject]["http://www.w3.org/2000/01/rdf-schema#label"][0];
    }
    //End getting person's name
    //Get person's title
    //Try the default location
    $position = $index[$personSubject]["http://vivoweb.org/ontology/core#preferredTitle"][0];
    //	echo "Preferred Title of: ".$position."<br>";
    //We're going to set the initial position URL here so we can use it later
    $positionURL = $index[$personSubject]["http://vivoweb.org/ontology/core#personInPosition"][0];
    $positionIdentifier = getURI($positionURL);
    $positionRDF = "http://" . $site . "/individual/" . $positionIdentifier . "/" . $positionIdentifier . ".rdf";
    $positionSubject = "http://" . $site . "/individual/" . $positionIdentifier;
    //If we don't find it there, try in the position
    //First, we need to find out which is their current position
    //To do that, we need to loop through all of their positions
    $round = 0;
    $startYear = 0;
    if (strlen($index[$personSubject]["http://vivoweb.org/ontology/core#personInPosition"]) > 0) {
        foreach ($index[$personSubject]["http://vivoweb.org/ontology/core#personInPosition"] as $value) {
            $positionURL = $index[$personSubject]["http://vivoweb.org/ontology/core#personInPosition"][$round];
            //		echo "Current highest year is ".$startYear." For position ".$positionURL."<br>";
            $positionIdentifier = getURI($positionURL);
            $positionRDF = "http://" . $site . "/individual/" . $positionIdentifier . "/" . $positionIdentifier . ".rdf";
            $positionSubject = "http://" . $site . "/individual/" . $positionIdentifier;
            $startParser = ARC2::getRDFParser();
            $startParser->parse($positionRDF);
            $startIndex = $startParser->getSimpleIndex();
            //		print_r($startIndex);
            $newYear = $startIndex[$positionSubject]["http://vivoweb.org/ontology/core#startYear"][0];
            //		echo "Start year for that position is:".$newYear."<br>";
            if ($newYear > $startYear) {
                $startYear = $newYear;
                $positionURLFinal = $positionURL;
            }
            //		echo "Current final URL is ".$positionURLFinal."<br>";
            $round = $round + 1;
        }
    }
    //	echo "Newest position is: ".$positionURLFinal.". With a start year of ".$startYear;
    //Then let the next bit of code run
    if (strlen($position) < 1) {
        //		echo "Trying to pull position data from ".$positionURLFinal."<br>";
        //		$positionURL = $index[$personSubject]["http://vivoweb.org/ontology/core#personInPosition"][0];
        if (isURLValid($positionURLFinal)) {
            //			echo "URL was Valid<br>";
            $positionParser = ARC2::getRDFParser();
            $positionIdentifier = getURI($positionURLFinal);
            $positionRDF = "http://" . $site . "/individual/" . $positionIdentifier . "/" . $positionIdentifier . ".rdf";
            $positionSubject = "http://" . $site . "/individual/" . $positionIdentifier;
            $positionParser->parse($positionRDF);
            $positionIndex = $positionParser->getSimpleIndex();
            //Let's check for an HR job title first
            $position = $positionIndex[$positionSubject]["http://vivoweb.org/ontology/core#hrJobTitle"][0];
            //If we don't find one
            if (strlen($position) < 1) {
                //Fallback to the label
                $position = $positionIndex[$positionSubject]["http://www.w3.org/2000/01/rdf-schema#label"][0];
            }
        } else {
            //If the first position link is bad, try the second one.
            $positionURL = $index[$personSubject]["http://vivoweb.org/ontology/core#personInPosition"][1];
            $positionIdentifier = getURI($positionURL);
            $positionRDF = "http://" . $site . "/individual/" . $positionIdentifier . "/" . $positionIdentifier . ".rdf";
            $positionSubject = "http://" . $site . "/individual/" . $positionIdentifier;
            $positionParser = ARC2::getRDFParser();
            $positionParser->parse($positionRDF);
            $positionIndex = $positionParser->getSimpleIndex();
            //Let's check for an HR job title first
            $position = $positionIndex[$positionSubject]["http://vivoweb.org/ontology/core#hrJobTitle"][0];
            //If we don't find one
            if (strlen($position) < 1) {
                //Fallback to the label
                $position = $positionIndex[$positionSubject]["http://www.w3.org/2000/01/rdf-schema#label"][0];
            }
        }
    }
    //End getting title
    //Begin getting Email
    $personEmail = $index[$personSubject]["http://vivoweb.org/ontology/core#workEmail"][0];
    //End getting email
    //Begin getting phone
    $personPhone = $index[$personSubject]["http://vivoweb.org/ontology/core#workPhone"][0];
    //End Getting phone
    //Begin getting Fax
    $personFax = $index[$personSubject]["http://vivoweb.org/ontology/core#workFax"][0];
    //End Getting Fax
    //Begin getting department
    $positionParser = ARC2::getRDFParser();
    $positionIdentifier = getURI($positionURLFinal);
    $positionRDF = "http://" . $site . "/individual/" . $positionIdentifier . "/" . $positionIdentifier . ".rdf";
    $positionParser->parse($positionRDF);
    $positionIndex = $positionParser->getSimpleIndex();
    $positionSubject = "http://" . $site . "/individual/" . $positionIdentifier;
    $departmentURL = $positionIndex[$positionSubject]["http://vivoweb.org/ontology/core#positionInOrganization"][0];
    $departmentIdentifier = getURI($departmentURL);
    $departmentRDF = "http://" . $site . "/individual/" . $departmentIdentifier . "/" . $departmentIdentifier . ".rdf";
    $departmentSubject = "http://" . $site . "/individual/" . $departmentIdentifier;
    $departmentParser = ARC2::getRDFParser();
    $departmentParser->parse($departmentRDF);
    $departmentIndex = $departmentParser->getSimpleIndex();
    $department = $departmentIndex[$departmentSubject]["http://www.w3.org/2000/01/rdf-schema#label"][0];
    //End getting department
    //Begin getting image
    //End getting image
    $imageURL = $index[$personSubject]["http://vitro.mannlib.cornell.edu/ns/vitro/public#mainImage"][0];
    $imageIdentifier = getURI($imageURL);
    $imageRDF = "http://" . $site . "/individual/" . $imageIdentifier . "/" . $imageIdentifier . ".rdf";
    $imageSubject = "http://" . $site . "/individual/" . $imageIdentifier;
    $imageParser = ARC2::getRDFParser();
    $imageParser->parse($imageRDF);
    $imageIndex = $imageParser->getSimpleIndex();
    $filename = $imageIndex[$imageSubject]["http://vitro.mannlib.cornell.edu/ns/vitro/public#filename"][0];
    $downloadLocation = $imageIndex[$imageSubject]["http://vitro.mannlib.cornell.edu/ns/vitro/public#downloadLocation"][0];
    $fullsizeURI = getURI($downloadLocation);
    $fullsizeURL = "http://" . $site . "/file/" . $fullsizeURI . "/" . $filename;
    //End getting image
    $vivoName = strip_tags($personName);
    $vivoTitle = strip_tags($position);
    $vivoEmail = strip_tags($personEmail);
    $vivoLink = strip_tags($personURI);
    $vivoPhone = strip_tags($personPhone);
    $vivoFax = strip_tags($personFax);
    $vivoDepartment = strip_tags($department);
    $vivoImage = strip_tags($fullsizeURL);
    //Now let's output the data.
    echo "<div id=\"vivoPerson\">\n";
    if (strlen($imageURL) > 0) {
        echoImageDiv("vivoImage", $vivoImage, $vivoName);
    } else {
        echoImageDiv("vivoImage", "noimage.jpg", $vivoName);
    }
    echoDiv("vivoName", $vivoName);
    //Done
    echoDiv("vivoTitle", $vivoTitle);
    //Done
    echoDiv("vivoDepartment", $vivoDepartment);
    echoDiv("vivoPhone", $vivoPhone);
    //Done
    echoDiv("vivoFax", $vivoFax);
    //Done
    echoEmailDiv("vivoEmail", $vivoEmail);
    //Done
    echoLinkDiv("vivoLink", $vivoLink);
    //Done
    echo "</div>";
    //TODO: Write a method to clear up some of that repetitive code
}
示例#11
0
while ($row = mysqli_fetch_row($gettbl_res)) {
    echo $row[0] . "\n";
    $tblname = $row[0];
    echo "Deleting table....";
    //sleep(1);
    mysqli_query($conn, "drop table IF EXISTS {$tblname}") or die("Cannot delete table -- " . mysqli_error($conn));
    $tblname_percent = substr($tblname, 0, strlen($tblname) - 1) . "b";
    mysqli_query($conn, "drop table IF EXISTS {$tblname_percent}") or die("Cannot delete table -- " . mysqli_error($conn));
    $rows_arr = getRowsArr($tblname, $conn);
    $first_col_name = getFirstColName($tblname, $conn);
    create_table($tblname, $rows_arr, $first_col_name, $conn);
    $tblname_percent = substr($tblname, 0, strlen($tblname) - 1) . "b";
    mysqli_query($conn, "CREATE TABLE {$tblname_percent} LIKE {$tblname}") or die("Cannot create new percent table -- " . mysqli_error($conn));
    mysqli_query($conn, "INSERT {$tblname_percent} SELECT * FROM {$tblname}") or die("Cannot insert in new percent table -- " . mysqli_error($conn));
    $qry_index = getQuery($tblname, $conn);
    $site = getSite($tblname, $conn);
    $col_names = getTableHeaders($tblname, $conn);
    switch ($tblname) {
        case '1a':
        case '2a':
        case '3a':
        case '4a':
        case '5a':
        case '6a':
            call_user_func_array("tab_1_2", array($conn, $tblname, $tblname_percent, $first_col_name, $rows_arr, $col_names, $qry_index));
            break;
        case '7a':
        case '8a':
        case '9a':
        case '10a':
        case '11a':