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); }
} $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; }
<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]; ?> <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;