웹마스터 팁
간단한 시간제한 자료실 만들기
2010.03.17 05:46
다시 말씀드리면, 일정 시간이 지나면 글의 첨부파일들이 자동으로 삭제되는 게시판을 만드는 방법입니다.
코어에 아주 친절하게 포함된 deleteFiles()를 이용합니다. 코어 1.4.0.9에서 테스트했습니다.
보드 스킨의 style.list.html에 일반글을 표시하는 부분으로 가서 아래와 같이 코드를 추가합니다. 시간제한을 30일로 했습니다.
<!--@foreach($document_list as $no => $document)-->
{@ $attachments_time_limit = time()-(60*60*24*30);}
{@ $oFileController = &getController('file');}
{@ $oFileModel = &getModel('file');}
{@ $numfiles = $oFileModel->getFilesCount($document->document_srl);}
<!--@if(strtotime($document->get('regdate'))<$attachments_time_limit && $numfiles>0)-->{@ $oFileController->deleteFiles($document->document_srl);}<!--@end-->
<tr class="bg{($no+1)%2+1}">
보드스킨을 변경하는 것이기에 코어 업데이트 해도 문제 없습니다.
=====================
여기까지만 하시면 동작합니다. 하지만 작은 문제가 하나 있다면, deleteFiles() 함수는 db에서 xe_files 테이블에 있는 항목만 삭제하고, xe_document 테이블에서 uploaded_count 항목을 건드리지 않습니다. 그래서 첨부파일들이 모두 삭제되어 있어도 게시판 목록에서 글제목 옆에 file 아이콘이 뜹니다. 이것을 해결하고 싶으면 아래 과정을 따라하시면 됩니다. 단, 코어 업데이트하시면 file.controller.php를 다시 고치셔야합니다.
먼저 uploaded_count를 0으로 업데이트 시키는 새로운 쿼리 파일을 만듭니다. /modules/document/queries/updateUploadedCountZero.xml
<query id="updateUploadedCountZero" action="update">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="uploaded_count" var="uploaded_count" default="0" />
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="upload_target_srl" filter="number" notnull="notnull" />
</conditions>
</query>
그 다음은 /modules/file/file.controller.php 에서 deleteFiles() 함수를 찾아 아래와 같이 방금 만든 쿼리를 실행시키는 코드를 추가합니다.
function deleteFiles($upload_target_srl) {
.......
$output = executeQuery('document.updateUploadedCountZero', $args);
if(!$output->toBool()) return $output;
return $output;
}
=====================
Trial and error로 만든거라서, 문제될 가능성이 보이시면 댓글로 말씀해주시면 감사하겠습니다.
제목 | 글쓴이 | 날짜 |
---|---|---|
아파치 httpd.conf 2차 설정본 - php 연동 | 이성헌 | 2005.12.15 |
php 4.3.2 의 php.ini 내용 (내컴 설치본) | 이성헌 | 2005.12.15 |
apache httpd.conf 의 1차 설치본 - alias 사용 | 이성헌 | 2005.12.15 |
아파치 인증에서 .htaccess 의 내용. | 이성헌 | 2005.12.15 |
wo.to (유료서버) 의 아파치 폴더 인증 방법. | 이성헌 | 2005.12.15 |
아파치 설정 활용 예(서비스 제한측면) [4] | 좋은진호 | 2005.01.31 |
FTP서버설치 (filezilla server) [6] | 이주성 | 2004.05.20 |
리눅스 커널(kernel)에 심각한 보안 결함 발견 [1] | 아치 | 2003.12.04 |
안전한 FTP, vsftpd 설치와 운영 (한글로그 패치 포함) [1] | 좋은진호 | 2003.10.15 |
apache-1.3.28 release [5] | 아치™ | 2003.09.19 |
apache 서버에서 디렉토리 보기 방지. [5] | 이성헌 | 2003.06.08 |
apache 서버에서 apache 인증 (윈도우에서 apm 설치후) | 이성헌 | 2003.06.05 |
트래픽관리 Throttle-status 사용자 인증시키기 [1] | Cksoft | 2003.03.18 |
apache-1.3.x설치⑤ (apahce설치, php가속기 추가) | 비츠로 | 2003.03.02 |
apache-1.3.x설치① (필수조건과 pre configure) | 비츠로 | 2003.03.02 |
qmail-1.03설치⑧ (squirrel웹메일과 연동) | 비츠로 | 2003.02.28 |
qmail-1.03설치⑤ (courier-imap연동) | 비츠로 | 2003.02.28 |
phpMyAdmin 보안설정하기 [5] | 겨울늑대 | 2003.02.27 |
htaccess를 활용하자 3탄! 사용자인증 [4] | [쿨럭]블루엔젤 | 2003.01.23 |
무료 호스팅 서버 만들기 -4부 [18] | 장동민 | 2003.01.04 |
편리하겠습니다.