/** 외부로그인 * @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}&url=" . url(), 'url_join' => "{$mini['dir']}member.php?{$q}&url=" . url(), 'url_find' => "{$mini['dir']}login.find.php?{$q}&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; } }
<?php require "functions.php"; $uri = file_get_contents("php://input"); if (isHtml($uri)) { echo getSite($uri); }
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"); }
/** * 회원 수정 * @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; }
<?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");
/** * 로그인 * @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']}"); }
/** 코멘트 목록 뽑기 * @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; }
<?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++; }
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 }
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':