Exemplo n.º 1
0
function reserve_duplicate_check($opt_room, $opt_date, $time_begin, $time_end, $opt_repeat_begin, $opt_repeat_end, $opt_repeat_weeks, $exclude_no = '')
{
    global $DB;
    $result = "등록 성공";
    $message = "";
    $table = $DB->table("roomreserve");
    // 시간 및 날짜 확인
    if ($time_begin == $time_end) {
        $result = "등록 실패";
        $message = "사용 시작 시간과 종료 시간이 같습니다";
        return array("rows" => $rows, "result" => $result, "message" => $message);
    }
    if ($time_begin > $time_end) {
        $result = "등록 실패";
        $message = "사용 시작 시간이 종료 시간보다 나중이 될 수 없습니다";
        return array("rows" => $rows, "result" => $result, "message" => $message);
    }
    // 1달 이내에만 등록 가능하도록 제한
    // 관리자 예약이므로 제한 두지 않음...
    /*
    list( $y, $m, $d ) = explode( "-", $opt_date );
    $date_stamp = mktime( 0, 0, 0, $m, $d, $y );
    list( $y, $m, $d ) = explode( "-", date( "Y-m-d" ) );
    $today_stamp = mktime( 0, 0, 0, $m, $d, $y );
    
    if ( $date_stamp - $today_stamp > 31 * 86400 ) {
    	$result = "등록 실패";
    	$message = "오늘로부터 1개월 이내의 기간만 등록할 수 있습니다. 1개월 이후의 날짜에 예약을 원하시면 관리자에게 연락 바랍니다.";
    	return array( "rows" => $rows, "result" => $result, "message" => $message );
    }
    */
    // 먼저 등록하려는 시간대가 비어 있는지 확인한다.
    $update_exclude_sql = '';
    if ($exclude_no != '') {
        $update_exclude_sql = " and rr_no != '" . $exclude_no . "'";
    }
    // 반복 설정이 되어 있다면, 등록 일자 자체는 무시한다.
    if ($opt_repeat_week["week_1"] == "true" || $opt_repeat_week["week_2"] == "true" || $opt_repeat_week["week_3"] == "true" || $opt_repeat_week["week_4"] == "true" || $opt_repeat_week["week_5"] == "true" || $opt_repeat_week["week_6"] == "true") {
        $dates_to_check = array();
        list($y, $m, $d) = explode("-", $opt_repeat_begin);
        $s_begin = mktime(0, 0, 0, $m, $d, $y);
        list($y, $m, $d) = explode("-", $opt_repeat_end);
        $s_end = mktime(0, 0, 0, $m, $d, $y);
        $dates_to_check = array();
        for ($stamp = $s_begin; $stamp <= $s_end; $stamp += 86400) {
            $week_num = date("w", $stamp);
            if ($week_num == 1 && $opt_repeat_week["week_1"] == "true") {
                $dates_to_check[] = date("Y-m-d", $stamp);
            }
            if ($week_num == 2 && $opt_repeat_week["week_2"] == "true") {
                $dates_to_check[] = date("Y-m-d", $stamp);
            }
            if ($week_num == 3 && $opt_repeat_week["week_3"] == "true") {
                $dates_to_check[] = date("Y-m-d", $stamp);
            }
            if ($week_num == 4 && $opt_repeat_week["week_4"] == "true") {
                $dates_to_check[] = date("Y-m-d", $stamp);
            }
            if ($week_num == 5 && $opt_repeat_week["week_5"] == "true") {
                $dates_to_check[] = date("Y-m-d", $stamp);
            }
            if ($week_num == 6 && $opt_repeat_week["week_6"] == "true") {
                $dates_to_check[] = date("Y-m-d", $stamp);
            }
        }
        $dates_to_check_str = "'" . implode("', '", $dates_to_check) . "'";
        // 위에서 수집한 회의 반복 일자에 대해 비어있는지 여부를 검사한다.
        // 지운 항목과는 시간이 겹쳐도 됨...(2015.10.20)
        // rr_deleted=0 과 rr_deleted='0'은 의미가 많이 틀리다!! 주의할 것.
        $table->select("*", "rr_deleted='0' and rr_room='" . $opt_room . "' and rr_date in (" . $dates_to_check_str . ")" . $update_exclude_sql);
        $table->lastsql();
    } else {
        // 반복 설정이 되어 있지 않다면, 등록 일자를 기준으로 query한다.
        // 지운 항목과는 시간이 겹쳐도 됨...(2015.10.20)
        // rr_deleted=0 과 rr_deleted='0'은 의미가 많이 틀리다!! 주의할 것.
        $table->select("*", "rr_deleted='0' and rr_room='" . $opt_room . "' and rr_date='" . $opt_date . "'" . $update_exclude_sql);
        $table->lastsql();
    }
    $rows = $table->maxrecord();
    $requested = "신청한 시간(" . time_human($time_begin) . "~" . time_human($time_end) . ")";
    while ($data = $table->fetch()) {
        $summary = $data["rr_subject"] . "(" . time_human($data["rr_time_begin"]) . "~" . time_human($data["rr_time_end"]) . ")";
        print "<div>time_begin : " . $data["rr_time_begin"] . " == " . $time_begin . " / time_end : " . $data["rr_time_end"] . "==" . $time_end . "</div>\n";
        if ($data["rr_time_begin"] == $time_begin) {
            $result = "등록 실패";
            $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
            break;
        }
        if ($data["rr_time_end"] > $time_begin && $data["rr_time_end"] < $time_end) {
            $result = "등록 실패";
            $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
            break;
        }
        if ($data["rr_time_begin"] < $time_begin && $data["rr_time_end"] >= $time_end) {
            $result = "등록 실패";
            $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
            break;
        }
        if ($data["rr_time_begin"] >= $time_begin && $data["rr_time_begin"] < $time_end) {
            $result = "등록 실패";
            $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
            break;
        }
        if ($data["rr_time_begin"] < $time_begin && $data["rr_time_end"] > $time_end) {
            $result = "등록 실패";
            $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
            break;
        }
        if ($data["rr_time_begin"] > $time_begin && $data["rr_time_end"] < $time_end) {
            $result = "등록 실패";
            $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
            break;
        }
    }
    return array("rows" => $rows, "result" => $result, "message" => $message, "redirect_date" => $redirect_date, "sql" => $table->lastsql);
}
Exemplo n.º 2
0
     }
     $dates_to_check_str = "'" . implode("', '", $dates_to_check) . "'";
     // 위에서 수집한 회의 반복 일자에 대해 비어있는지 여부를 검사한다.
     // 지운 항목과는 시간이 겹쳐도 됨...(2015.10.20)
     // rr_deleted=0 과 rr_deleted='0'은 의미가 많이 틀리다!! 주의할 것.
     $table->select("*", "rr_deleted='0' and rr_room='" . $_GET["room"] . "' and rr_date in (" . $dates_to_check_str . ")");
 } else {
     // 반복 설정이 되어 있지 않다면, 등록 일자를 기준으로 query한다.
     // 지운 항목과는 시간이 겹쳐도 됨...(2015.10.20)
     // rr_deleted=0 과 rr_deleted='0'은 의미가 많이 틀리다!! 주의할 것.
     $table->select("*", "rr_deleted='0' and rr_room='" . $_GET["room"] . "' and rr_date='" . $_GET["date"] . "'");
 }
 $rows = $table->maxrecord();
 $requested = "신청한 시간(" . time_human($time_begin) . "~" . time_human($time_end) . ")";
 while ($data = $table->fetch()) {
     $summary = $data["rr_subject"] . "(" . time_human($data["rr_time_begin"]) . "~" . time_human($data["rr_time_end"]) . ")";
     if ($data["rr_time_begin"] == $time_begin) {
         $result = "등록 실패";
         $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
         break;
     }
     if ($data["rr_time_end"] > $time_begin && $data["rr_time_end"] < $time_end) {
         $result = "등록 실패";
         $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
         break;
     }
     if ($data["rr_time_begin"] < $time_begin && $data["rr_time_end"] >= $time_end) {
         $result = "등록 실패";
         $message = "해당 시간에 회의가 이미 등록되어 있습니다(" . $requested . ", " . $summary . ")";
         break;
     }
Exemplo n.º 3
0
		<td width="40%" valign="top">
		<?php 
    $cnt = 0;
    ?>
		<?php 
    foreach ($schedule_pm[$roomname] as $rr_no) {
        ?>
		<div class="rounded_corner_small inner_box" style="background-color:<?php 
        echo $colors[$cnt];
        ?>
; padding-left:5px; color:white; font-size:11pt; text-align:left; line-height:120%;">
			<?php 
        $data = $schedule_data[$rr_no];
        ?>
			&nbsp;&nbsp;<b style="color:yellow;"><?php 
        echo time_human($data["rr_time_begin"]) . "-" . time_human($data["rr_time_end"]);
        ?>
</b>
			<?php 
        echo $data["rr_name"];
        ?>
 (<?php 
        echo $data["rr_phone"];
        ?>
)<br />
			<div style="padding-left:10px; padding-bottom:7px; font-weight:bold; font-size:16pt; line-height:200%;">
				<input type="button" value="수정" onclick="call_write_right(this,'<?php 
        echo $_GET["date"];
        ?>
',<?php 
        echo $rr_no;