첨부파일 다운로드 유효기간 적용하기 > 그누보드5 팁자료실

그누보드5 팁자료실

첨부파일 다운로드 유효기간 적용하기 정보

첨부파일 다운로드 유효기간 적용하기

본문

첨부파일에 다운로드 유효기간을 적용할 수 있게 변경해봤습니다.

여분필드를 이용해서 숫자를 입력해주면 됩니다.

 

wirte.skin.php


    <?php if ($is_admin) { // 관리자만 보이도록 설정 ?>
    <tr>
        <th scope="row">다운로드 유효기간 (일)</th>
        <td>
            <input type="number" name="wr_1" value="<?php echo isset($write['wr_1']) ? $write['wr_1'] : '365'; ?>" class="frm_input" size="10"> 일
            <p class="frm_info">기본값: 365일 (비워두면 기본값 적용)</p>
        </td>
    </tr>
    <?php } else { ?>
        <input type="hidden" name="wr_1" value="<?php echo isset($write['wr_1']) ? $write['wr_1'] : '365'; ?>">
    <?php } ?>

 

view.skin.php

첨부파일 부분 교체 157라인


<?php
// 가변 파일
for ($i=0; $i<count($view['file']); $i++) {
    if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {
        // 첨부파일 정보
        $file = $view['file'][$i];
        $file_name = $file['source'];
        $file_url = $file['href'];
        $file_size = $file['size'];
        $download_count = $file['download'];
        $upload_date = strtotime($file['datetime']); // 업로드 날짜
        
        // 여분필드1에서 유효기간(일) 가져오기 (기본값: 365일)
        $expire_days = isset($write['wr_1']) && is_numeric($write['wr_1']) ? intval($write['wr_1']) : 365;
        $expire_date = strtotime("+{$expire_days} days", $upload_date); // 설정된 기간 후 만료
        $remaining_days = ceil(($expire_date - time()) / 86400); // 남은 일수 계산
        // 툴팁 메시지 설정
        if ($remaining_days > 0) {
            $tooltip = "다운로드 유효기간이 {$remaining_days}일 남았습니다.";
        } else {
            $tooltip = "다운로드 기간이 만료되었습니다.";
        }
        // 다운로드 가능 여부 설정
        $disabled_class = ($remaining_days <= 0) ? 'disabled-link' : '';
        $disabled_attr = ($remaining_days <= 0) ? 'style="pointer-events: none; color: gray;"' : '';
?>
        <li>
            <i class="fa fa-folder-open" aria-hidden="true"></i>
            <a href="<?php echo ($remaining_days > 0) ? $file_url : '#'; ?>" 
               class="view_file_download <?php echo $disabled_class; ?>" 
               data-tooltip="<?php echo $tooltip; ?>" 
               <?php echo $disabled_attr; ?>>
                <strong><?php echo $file_name; ?></strong> <?php echo $file['content']; ?> (<?php echo $file_size; ?>)
            </a>
            <br>
            <span class="bo_v_file_cnt">
                <?php echo $download_count; ?>회 다운로드 | DATE : <?php echo $file['datetime']; ?>
            </span>
        </li>
<?php
    }
}
?>

 

하단에 Javascript 추가


document.addEventListener("DOMContentLoaded", function () {
    const fileLinks = document.querySelectorAll(".view_file_download");
    fileLinks.forEach(link => {
        link.addEventListener("mouseover", function () {
            const tooltipText = this.getAttribute("data-tooltip");
            this.setAttribute("title", tooltipText);
        });
    });
});

 

style.css 끝에 추가


/* 파일 다운로드 CSS */
.view_file_download {
    position: relative;
    text-decoration: none;
    color: #0078ff;
    cursor: pointer;
}
.view_file_download:hover::after {
    content: attr(data-tooltip);
    position: absolute;
    left: 50%;
    bottom: 120%;
    transform: translateX(-50%);
    background-color: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    white-space: nowrap;
    font-size: 12px;
    z-index: 10;
}
.disabled-link {
    color: gray !important;
    pointer-events: none;
}
 
추천
3

댓글 2개

전체 3 |RSS

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT