메뉴 건너뛰기

XE : Xpress Engine


XE에 대한 생각! XE에 대한 공감! - XE를 사용하는 다른 사람들과 의견을 나눌 수 있는 곳입니다. 많은 의견 공유로 더 좋은 XE를 만들어 주세요.


XE 사용팁

간단한 시간제한 자료실 만들기

2010.03.17 05:46

[레벨:2]옥수수밭 조회 수:2561

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

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


번호 제목 글쓴이 날짜 조회 수
공지 질문은 묻고 답하기로~ TSCMD 2012.02.03 366
1294 글에 첨부된 이미지 파일이 없을 경우, 지정 이미지를 본문에 보여주기 [레벨:27]도라란 2011.07.11 2563
1293 관리자에게 무제한 추천기능 부여 (XE Core 수정) [5] [레벨:11]sejin7940 2010.06.30 2725
» 간단한 시간제한 자료실 만들기 [2] [레벨:2]옥수수밭 2010.03.17 2561
1291 외부페이지를 레이아웃에 결합시 상단 마진폭이 벌어지는 문제 해결방법 [6] file [레벨:4]DuRi 2010.12.17 2666
1290 레이아웃에서 class="header" 사용 안하기... [2] [레벨:17]ForHanbi 2011.06.30 2675
1289 인증메일 때문에 고생하시는 분 참고하세요. [15] [레벨:2]박용식 2010.10.14 4517
1288 템플릿 변수(조건문) 팁 [1] [레벨:7]엘카 2011.06.19 3222
1287 XML필터 사용시 유효성검사에서 사용자정의 메세지 출력하기 [레벨:3]창한이 2011.06.19 3313
1286 ie6 빈div 높이 조절 [2] [레벨:17]ForHanbi 2011.06.19 3374
1285 조회수 클릭때마다 올라가기(1.4.5.7 버전에서 되네요) file [레벨:2]아네모네 2011.06.20 3525
1284 스킨에서 조건/반복문 여러줄 사용하기 [1] [레벨:7]엘카 2011.06.10 3107
1283 SMTP 인증 회원가입 메일 인증 , 비밀번호 오류찾기 및 답변글 메일로 받기 [10] file [레벨:1]FFHosting 2009.01.12 7948
1282 7일이상 지난 글에 댓글달면 포인트 지급 안하기 [11] CNSMaker 2011.02.21 3631
1281 (회원가입) 닉네임 필요없이 이름만 입력 받으려면 [14] [레벨:14]Simulz 2007.08.22 8903
1280 cafe24 호스팅시 XE 쉬운설치가 안될때 해결방법 ^^(ftp 설정 item) [2] [레벨:1]연금술사™ 2011.04.19 4361
1279 게시판에 회원확장변수정보 받아서 표시하기 [3] [레벨:4]burster 2011.03.26 2815
1278 다음view(다음뷰) 애드온 사용시 댓글창의 뷰아이콘 지우기 [1] [레벨:6]하늘종 2011.05.31 3295
1277 이미지 여러개 등록시 공백 팁입니다. 10.07.29 10:05 수정 [14] file [레벨:4]스카이피아 2010.07.25 3327
1276 레이아웃 100% 일때 이미지리사이즈 Addon 넓이값 고정하기 TS고수군 2011.06.08 3381
1275 XE core 1.4.5.7 코드 오류,(상자 위젯 배경 안될때) [2] [레벨:1]홍성빈닌 2011.05.17 3481