웹마스터 팁

다시 말씀드리면, 일정 시간이 지나면 글의 첨부파일들이 자동으로 삭제되는 게시판을 만드는 방법입니다.

코어에 아주 친절하게 포함된 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로 만든거라서, 문제될 가능성이 보이시면 댓글로 말씀해주시면 감사하겠습니다. 


제목 글쓴이 날짜
나만의 미니홈 만들기 ㅡ메뉴에 게시판 연결 [5] file 예뜨락 2004.12.17
인스타그램 해시태그 회원가입 없이 끌어오기 외인 2017.02.08
XE 1.8 대응 apache 2.2 / php 5.5 / MariaDB 10 설치 [11] 간장게장같은남자 2015.04.19
DB에서 직접 시퀀스 생성하기 [3] 기진곰 2015.07.18
구글 API 활용(뉴스가져오기) pixfine 2014.09.24
이거 어디다 올려야 될 지 몰라 여기다 올립니다. 프로그래머님들 읽어보세요. [2] 유샤인 2014.06.10
짧은 주소를 가능 하게 하는 서버(아파치, httpd) 설정 [3] 꿈섬 2014.07.27
해외 아이피 차단 방법입니다. [3] Flolida 2014.03.01
Windows IIS 에서 F5 연타 방지하기 (mod_evasive , limit_req) [3] file StyleRoot 2014.04.08
페이지로딩시 메모리 부족이란 오류메시지가 뜰때... 똑디 2013.11.07
rewrite mod 가 안 돼서 고생한 경험담입니다. [2] obok 2013.06.29
-추가- 당신의 XE 기반 홈페이지를 훅가게 하는 방법 4가지 [26] 老姜君 2009.10.08
메인화면에 설문조사 위젯(?) 만들기 [3] file 3D매니아 2010.12.14
'신고 수' 노출 함수 및 신고시 게시글 이동팁 [11] 인터니즈™ 2012.07.03
IIS 7.5 + XE 업로드 용량 개선 방법 [1] file 류군 2012.07.16
첨부파일 100% 에서 사라지는 문제 저도 해결 [2] 안나오네 2010.06.09
큰 파일의 썸네일이 안생길때 해결방법-추가 [7] HIKARU 2008.03.18
간단한 시간제한 자료실 만들기 [2] 옥수수밭 2010.03.17
이유는 모르겠는데 뷰테이블을 쓰면 XE의 속도가 크게 떨어지는 것 같습니다. [2] 철갑 2011.04.25
레이아웃에 소스추가해서 트래픽보기! [2] file 막시민 2011.03.07