function getPosts($connection, $query, $comments, $username) { $quer = mysqli_query($connection, $query); $result = ""; while ($row = mysqli_fetch_array($quer)) { $result = $result . parsePost($connection, $row['id'], $row['author'], $row['post'], $row['group'], $comments, $username); } return $result; }
function main() { if (isset($_GET['lang']) && $_GET['lang'] == 'en') { $lang = 'en'; } else { $lang = 'no'; } $json = getJson($lang); $form = parsePost($json); if (strlen($form['result']) > 0) { // If all fields in $_POST were valid saveForm($form['name'], $form['email'], $form['message']); } require 'cvLayout.php'; }
/** * Make the request to Facebook for posts */ function handlePostsRequest($fb, $requestString, $myfile, $mysqli, $outputToFileFlag, $outputToScreenFlag, $outputToDBFlag) { try { $request = $fb->request('GET', $requestString); $response = $fb->getClient()->sendRequest($request); $pagesEdge = $response->getGraphEdge(); //$pageCount = 0; $postCount = 0; do { // Iterate over all the GraphNode's returned from the edge foreach ($pagesEdge as $page) { $postData = $page->asArray(); parsePost($postCount, $postData, $outputToScreenFlag, $outputToFileFlag, $myfile, $mysqli, $outputToDBFlag); //getMoreInfo($fb, $postData["id"]); $postCount++; //var_dump($post_data); } // $pageCount++; // Get the next page of results } while ($pagesEdge = $fb->next($pagesEdge)); echo "Post Total: " . $postCount; } catch (Facebook\Exceptions\FacebookResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); return false; } catch (Facebook\Exceptions\FacebookSDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); return false; } return true; }
/** 댓글 등록 * @class write * @param $data: 글쓰기 data, 이미 check와 가공이 끝난 데이터여야 함 $board_data: 게시판 설정 data -id: 게시판 아이디. 게시판 설정 data가 없을 때 아이디를 토대로 설정을 로드한다. -target_post: 타겟 게시물 지정 -is_check: 입력변수 체크 여부 -target_member: 대상회원을 지정할 수 있음 -target_post: 대상게시물번호 -target_num: 대상게시물num -trackback -is_conv: 컨버팅 -is_manage: 게시물관리 * @return Array data */ function addCmt($data, $board_data = '', $param = '') { global $mini; $param = param($param); $output_conv_update_reply = ''; iss($data_post); iss($data_reply); iss($param['id']); iss($param['target_post']); iss($param['target_num']); def($param['is_check'], 1); iss($data_before); iss($param['is_conv']); $trackback = $trackback_excerpt = $trackback_charset = ''; if (!empty($data['trackback'])) { $trackback = $data['trackback']; } if (!empty($data['trackback_excerpt'])) { $trackback_excerpt = $data['trackback_excerpt']; } if (!empty($data['trackback_charset'])) { $trackback_charset = $data['trackback_charset']; } $is_saveImage = !empty($data['saveImage']) ? 1 : 0; if (empty($param['is_conv'])) { unset($data['no']); unset($data['target_member']); unset($data['trackback']); unset($data['report']); unset($data['ip']); unset($data['vote']); unset($data['hate']); unset($data['download']); unset($data['date_last']); unset($data['history_vote']); unset($data['is_del']); if (empty($mini['member']['level_admin'])) { unset($data['num']); unset($data['parent']); unset($data['ment_advice']); unset($data['is_lock']); unset($data['admit_file']); unset($data['admit_post']); unset($param['target_member']); unset($data['date']); } } iss($data['notice']); iss($data['secret']); iss($data['pass_encode']); iss($data['target_post']); iss($data['num']); iss($data['reply']); iss($data['parent']); iss($param['target_member']); if (!is_array($data)) { __error('입력된 데이터가 없습니다'); } //// 게시판 설정 if (!is_array($board_data)) { if ($param['id']) { $board_data = getBoard($param['id'], 1); } else { __error('게시판 설정이 없습니다'); } } //// 기본 규칙 체크 if (empty($param['is_conv'])) { // 공지사항 체크 if ($data['notice'] && $data['secret']) { __error('공지사항은 비밀댓글일 수 없습니다'); } // punish if (!empty($mini['log']) && !empty($mini['member']['no']) && empty($mini['member']['level'])) { __error('징계상태에서 댓글을 쓸 수 없습니다'); } // 추가필드 권한 체크 if (!empty($board_data['field'])) { foreach ($board_data['field'] as $key => $val) { if (!empty($data['field'][$key]) && !empty($val['is_admin']) && empty($mini['member']['level_admin'])) { __error("[{$val['name']}]은 관리자만 입력하실 수 있습니다"); } if (empty($data['field'][$key]) && !empty($val['is_req'])) { __error("[{$val['name']}]을 입력해 주세요"); } } } // 코멘트 점수주기 변수 담아놓기 if (!empty($data['point'])) { $point = $data['point']; unset($data['point']); if (preg_match("/[^0-9]/", $point)) { __error('댓글 점수주기는 정수만 입력할 수 있습니다'); } } // 연속 댓글 체크 if (!empty($board_data['limit_comment']) && empty($mini['member']['level_admin'])) { if ($board_data['limit_comment'] < 2) { $board_data['limit_comment'] = 2; } //+이 쿼리 속도를 확인해 봐야 함 $tmp_limit_array = array(); $tmp_limit_array = sql("q:SELECT ip FROM {$board_data['table_cmt']} ORDER BY date DESC LIMIT " . ($board_data['limit_comment'] - 1) . ", mode:firstFieldArray"); if (!is_array($tmp_limit_array)) { $tmp_limit_array = array(); } if (!count(array_diff($tmp_limit_array, array($mini['ip']))) && sql("SELECT COUNT(*) FROM {$board_data['table_cmt']} LIMIT " . ($board_data['limit_comment'] - 1)) > $board_data['limit_comment'] - 1) { __error("연속으로 {$board_data['limit_comment']}번 이상 댓글을 작성하실 수 없습니다"); } } } //// 입력변수 체크 def($data['target_post'], $param['target_post']); check($data['target_post'], "type:num, name:대상게시물번호"); if ($param['is_check']) { checkField($data, $board_data['table_cmt'], $param); if (empty($param['is_conv']) && !getPermit("name: comment")) { __error('권한이 없습니다'); } } //// 대상 게시물 정보 로드 if ($param['target_post'] && $param['target_num']) { $data_post['num'] = $param['target_num']; } else { $data_post = sql("SELECT * FROM {$board_data['table']} WHERE no={$data['target_post']}"); } if (!is_array($data_post)) { __error('대상 게시물이 존재하지 않습니다'); } //// 잠긴글 if (empty($param['is_conv']) && empty($mini['member']['level_admin']) && !empty($data_post['is_lock'])) { __error('게시물이 잠겨 있어 댓글을 작성할 수 없습니다'); } //// 지난글 댓글제한 if (empty($param['is_conv']) && !empty($board_data['reject_comment']) && empty($mini['member']['level_admin']) && empty($data_post['notice'])) { if ($mini['time'] - strtotime($data_post['date']) > $board_data['reject_comment'] * 86400) { __error("{$board_data['reject_comment']}일이 지난 글에는 댓글을 작성할 수 없습니다"); } } //// 번호 if (empty($param['is_conv']) || empty($data['num'])) { $data['num'] = sql("SELECT MAX(num) FROM {$board_data['table_cmt']} WHERE target_post={$data['target_post']}"); if (empty($data['num'])) { $data['num'] = 0; } $data['num']++; } //// 답변 댓글 설정 if (empty($param['is_conv']) && $data['reply'] && empty($data['parent'])) { check($data['reply'], "type:num, name:대상댓글번호"); $data_reply = sql("SELECT * FROM {$board_data['table_cmt']} WHERE no={$data['reply']}"); if (!is_array($data_reply)) { __error('대상댓글이 존재하지 않습니다'); } if (!empty($data_reply['is_del'])) { __error('삭제된 댓글에는 댓글을 달 수 없습니다'); } if (!empty($data_reply['notice'])) { __error('공지댓글에는 댓글을 달 수 없습니다'); } $data['num'] = $data_reply['num']; $data['parent'] = $data_reply['parent'] . "[{$data_reply['no']}]"; $data['reply'] = sql("SELECT MAX(reply) FROM {$board_data['table_cmt']} WHERE target_post={$data['target_post']} and parent LIKE '%[{$data_reply['no']}]%'"); def($data['reply'], $data_reply['reply']); $data['reply']++; // 비밀댓글의 답변은 모두 비밀 if (!empty($data_reply['secret'])) { $data['secret'] = 1; } } //// 기본정보 입력 def($data['date'], $mini['date']); def($data['ip'], $mini['ip']); //// 회원정보 입력 if (!empty($param['target_member'])) { $data['target_member'] = $param['target_member']; } if (empty($param['is_conv'])) { def($data['target_member'], !empty($mini['member']['no']) ? $mini['member']['no'] : ""); if ($data['target_member']) { check($data['target_member'], "type:num, name:회원번호"); $mdata = sql("SELECT * FROM {$mini['name']['member']} WHERE no={$data['target_member']}"); // 회원 정보 넣기 if (is_array($mdata)) { parseMember($mdata); $data['name'] = $mdata['name']; } else { __error('존재하지 않는 회원 번호 입니다.'); } } else { iss($data['name']); iss($data['mail']); check($data['name'], "min:1, max:16, name:이름"); if (empty($data['pass'])) { __error('비밀번호를 입력해 주세요. 글 수정시 필요합니다'); } } // 마이너스 포인트일 때 포인트 부족 확인하기 if (empty($mini['member']['level_admin']) && isset($board_data['point_comment']) && $board_data['point_comment'] < 0 && !empty($mdata) && $mdata['point'] < abs($board_data['point_comment'])) { __error("포인트가 부족합니다 [" . (abs($board_data['point_comment']) - $mdata['point']) . " 포인트 부족]"); } // 댓글이 없으면 auto_increment 값을 초기화 한다. if (!sql("SELECT COUNT(*) FROM {$board_data['table_cmt']} LIMIT 1")) { sql("TRUNCATE TABLE {$board_data['table_cmt']}"); } } //// trackback if (!empty($param['trackback'])) { $data['trackback'] = $param['trackback']; } //// 댓글 가공 checkPost($data, $board_data, 'cmt'); //// 쿼리 실행 if (empty($param['is_conv']) || !empty($param['is_manage'])) { sql("INSERT INTO {$board_data['table_cmt']} " . query($data, 'insert')); $data['no'] = getLastId($board_data['table_cmt'], "ip='{$data['ip']}' and date='{$data['date']}'"); } else { $output_conv = query($data, 'insert_array', getStr(getColumns($board_data['table_cmt']))); } //// 답변 댓글 밀기(반업데이트) if (empty($param['is_conv']) && $data['reply']) { sql("UPDATE {$board_data['table_cmt']} SET reply=reply+1 WHERE target_post={$data['target_post']} and reply >= {$data['reply']} and no != {$data['no']}"); } if (empty($param['is_conv']) || !empty($param['is_manage'])) { // 포인트 if ($board_data['point_comment'] !== 0 && !empty($mini['log']) && (!empty($param['target_member']) || !empty($data['target_member'])) && (empty($board_data['use_cmt_point_one']) || sql("SELECT COUNT(*) FROM {$board_data['table_cmt']} WHERE target_post={$data_post['no']} and target_member=" . (!empty($param['target_member']) ? $param['target_member'] : $data['target_member'])) == 1)) { setPoint("\n\t\t\t\t\ttarget: " . (!empty($param['target_member']) ? $param['target_member'] : $data['target_member']) . "\n\t\t\t\t\tpoint: {$board_data['point_comment']}\n\t\t\t\t\tmsg: 댓글 작성\n\t\t\t\t\tparent_no: {$board_data['no']}\n\t\t\t\t\tdata_no: {$data['no']}\n\t\t\t\t"); } if (empty($param['is_conv'])) { // 게시물 댓글 개수 증가 $tmp_q = !empty($data['trackback']) ? "count_trackback=count_trackback+1" : "count_comment=count_comment+1"; $tmp_q .= ",date_comment = '{$mini['date']}'"; $tmp_q .= ",name_comment = '{$data['name']}'"; if (!empty($point)) { $tmp_q .= ",point=" . ($data_post['point'] * $data_post['point_count'] + $point) / ($data_post['point_count'] + 1) . ",point_count=point_count+1"; } sql("UPDATE {$board_data['table']} SET {$tmp_q} WHERE no={$data['target_post']}"); // 댓글 알림 if (empty($param['is_conv'])) { if (empty($data_reply) && !empty($data_post['memo']) && !empty($data_post['target_member']) || !empty($data_reply['memo']) && !empty($data_reply['target_member'])) { include "{$mini['dir']}skin/template/memo.cmt_notice.tpl.php"; if (!function_exists('skinConv')) { include "{$mini['dir']}_inc.skinmake.php"; } if (!empty($tpl)) { $tmp = !empty($tpl[$mini['site']['template']['cmt_notice']]) ? $tpl[$mini['site']['template']['cmt_notice']] : current($tpl); unset($mini['skin']); $mini['skin'] = ''; if (!empty($mini['site'])) { $mini['skin']['site'] =& $mini['site']; } if (!empty($mini['board'])) { $mini['skin']['board'] =& $mini['board']; } if (!empty($data)) { $mini['skin']['data'] =& $data; $mini['skin']['data']['url_view'] = "{$mini['dir']}mini.php?id={$board_data['id']}&no={$data['target_post']}&cNo={$data['no']}"; } if (!empty($data_post)) { $mini['skin']['data_post'] = parsePost($data_post, 'list', 1); } if (!empty($data_reply)) { $mini['skin']['data_reply'] =& $data_reply; } $mini['skin']['date'] = $mini['date']; $mini['skin']['pdir'] = $mini['pdir']; $mini['skin']['target'] = !empty($data_reply) ? $data_reply['target_member'] : $data_post['target_member']; $mini['skin']['name'] = !empty($data_reply) ? $data_reply['name'] : $data_post['name']; if (empty($mdata) || $mini['skin']['target'] != $mdata['no']) { $result = sendMemo(array('skip_filter' => 1, 'target_member' => !empty($data_reply) ? $data_reply['target_member'] : $data_post['target_member'], 'ment' => skinConv(!empty($data_reply) ? $tmp['cmt'] : $tmp['post'], 'str')), $mini['skin']['target'], '', ''); } } else { __error('인증메일을 발송할 수 없습니다. 관리자에게 문의해 주세요'); } } } // 트랙백 댓글 주소 설정 if (!empty($data_reply) && !empty($data_reply['trackback'])) { $tmp_data = getSocket("\n\t\t\t\t\t\turl: {$data_reply['trackback']}\n\t\t\t\t\t\tskip_header: 1\n\t\t\t\t\t"); if (!empty($tmp_data) && strpos($tmp_data, "<rdf:RDF") !== false) { preg_match("/\\<rdf\\:Description.+trackback\\:ping\\=\"([^\"]+)\" \\/\\>/is", $tmp_data, $mat); if (!empty($mat[1])) { $trackback = $mat[1]; } } } // 트랙백 보내기 if (!empty($trackback)) { sendTrackback($trackback, $trackback_excerpt, $trackback_charset, $data, $board_data, 'cmt'); } // 이미지 치환 if (!empty($is_saveImage) && !empty($data['ment'])) { $data['ment'] = saveImage($data['no'], $data['ment'], $board_data, 'cmt'); sql("UPDATE {$board_data['table_cmt']} SET ment='{$data['ment']}' WHERE no={$data['no']}"); } } } //// 검색어 등록 $output_conv_index = addIndex($data, "\n\t\t\tid: {$board_data['no']}\n\t\t\tnum: {$data_post['num']}\n\t\t\tcmt_no: {$data['no']}\n\t\t\tdate: {$data['date']}\n\t\t\ttarget: {$data['target_member']}\n\t\t\tip: {$data['ip']}\n\t\t\tis_conv: " . (!empty($param['is_conv']) && empty($param['is_manage']) ? "1" : "0") . "\n\t\t"); if (!empty($param['is_conv']) && empty($param['is_manage'])) { return array('data' => $output_conv, 'index' => $output_conv_index); } else { return $data; } }
/** 코멘트 목록 뽑기 * @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; }
/** parsedText - adds embedcodes at the end of the post */ function parsedText($text) { foreach (parsePost($_POST["szoveg"]) as $item) { $text .= "<br/>" . $item; } return $text; }
<?php require 'vendor/autoload.php'; $posts = array(); $postDir = __DIR__ . '/views/posts/'; foreach (scandir($postDir) as $filename) { $post = parsePost($postDir, $filename); if ($post != null) { $posts[$post->posted->timestamp] = $post; } } ksort($posts); writePosts($posts, __DIR__ . '/posts.php'); function parsePost($dir, $filename) { $posts = array(); if (preg_match('/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})-(.+)\\.php$/', $filename, $matches) === 1) { $posted = \Carbon\Carbon::create($matches[1], $matches[2], $matches[3], 12); $slug = $matches[4]; $title = getPostTitle($dir . $filename); if (strlen($title) > 0) { return new Post($title, $slug, $posted); } } return null; } function getPostTitle($file) { $lines = file($file); if (preg_match('@^\\<\\?\\/\\*(.+)\\*\\/\\?\\>$@', trim($lines[0]), $matches) === 1) { return $matches[1];