PlannerXE123 Q&A 게시판
始 (처음 시) · 市 (저자 시) · 施 (베 풀 시) · 是 (옳을 시) · 時 (때 시) · 示 (보일 시) · 視 (볼 시) · 詩 (시 시) · 試 (시험할 시) / 侍 (모실 시) · 矢 (화살 시)
頂門一鍼 정문일침
정수리에 침 하나를 꽂는다는 뜻으로, 따끔한 충고 또는 교훈.

늘푸른나무2

밥탱 님 안녕하세요,

아래와 같이 해보세요.

 

1) class.planner123_main.php 파일에 아래함수 추가 (예: V5.10.1 파일이면 1288~1289라인 사이)

 

//------------------------------------------------------------------------
    /**
     * @brief: 주단위 같은 요일의 기념일 단, 그날이 공휴일/일요일 이면 다음날자로.
     * @param $mem_weekday: 일=0, 월=1, .. 토=6.
     * @return array
     **/
function fn_addSpecialMemday($mem_weekday, $mem_desc,  $dispStart_stamp, $dispEnd_stamp, $holiday , $memday) {
    $dispStart_stamp -= 86400 * 2;    //연휴를 고려하여 2일 이전부터 계산
    $dispEnd_stamp += 86400 * 2;    //연휴를 고려하여 2일 이후 까지 계산
    $tmp_sdt = explode("-",date("Y-n-j", $dispStart_stamp));
    list($sYear, $sMonth, $sDay) = explode("-",date("Y-n-j", $dispStart_stamp));
    list($eYear, $eMonth, $eDay) = explode("-",date("Y-n-j", $dispEnd_stamp));
    $jd_start = gregoriantojd($sMonth, $sDay, $sYear);    // 시작 일자 jd
    $jd_end = gregoriantojd($eMonth, $eDay, $eYear);    // 종료 일자 jd
    $sWeekday = date("w", $dispStart_stamp);
    if ($mem_weekday < $sWeekday) {
        $wk_gap =  $mem_weekday + 7 - $sWeekday;
    } else {
        $wk_gap =  $mem_weekday - $sWeekday;
    }
    $wk_jd_start = $jd_start + $wk_gap;
    for($JD = $wk_jd_start; $JD < $jd_end; $JD += 7) {
        for($i=0; $i<6; $i++) {
            list($month, $day, $year) = explode('/', jdtogregorian($JD+$i));
            if (!$holiday[$month][$day]) {
                $memday[$month][$day] .= $mem_desc;
                break;
            }
        }
    }
    return $memday;
}

//------------------------------------------------------------------------
    /**
     * @brief: 매월 말일 기념일 단, 그날이 공휴일/일요일/토요일 이면 그 이전날자로.
     * @param
     * @return array
     **/
function fn_addMonthEndMemday($mem_desc,  $dispStart_stamp, $dispEnd_stamp, $holiday , $memday) {
    $dispStart_stamp -= 86400 * 2;    //연휴를 고려하여 2일 이전부터 계산
    $dispEnd_stamp += 86400 * 2;    //연휴를 고려하여 2일 이후 까지 계산
    $tmp_sdt = explode("-",date("Y-n-j", $dispStart_stamp));
    list($sYear, $sMonth, $sDay) = explode("-",date("Y-n-j", $dispStart_stamp));
    list($eYear, $eMonth, $eDay) = explode("-",date("Y-n-j", $dispEnd_stamp));
    $mm_cnt = ($eYear*12 + $eMonth) - ($sYear*12 + $sMonth) + 1;

    for($i = 0; $i < $mm_cnt; $i++) {
        $yy = $sYear;
        $mm = $sMonth + $i;
        if ($mm >= 13){
            $yy = $eYear;
            $mm = $mm - 12;
        }
        $d = date("t", mktime(0, 0, 0, $mm, 1, $yy));
        $JD = gregoriantojd($mm, $d, $yy);
        for($k=0; $k<6; $k++) {
            list($month, $day, $year) = explode('/', jdtogregorian($JD - $k));
            $weekDay = date("w", mktime(0, 0, 0, $month, $day, $year));
            if (!$holiday[$month][$day] && $weekDay != 0 &&  $weekDay != 6) {
                $memday[$month][$day] .= $mem_desc;
                break;
            }
        }
    }

    return $memday;
}

 

2) _get_schedule.html 파일(V5.10.1)  281~282 라인 사이에 아래 붉은색 코드 추가.

 

<!--@if($module_info->display_memday == 'Y')--><!--// 기념일표시-->
{@ $Memday =  $oPlanner123_main->fn_getMemdayByCountry($skinpath.'function/', $holiday_country_code, $dispStart_stamp, $dispEnd_stamp, $board_holiday);}
{@ $ind_memday = "Y";}
{@ 
// 매주 특정 요일을 기념일로 (공휴일 이면 다음 날자로)
$mem_weekday = 1; //일=0, 월=1... 토=6
$mem_desc = ' 매月요일기념일';
$Memday =  $oPlanner123_main->fn_addSpecialMemday($mem_weekday, $mem_desc,  $dispStart_stamp, $dispEnd_stamp, $Holiday , $Memday);
}
{@ 
// 매월 말일에 기념일 추가 (공휴일/일요일/토요일 이면 이전 날자로)
$mem_desc = ' 매월말일기념일';
$Memday =  $oPlanner123_main->fn_addMonthEndMemday($mem_desc,  $dispStart_stamp, $dispEnd_stamp, $Holiday , $Memday);
}

<!--@end-->
 

감사합니다.

ksc

XE Login