handle(); $data = array(); $err_message = array(); $hope_time = array( 0 => '----', 1 => '9時〜', 2 => '10時〜', 3 => '11時〜', 4 => '12時〜', 5 => '13時〜', 6 => '14時〜', 7 => 'サンセット', 8 => 'どの時間でも', ); $mode = agv($_POST, 'mode', ''); switch ($mode) { case 'form': $data = _init_data($_POST); _form(); break; case 'confirm': $data = _init_data($_POST); _confirm(); break; case 'regist': $data = _init_data($_POST); _regist($data); break; default: $data = _init_data($_GET); _calendar($data); } exit; // --------------------------------------------- // 登録 // --------------------------------------------- function _regist () { global $db, $data, $hope_time; $db->autoCommit(false); $date1 = NULL; if (!empty($data['date1'])) { $date1 = date('Y-m-d H:i:s', strtotime($data['date1'] . ' ' . $data['time1'])); } $date2 = NULL; if (!empty($data['date2'])) { $date2 = date('Y-m-d H:i:s', strtotime($data['date2'] . ' ' . $data['time2'])); } $date3 = NULL; if (!empty($data['date3'])) { $date3 = date('Y-m-d H:i:s', strtotime($data['date3'] . ' ' . $data['time3'])); } $hope_date = '未定'; if (!empty($data['hope_date'])) { $hope_date = date('Y年m月d日', strtotime($data['hope_date_ymd'])) . ' ' . $hope_time[$data['hope_time']]; } $decide_date = NULL; if (!empty($data['sdt'])) { // date1も更新する $decide_date = $date1 = date('Y-m-d H:i:s', strtotime($data['sdt'])); } // entry $param = array( $data['name_sei'] . ' ' . $data['name_mei'], $data['kana_sei'] . ' ' . $data['kana_mei'], $data['sex'], $data['mail'], $data['tel1'] . '-' . $data['tel2'] . '-' . $data['tel3'], $data['try_dress'], $data['comments'], $date1, $date2, $date3, $data['salon'], $data['salon'], $data['salon'], $data['site'], $hope_date, $decide_date, ); $sql = ''; $sql .= 'INSERT INTO local_reserves ( '; $sql .= ' status, name, kana, sex, mail, '; $sql .= ' tel, try_dress, comments, date1, date2, date3, '; $sql .= ' salon1, salon2, salon3, salon, switch, '; $sql .= ' site, hope_date, decide_date, updated, created '; $sql .= ' ) '; $sql .= ' VALUES (0,?,?,?,?, ?,?,?,?,?,?, ?,?,?,0,true, ?,?,?,now(),now()) '; $result = $db->query($sql, $param); if (DB::isError($result)) { $db->rollback(); print_r($result); $error_type = 2; require './html/error.html'; exit; } $sql = "SELECT CURRVAL('local_reserves_seq_seq')"; $seq = $db->getRow($sql); if (DB::isError($seq)) { $db->rollback(); $error_type = 2; require './html/error.html'; exit; } $seq = $seq['currval']; $salon = $GLOBALS['RESERVATION_SALON_TO_DRESS_SALON'][$data['salon']]; if ($salon > 0) { $end_date = date('Y-m-d H:i:00', strtotime($decide_date) + (1 * 60 * 60)); $sql = 'INSERT INTO plu_salon_calendars '; $sql .= '(start_date, end_date, status, salon, note, counseling) '; $sql .= 'VALUES (?, ?, 1, ?, ?, ?); '; $param = array( $decide_date, $end_date, $salon, 'カウンセリングの為予約不可', $seq, ); $result = $db->query($sql, $param); if (DB::isError($result)) { $db->rollback(); $error_type = 3; require './html/error.html'; exit; } } $db->commit(); _send($data, $seq); header('Location: http://www.royalkaila.com/reservation/finish.html'); exit; } // --------------------------------------------- // メール送信 // --------------------------------------------- function _send ($_data, $seq) { global $data, $hope_time; $date1 = '第1希望日なし'; if (!empty($data['date1'])) { $date1 = date('Y年m月d日 H時i分', strtotime($data['date1'] . ' ' . $data['time1'])); } $date2 = '第2希望日なし'; if (!empty($data['date2'])) { $date2 = date('Y年m月d日 H時i分', strtotime($data['date2'] . ' ' . $data['time2'])); } $date3 = '第3希望日なし'; if (!empty($data['date3'])) { $date3 = date('Y年m月d日 H時i分', strtotime($data['date3'] . ' ' . $data['time3'])); } $hope_date = '未定'; if (!empty($data['hope_date'])) { $hope_date = date('Y年m月d日', strtotime($data['hope_date_ymd'])) . ' ' . $hope_time[$data['hope_time']]; } $decide_date = ''; if (!empty($data['sdt'])) { $decide_date = date('Y年m月d日 H:i', strtotime($data['sdt'])); } $try_dress = ''; if ($data['try_dress'] == '1') { $try_dress = 'ご試着を希望する'; } elseif ($data['try_dress'] == '2') { $try_dress = 'しない'; } $subject = '【Royal Kaila】国内サロンへの来店予約'; $fp = fopen(LOCAL_MAIL_TEMPLATE2, "r"); $msg = ""; while ($x = fgets($fp)) { $x = ereg_replace("%%NAME_SEI%%", $data['name_sei'], $x); $x = ereg_replace("%%NAME_MEI%%", $data['name_mei'], $x); $x = ereg_replace("%%KANA_SEI%%", $data['kana_sei'], $x); $x = ereg_replace("%%KANA_MEI%%", $data['kana_mei'], $x); $x = ereg_replace("%%SEX%%", $data['sex'] == '1' ? '男性' : '女性', $x); $x = ereg_replace("%%TEL1%%", $data['tel1'], $x); $x = ereg_replace("%%TEL2%%", $data['tel2'], $x); $x = ereg_replace("%%TEL3%%", $data['tel3'], $x); $x = ereg_replace("%%MAIL%%", $data['mail'], $x); $x = ereg_replace("%%TRY_DRESS%%", $try_dress, $x); $x = ereg_replace("%%HOPE_DATE%%", $hope_date, $x); //$x = ereg_replace("%%DATE1%%", $date1, $x); //$x = ereg_replace("%%DATE2%%", $date2, $x); //$x = ereg_replace("%%DATE3%%", $date3, $x); $x = ereg_replace("%%SALON%%", $GLOBALS['RESERVATION_SALON'][$data['salon']], $x); $x = ereg_replace("%%DECIDE_DATE%%", $decide_date, $x); $x = ereg_replace("%%COMMENTS%%", $data['comments'], $x); $msg .= $x; } mb_language("Japanese"); mb_internal_encoding("EUC-JP"); $return_mail = " -f " . ORDER_MAIL; mb_send_mail($data['mail'], $subject, $msg, "From:" . ORDER_MAIL, $return_mail); switch ($data['site']) { case '1' : $subject = '【Royal Kaila Resort】国内サロンへの来店予約'; break; case '2' : $subject = '【Royal Kaila Best】国内サロンへの来店予約'; break; case '3' : $subject = '【Royal Kaila Location】国内サロンへの来店予約'; break; case '4' : $subject = '【Royal Kaila Terrace】国内サロンへの来店予約'; break; case '5' : $subject = '【Premium Hawaii Beach Wedding】国内サロンへの来店予約'; break; default : break; } mb_send_mail(ORDER_MAIL, $subject, $msg, "From:" . $data['mail'], $return_mail); //mb_send_mail('08041376627@docomo.ne.jp', $subject, $msg, "From:" . 'info@exeo-japan.co.jp', $return_mail); //本多課長(エクシオからメール送信) mb_send_mail('takeshiyokohama8940@docomo.ne.jp', $subject, $msg, "From:" . 'info@exeo-japan.co.jp', $return_mail); //社長(エクシオからメール送信) mb_send_mail('suzukik@exeo-japan.jp', $subject, $msg, "From:" . 'info@exeo-japan.co.jp', $return_mail); //社長(エクシオからメール送信) } // --------------------------------------------- // 確認 // --------------------------------------------- function _confirm () { global $data, $time, $hope_time; $err_message = array(); $err_message = _check_form(); if (count($err_message) > 0) { require './html/form.html'; exit; } $hope_date = '未定'; if (!empty($data['hope_date'])) { $hope_date = date('Y年m月d日', strtotime($data['hope_date_ymd'])) . ' ' . $hope_time[$data['hope_time']]; } require './html/conf.html'; exit; } // --------------------------------------------- // フォーム // --------------------------------------------- function _form () { global $data, $time, $hope_time; $err_message = array(); $err_message = _check_calendar(); if (count($err_message) > 0) { require './html/calendar.html'; exit; } require './html/form.html'; exit; } // --------------------------------------------- // カレンダー // --------------------------------------------- function _calendar () { global $data, $time, $hope_time; $data['gallery'] = _get_gallery(); require './html/calendar.html'; exit; } // --------------------------------------------- // フォームデータ // --------------------------------------------- function _init_data ($input) { global $data; $data['mode'] = agv($input, 'mode', ''); $data['name_sei'] = agv($input, 'name_sei', ''); $data['name_mei'] = agv($input, 'name_mei', ''); $data['kana_sei'] = agv($input, 'kana_sei', ''); $data['kana_mei'] = agv($input, 'kana_mei', ''); $data['sex'] = agv($input, 'sex', 0); $data['mail'] = agv($input, 'mail', ''); $data['tel1'] = agv($input, 'tel1', ''); $data['tel2'] = agv($input, 'tel2', ''); $data['tel3'] = agv($input, 'tel3', ''); $data['try_dress'] = agv($input, 'try_dress', ''); $data['comments'] = agv($input, 'comments', ''); $data['privchk'] = agv($input, 'privchk', ''); $data['salon'] = agv($input, 'salon', 0); $data['date1'] = agv($input, 'date1', ''); $data['date2'] = agv($input, 'date2', ''); $data['date3'] = agv($input, 'date3', ''); $data['time1'] = agv($input, 'time1', ''); $data['time2'] = agv($input, 'time2', ''); $data['time3'] = agv($input, 'time3', ''); $data['site'] = agv($input, 'site', 0); $data['hope_date'] = agv($input, 'hope_date', 0); $data['hope_date_ymd'] = agv($input, 'hope_date_ymd', ''); $data['hope_time'] = agv($input, 'hope_time', 0); $data['salon'] = (empty($data['salon']) && isset($_GET['salon'])) ? $_GET['salon'] : $data['salon']; $data['site'] = isset($_GET['site']) ? $_GET['site'] : $data['site']; $data['cur_salon_id'] = agv($input, 'salon', 2); //$next_day = time() + 24 * 60 * 60; $next_day = time(); $data['cur_year'] = agv($input, 'cur_year', date('Y', $next_day)); $data['cur_month'] = agv($input, 'cur_month', date('m', $next_day)); $data['cur_day'] = agv($input, 'cur_day', date('d', $next_day)); $data['sdt'] = agv($input, 'sdt', ''); return $data; } // --------------------------------------------- // 入力チェック // --------------------------------------------- function _check_calendar () { global $data; $err_message = array(); // 希望サロン if (empty($data['salon'])) { $err_message['salon'] = '希望サロンを選択してください。'; } // 来店日時 if (empty($data['sdt'])) { $err_message['sdt'] = '来店日を正しく選択して下さい。'; } return $err_message; } // --------------------------------------------- // 入力チェック // --------------------------------------------- function _check_form () { global $data; $err_message = array(); // 希望サロン if (empty($data['salon'])) { $err_message['salon'] = '希望サロンを選択してください。'; } // 来店日時 if (empty($data['sdt'])) { $err_message['sdt'] = '来店日を正しく選択して下さい。'; } // 来店希望日時 //if (empty($data['date1']) || ($data['time1'] === 'n')) { // $err_message['date1'] = '第1希望日時を入力してください。'; //} //if (empty($data['date2']) || ($data['time2'] === 'n')) { // $err_message['date2'] = '第2希望日時を入力してください。'; //} //if (empty($data['date3']) || ($data['time3'] === 'n')) { // $err_message['date3'] = '第3希望日時を入力してください。'; //} // 撮影希望日時 if ($data['hope_date'] == 1) { if (empty($data['hope_date_ymd']) || ($data['hope_time'] == 0)) { $err_message['hope_date'] = '撮影希望日時を入力してください。'; } } // お名前 if (!$data['name_sei']) { $err_message['name_sei'] = 'お名前(姓)を入力して下さい。'; } if (!$data['name_mei']) { $err_message['name_mei'] = 'お名前(名)を入力して下さい。'; } // フリガナ if (!$data['kana_sei']) { $err_message['kana_sei'] = 'フリガナ(セイ)を入力して下さい。'; } if (!$data['kana_mei']) { $err_message['kana_mei'] = 'フリガナ(メイ)を入力して下さい。'; } $_kana_sei = mb_convert_encoding($data['kana_sei'], 'UTF-8', 'eucJP-win'); $_kana_mei = mb_convert_encoding($data['kana_mei'], 'UTF-8', 'eucJP-win'); $pattern = mb_convert_encoding("/[^ァ-ヶー]+/u", 'UTF-8', 'eucJP-win'); if (preg_match($pattern, $_kana_sei)) { $err_message['kana_sei'] = 'フリガナ(セイ)を全角カタカナで入力して下さい。'; } if (preg_match($pattern, $_kana_mei)) { $err_message['kana_mei'] = 'フリガナ(メイ)を全角カタカナで入力して下さい。'; } // メールアドレス if (!$data['mail']) { $err_message['mail'] = 'メールアドレスを入力して下さい。'; } else if (!preg_match('/^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$/', $data['mail'])) { $err_message['mail'] = 'メールアドレスを正しい形式で入力して下さい。'; } // 携帯電話番号 if (!$data['tel1'] || !$data['tel2'] || !$data['tel3']) { $err_message['tel'] = '携帯電話番号を入力して下さい。'; } else if (!preg_match("/^[0-9]{3}$/", $data['tel1']) || !preg_match("/^[0-9]{4}$/", $data['tel2']) || !preg_match("/^[0-9]{4}$/", $data['tel3'])) { $err_message['tel'] = '携帯電話番号を正しい形式で入力して下さい。'; } // ドレス無料試着 if (!$data['try_dress']) { $err_message['try_dress'] = 'ドレス無料試着を選択してください。'; } elseif ($data['try_dress'] == '1') { if (in_array($data['salon'], array('1', '7', '8'))) { $err_message['try_dress'] = 'ご来店希望サロンでは、ドレス試着を承ることができません。'; } } if (!$data['privchk']) { $err_message['privchk'] = '「来店予約に関する個人情報の取扱い」に同意してください。'; } return $err_message; } function _get_gallery() { global $db; $param = array(); $sql = 'SELECT * FROM local_reserves_gallery WHERE switch IS TRUE AND publish_date <= current_date ORDER BY publish_date DESC LIMIT 3; '; $gallery = $db->getAll($sql, $param); return $gallery; } function agv($array, $key, $default = NULL) { return isset($array[$key]) ? $array[$key] : $default; } ?>