 |
|
 |
카테고리 '끄적끄적' - '태터툴즈관련'
| 8 |
 |
요즘들어 태터툴즈에 스팸글이 절라많이 달라붙습니다.
무식하게 DB들어가서 수천개의 스팸 레코드를 싸그리 DROP했더니
포스트의 댓글수가 엉망으로 출력이 ^^
쓰구서 그냥 지울까 하다가 혹시나 필요하신분 계실까봐 올려봅니다.
 | _RepairReplyCount_20060903.zip (2.5 KB) |
| | |
태터툴즈가 설치된 디렉토리에 업로드해서 사용하세영~ (config.php 파일이 위치한 곳)
클래식 버전에서만 돌아가지만 몇글자 수정하면 1.x.x에서도 사용할 수 있을겝니다.
 | | <스크린샷> |
|
태터툴즈에서 비공개 포스트에 붙어있는 덧글이 "최근에 달린 댓글"에 고스란히 출력되는 문제가 있다.
function get_rctrp_rep() {
global $db, $dbid, $p_rct_rp_cnt, $p_rct_rp_trunc;
unset($p);
$sql = "select no, pno, name, body, regdate, is_secret from t3_".$dbid."_reply ";
$sql.= "order by no desc limit 0, $p_rct_rp_cnt";
// print $sql;
$result = @mysql_query($sql);
while(list($no, $pno, $name, $body, $regdate, $is_secret) = @mysql_fetch_array($result)) {
if (return_authority()) $is_admin = 1; else $is_admin = 0;
if ($is_secret && !$is_admin) $name = "비밀 댓글";
if ($is_secret && !$is_admin) $body = "관리자만 볼 수 있는 댓글입니다.";
$p_rep = $GLOBALS["skin"]->s_rctrp_rep;
$p_rep = str_replace("", "index.php?pl=$pno#r$no", $p_rep);
$p_rep = str_replace("", str_cut($body, $p_rct_rp_trunc, 0), $p_rep);
$p_rep = str_replace("", $name, $p_rep);
$p_rep = str_replace("", get_timevalue0($regdate, 2), $p_rep);
$p .= $p_rep;
}
return $p;
}
inc_presswork.php 115 라인쯤에 있는 위의 get_rctrp_rep() 함수를 아래와 같이 변경하면 된다..
function get_rctrp_rep() {
global $db, $dbid, $p_rct_rp_cnt, $p_rct_rp_trunc;
unset($p);
$sql = "select no, pno, name, body, regdate, is_secret from t3_".$dbid."_reply ";
$sql.= "order by no desc limit 0, $p_rct_rp_cnt";
// print $sql;
$result = @mysql_query($sql);
while(list($no, $pno, $name, $body, $regdate, $is_secret) = @mysql_fetch_array($result)) {
if (return_authority()) $is_admin = 1; else $is_admin = 0;
if ($is_secret && !$is_admin)
{
$name = "비밀 댓글";
$body = "관리자만 볼 수 있는 댓글입니다.";
}
$q = "SELECT is_public FROM `t3_{$dbid}` WHERE no={$pno}";
$result = @mysql_fetch_row(@mysql_query($q));
if ($result[0]<1 && !$is_admin)
{
$name = "비공개 포스트";
$body = "비공개 포스트의 댓글입니다.";
}
$p_rep = $GLOBALS["skin"]->s_rctrp_rep;
$p_rep = str_replace("", "index.php?pl=$pno#r$no", $p_rep);
$p_rep = str_replace("", str_cut($body, $p_rct_rp_trunc, 0), $p_rep);
$p_rep = str_replace("", $name, $p_rep);
$p_rep = str_replace("", get_timevalue0($regdate, 2), $p_rep);
$p .= $p_rep;
}
return $p;
}
이렇게 바꿔주면 물론 돌아가긴 잘 돌아가겠지만, 쓸데없이 쿼리를 많이 날리기에 갠적으론 그다지 맘에들진 않는다. 최초 포스팅을할때, 포스팅된 글의 PUBLIC 설정이 변경될때, 덧글이 등록될때, 등등.. 이럴때 자동으로 값이 설정되어 들어간다면 좀 더 깔끔해지지 않을까..
TEMPORARY TABLE을 이용해도 괜찮을거 같고,, 또 뷰가 지원된다는 MySQL 5.0 버전이라면 아래와 같은 방법을 사용해서 "최근에 달린 댓글"에 해당 덧글을 아예 출력하지 않게 할 수도 있을듯 하다.
# 생략...
$q = "DROP VIEW IF EXISTS `t3_{$dbid}_vt`";
mysql_query($q);
$q = "CREATE VIEW `t3_{$dbid}_vt` AS SELECT * FROM `t3_{$dbid}` WHERE is_public=1";
mysql_query($q);
$q = "SELECT no, pno, name, body, regdate, is_secret FROM t3_{$dbid}_vt ".
"ORDER BY no DESC LIMIT 0, {$p_rct_rp_cnt}";
$result = @mysql_query($q);
# 생략...
MySQL 5.0에서는 Stored Procedure, Trigger, View, Nested Query 등과 같은 이전 버전에서는 지원하지 않았던 보다 많은 기능을 포함했다던데 아직 사용해보질 않아서 잘 몰겠다. MySQL이 나쁘다는건 절대 아니지만 어쨋거나 최소한 MySQL 4.1 이전까지는 너무 허접하다...
암생각없이 써 내려오다보니 주제가 딴데로 새버린듯..
밥이나 처먹어야지..
|
| 그누보드(GNU Board) → 태터툴즈(TatterTools) 방명록 컨버터 v0.1
사용법은 이곳을 클릭하세요
혹시나 변환할 방명록 게시물중에 비밀글이 있다면 삭제를 하거나 공개로 설정하세요. 그렇지 않으면 답글 변환에 타격이 큽니다. 고쳐볼까 하다가 귀찮아서.. 전에 사용했던 파일을 그냥 올립니다. 오류가 생기거나 그러면 알아서들 해보세요. 소스를 보시면 아시겠지만 워낙에 기초적인 코드들로 프로그램 되어있으니 발가락으로도 쉽게 수정하실 수 있을거에요. 글구 꼭 테스트를 먼저 해본 후에 변환을 하셔요..
다운로드
 | gb_to_tt_guest.zip (4.3 KB) |
