질문/조언질답게시판

물어봐야지 봐야지 하면서도 나이 탓?인지 잘 잊어버리고 물어보지를 못했었는데 오늘 아침에 생각이 나길래 이번에는 미루지 않고 질답에 글 남겨 봅니다. xe를 사용하면서 좀 불편했던 것이 "새글 표시 시간"이 게시판의 글이나 위젯의 설정 기능이나 팝업모듈의 설정 기능들이 전부 같은 방식으로 시간이 주어지는 것 같습니다. 이 "NEW"표시를 글 등록시간을 기준으로 하는 것과 날짜를 기준으로 하는 것으로 두 가지 설정기능이 있었으면 좋을텐데(이때 날짜를 기준으로 한다는 건 등록시간과 상관없이 날이 바뀌면 무조건 new표시가 없어지거나 글이 삭제되거나 팝업창이 없어지는 걸 말합니다.) "등록글삭제 애드온"과 xe스쿨의 팝업모듈도 날짜기준으로는 설정을 할 수가 있는데 이 경우도 글 등록 시점으로부터 24시간을 1일로 잡고 있기 때문에 날짜가 바뀌었는데도 글이 삭제되지 않고 24시간을 기다리고 있더군요. 밤11시59분59초에 글을 등록 하거나 팝업창을 띄워도 그 실행기간을 1일로 설정했다면 24시00분00초가 되는 순간 없어지는 기능도 필요할 것 같은데 실력이 없어서 생각날때마다 혹시나 하고 구글링만 하고 다니고 있습니다. 감사합니다.^^

  • profile
    date('Ymd')
  • profile ?

    아래는(송동우님의) 게시글 삭제애드온php입니다.(이 애드온은 삭제시기를 "시간"과 "일" 두가지중 한가지를 선택할수 있게 되어있습니다. 그런데 여기서 "일"을 선택한 후 등록기간이 날짜만 바뀌면 삭제되도록 하고 싶은데 등록기간을 하루로 잡아놓으면 게시글 등록시점부터 24시간을 꽉 채워야 하루가 되어 삭제가 됩니다. 등록시점과는 상관없이 날짜만 바뀌면 삭제되게 하고싶은데 php를 보면 능력없는 제 눈으로는마땅히 수정할 만한 부분이 보이지 않네요 ㅠㅠ
    ======================
    <?php

    if(!defined("__XE__")) exit();
    if($called_position!='before_module_proc') return;
    if($this->module != 'board' && $this->module != 'beluxe') return;

    $act = Context::get('act');
    if(($this->module == 'board' || $this->module == 'beluxe') && $act) return;

    $inputNum = preg_match('/[^0-9]/', $addon_info->inputNum)?'':$addon_info->inputNum;
    $h_or_d = $addon_info->h_or_d;
    $regOrLast = $addon_info->regOrLast;
    if(!$inputNum) return;

    $args->module_srl = $this->module_srl;
    $output = executeQuery('addons.autoDel.autoDelGetList', $args);
    $oDocumentController = &getController('document');

    if($h_or_d == 'listCount')
    {
    if(count($output->data)>$inputNum)
    {
    $delCount = count($output->data) - $inputNum;
    foreach($output->data as $key=>$val)
    {
    if($regOrLast=="regdate"&&$val->regdate<=date("YmdHis", strtotime("-".$inputNum.$unit))) $temp[] = $val->regdate."/".$val->document_srl;
    else if($regOrLast=="lastUpdate"&&$val->last_update<=date("YmdHis", strtotime("-".$inputNum.$unit))) $temp[] = $val->last_update."/".$val->document_srl;
    }
    sort($temp);
    foreach($temp as $key=>$val)
    {
    $breakCount++;
    $val = explode("/", $val);
    $oDocumentController->deleteDocument($val[1], true);
    if($breakCount==$delCount) break;
    }
    }
    }
    else
    {
    if($h_or_d=='hour') $unit = 'hour';
    else $unit = 'day';
    foreach($output->data as $key=>$val)
    {
    if($regOrLast=="regdate"&&$val->regdate<=date("YmdHis", strtotime("-".$inputNum.$unit))) $temp[] = $val->regdate."/".$val->document_srl;
    else if($regOrLast=="lastUpdate"&&$val->last_update<=date("YmdHis", strtotime("-".$inputNum.$unit))) $temp[] = $val->last_update."/".$val->document_srl;
    }
    sort($temp);
    foreach($temp as $key=>$val)
    {
    $val = explode("/", $val);
    $oDocumentController->deleteDocument($val[1], true);
    }
    }
    ?>

    =======================

    모듈을 손봐야하는건가요?(어려워요) 아니면 ymdhis에서 his만 삭제하면 될까요

  • ? profile

    date("YmdHis") 를 date("Ymd").'000000' 로 교체하면 되지 않을까요? 잘 안되면 할수 없구요... 

  • profile ?
    오늘밤 자정 무렵에 한번 시도를 해봐야겠습니다.^^