| | |
|
1. index.php 수정
라인 142 쯤에 아래와 같은 코드가 있습니다.
if ($md == "pl") {
$sql = "select no from t3_".$dbid." where $is_public $add_query order by regdate desc limit ".($page-1).", 1";
// print $sql;
list ($pl) = mysql_fetch_array(mysql_query($sql));
header("Location: index.php?pl=$pl".$add_val);
exit;
}
이 부분에서
list ($pl) = mysql_fetch_array(mysql_query($sql));
위 코드 다음에 아래 코드를 추가합니다.
$add_val = str_tag_on($add_val);
출처: http://nhappy.net/phpBB2/viewtopic.php?t=23
|
원문보기.. 0.94 버전에서 버그가 있어서 수정했습니다.
inc_functio.php 파일을 여신 후
아래 함수 function rss_date_check 함수를 통째로 덮어씌웁니다.
라인 615에 있습니다.
function rss_date_check($str) {
if (substr($str, strpos($str,"GMT")) == "GMT") $egloos_flag = true;
$str = str_replace("년 ", "-", $str);
$str = str_replace("월 ", "-", $str);
$str = str_replace("일 ", "", $str);
$str = str_replace("GMT", "", $str);
if (strpos($str,"T")) {
list($date, $time) = explode("T", $str);
list($y, $m, $d) = explode("-", $date);
list($time) = explode("+", $time);
list($h, $i, $s) = explode(":", $time);
} else if (strpos($str,":") && strpos($str,"-")) {
list($str) = explode(".", $str);
list($date, $time) = explode(" ", $str);
list($y, $m, $d) = explode("-", $date);
list($h, $i, $s) = explode(":", $time);
} else if (strpos($str,",") && strpos($str,":")) {
list($temp, $str) = explode(",", $str);
$str = str_month_check($str);
list($temp, $d, $m, $y, $time) = explode(" ", $str);
list($h, $i, $s) = explode(":", $time);
} else {
return time();
}
if (!$h) $h = "00";
if (!$i) $i = "00";
if (!$s) $s = "00";
if ($egloos_flag) $h += 9;
return mktime($h,$i,$s,$m,$d,$y);
}
위 함수 대신 아래의 함수로 대체합니다.
function rss_date_check($str) {
if (substr($str, strpos($str,"GMT")) == "GMT") $egloos_flag = true;
$str = str_replace("년 ", "-", $str);
$str = str_replace("월 ", "-", $str);
$str = str_replace("일 ", "", $str);
$str = str_replace("GMT", "", $str);
$str = str_replace(" +0900", "", $str);
if (strpos($str,"T")) {
list($date, $time) = explode("T", $str);
list($y, $m, $d) = explode("-", $date);
list($time) = explode("+", $time);
list($h, $i, $s) = explode(":", $time);
} else if (strpos($str,":") && strpos($str,"-")) {
list($str) = explode(".", $str);
list($date, $time) = explode(" ", $str);
list($y, $m, $d) = explode("-", $date);
list($h, $i, $s) = explode(":", $time);
} else if (strpos($str,",") && strpos($str,":")) {
list($temp, $str) = explode(",", $str);
$str = str_month_check(trim($str));
list($d, $m, $y, $time) = explode(" ", $str);
list($h, $i, $s) = explode(":", $time);
fclose($file);
} else {
return time();
}
if (!$h) $h = "00";
if (!$i) $i = "00";
if (!$s) $s = "00";
if ($egloos_flag) $h += 9;
return mktime($h,$i,$s,$m,$d,$y);
}
대충 테스트 했는데 이글루스랑에서 잘 나오는 걸로 봐서 이렇게 변경하시면 될거 같습니다. 스페이스를 기준으로 해서 시간을 나눌 때 공백 때문에 오류가 생기는 문제였습니다.
출처: http://nhappy.net/phpBB2/viewtopic.php?p=23
|
article_edit.php 347라인..
<td><span style="font-size:11pt;font-weight:bold;"><?=$title?></span><br><br>
article_edit.php 263라인..
<textarea name="body" rows="25" cols="62"...
관리자모드, 스킨 스타일시트
body,td {
font-family: Verdana;
font-size: 9pt;
line-height: 150%;
color: #666666;
}
스킨 스타일시트
code {
font-family:Courier New;
font-size:9pt;
line-height: 150%;
}
|
| 그누보드(GNU Board) → 태터툴즈(TatterTools) 게시물 컨버터 v0.1
환경
- GNU Board 3.41
- Tatter Tools 0.94
제작자
- 김형섭 (www.todayis.net)
제작일
- 2005.01.18
수정 및 재배포
- 님 맘데루 하시구랴~
내용
- 그누보드의 게시물을 태터툴즈의 게시물로 변환
- 그누보드의 답글과 덧글은 태터툴즈의 덧글로 변환
- 그누보드 게시물의 비밀글에 대한 공개여부 선택(비밀 답글은 비밀 덧글로..)
- 그누보드 답글과 덧글 등록자의 패스워드와 메일주소도 옮겨짐
- 그누보드의 첨부파일을 태터툴즈의 첨부파일로 변환(이라기 보단 복사겠죠..)
- 그누보드 게시물의 링크와 첨부파일은 게시물 하단에 덧붙임
- 첨부파일중 이미지파일은 포스트 하단에 덧붙임(지정폭보다 크면 리사이징됨)
- 그누보드 게시물의 `HTML사용` 체크여부 고려(귀찮아서 대충..)
- 변환되는 모든 일반글, 답글, 덧글, 첨부파일의 등록일은 그누보드에서 등록된 날짜로..
- 카테고리의 등록글 갯수 업데이트(이건 중요하지 않음)
- 변환시 기존에 사용하던 태터툴즈의 데이터에 이어서 등록
- 기타 등등.. with 단순무식 개판쿼리
사용법
- 일단은 우선 현재의 테터툴즈 관련 DB와 첨부파일을 몽땅 백업하세요.
- 그누보드와 태터툴즈가 같은 계정에 설치되어 있어야 합니다.
- 텍스트 에디터로 파일의 기본 설정사항을 수정하세요.
- 태터툴즈의 config.php가 있는 디렉토리에 업로드후 웹브라우저에서 불러오시면 됩니다.
- ex) http://도메인/tt/gnu_to_tt.php
기타
- 테터툴즈를 하나 더 설치해서 충분히 테스트를 해본 후에 변환하는걸 추천함.
- 테스트시 변환이 제대로 안된다면 그냥 그누보드의 블로그 플러그인 쓰세요.. -.-;
- 한번에 한개의 게시판만 변경되며 변환된 게시물은 태터툴즈의 한 카테고리로 몽땅 들어감.
- 이 변환기는 DB의 dbid, dbid_ct1, dbid_ct2, dbid_files, dbid_reply 테이블을 수정함.
- 변환중 또는 변환후에 절대 새로고침 하지마세요.
- 나 쓸려고 만든건데 혹시나 필요하신분 계실지도 모를까해서 올려봅니다.
- 전 변환을 이미 끝냈으니 더이상의 수정은 없음.
- 방명록 변환기는 나중에 소스 정리좀 해서 올릴게요..
- 이 스크립트의 사용으로 인한 모든 문제의 책임은 전적으로 사용자에게 있습니다.
다운로드
 | gb_to_tt.zip (5.3 KB) |
| | |
|
|