get_exception();
}
}
/* 出力準備 */
$smarty = new SmartyEx();
$smarty->prepare();
/* マイプロフィール */
include('common/myprofile.inc');
/* Eventクラスインスタンス生成 */
if ($err_str === "") {
try {
$event = new Event($locomill->get_db4());
} catch (EventError $e) {
$err_str .= $e->get_exception();
}
}
/* Serviceクラスインスタンス生成 */
if ($err_str === "") {
try {
$service = new EventService($locomill->get_db4());
$temp = $service->get_data_array(true, true);
foreach ($temp AS $v) {
$service_array[$v['id']] = array('sort' => $v['sort'], 'id' => $v['id'], 'name_01' => $v['name_01'], 'category' => $v['category'], 'image_01' => $v['image_01']);
}
$sortkeys = array();
foreach ($service_array AS $k => $v) {
$sortkeys[$k] = $v['sort'];
}
array_multisort($sortkeys, $service_array);
unset($temp, $sortkeys);
} catch (EventServiceError $e) {
$err_str .= $e->get_exception();
}
}
/* ServiceCategoryクラスインスタンス生成 */
if ($err_str === "") {
try {
$service_category = new EventCategory($locomill->get_db4());
$temp = $service_category->get_data_array(true);
foreach ($temp AS $v) {
$service_category_array[$v['id']] = array('sort' => $v['sort'], 'name_01' => $v['name_01'], 'icon_color' => $v['icon_color']);
}
unset($temp);
} catch (EventCategoryError $e) {
$err_str .= $e->get_exception();
}
}
/* GoodTypeクラスインスタンス生成 */
if ($err_str === "") {
try {
$good_type = new GoodType($locomill->get_db3());
$good_type_array = $good_type->get_data_array(true);
} catch (GoodTypeError $e) {
$err_str .= $e->get_exception();
}
}
/* Areaクラスインスタンス生成 */
if ($err_str === "") {
try {
$area = new Area($locomill->get_db3());
} catch (AreaError $e) {
$err_str .= $e->get_exception();
}
}
/* Categoryクラスインスタンス生成 */
if ($err_str === "") {
try {
$category = new Category($locomill->get_db3());
} catch (CategoryError $e) {
$err_str .= $e->get_exception();
}
}
/* Request値の検証 */
if ($err_str === "") {
if (isset($_POST) === true && empty($_POST) === false) {
$rq = $_POST;
} elseif (isset($_GET) === true && empty($_GET) === false) {
$rq = $_GET;
}
}
/* イベントデータ取得 */
if ($err_str === "") {
try {
if ($event->check_id($rq['id'])) {
$event_id = $rq['id'];
} else {
throw new EventError('・正しい手続きでアクセスしていません。
');
}
$event_data = $event->get_data($event_id);
if ($preview != 1) {
// 表示判定
if ($event_data['enable'] != 1 || $event_data['rsv_int_03'] == 3 || $now <= $event_data['start_stamp'] || (0 < $event_data['end_stamp'] && $event_data['end_stamp'] <= $now)) {
$the_corner_id = 34;
$adver_param = array("terminal_type" => 1, "corner_id" => $the_corner_id);
$adver_b_type = array(1);
include('common/banners.inc');
header("HTTP/1.0 404 Not Found");
$smarty->display('parts/event/disabled.tpl');
exit;
}
}
$event_data = $event->adjust($event_data);
if (!empty($event_data['evt_start_01'])) {
$event_data['evt_start_01_c'] = date('c', strtotime(date('Y-m-d', $event_data['evt_start_01']) . ' ' . $event_data['evt_time_start_01']));
} else {
$event_data['evt_start_01_c'] = '';
}
if (!empty($event_data['evt_end_01'])) {
$event_data['evt_end_01_c'] = date('c', strtotime(date('Y-m-d', $event_data['evt_end_01']) . ' ' . ($event_data['evt_time_end_01'] == '00:00:00'? '23:59:59': $event_data['evt_time_end_01'])));
} else {
$event_data['evt_end_01_c'] = '';
}
$ssl_open_stamp = mktime(0, 0, 0, 9, 26, 2017); // SSLかけた日
$event_data['page_url'] = sprintf('%s://%s/event/home/?id=%d', ($event_data['start_stamp'] < $ssl_open_stamp? 'http': 'https'), LOCOMILL_DOMAIN_FQDN, $event_id);
} catch (EventError $e) {
ErrorRedirect(404);
}
}
/* コンテンツメニュー */
if ($err_str === "") {
$page_type = 'home';
include('common/eventmenu.inc');
}
/* クーポンデータ取得 */
if ($err_str === "") {
try {
$coupon = new Coupon($locomill->get_db4());
if ($preview == 1) {
$coupon_array = $coupon->get_data_array_pre(0, $event_id, 1);
} else {
$coupon_array = $coupon->get_data_array(true, true, 0, $event_id, 1);
}
foreach ($coupon_array AS $k => $v) {
$coupon_array[$k]['contents_01'] = htmlspecialchars_textarea($v['contents_01']);
}
} catch (CouponError $e) {
$err_str .= $e->get_exception();
}
}
/* EventNewsクラスインスタンス生成 */
if ($err_str === "") {
try {
$event_news = new EventNews($locomill->get_db4());
$wlist = array();
$wlist[] = sprintf('event_id = %d', $locomill->get_db3()->escape($event_id));
$wlist[] = 'enable = 1';
$wlist[] = sprintf('%d <= end_stamp', $now);
if ($preview != 1) {
$wlist[] = sprintf('start_stamp <= %d', $now);
}
$odlist = array();
$odlist[] = 'update_stamp DESC';
$odlist[] = 'enable DESC';
$odlist[] = 'id';
$temp = array();
$sql = sprintf('SELECT id FROM event_news_tbl WHERE %s ORDER BY %s',
implode(' AND ', $wlist), implode(', ', $odlist));
$result = $locomill->get_db3()->query($sql);
if ($result !== false) {
$event_news_num = $locomill->get_db3()->num($result);
if ($event_news_num > 0) {
$count = 1;
while ($row = $locomill->get_db3()->fetch_array($result)) {
$temp[] = $row;
$count++;
if (3 < $count)
break;
}
}
} else {
throw new EventNewsError("・データの参照に失敗しました。
" . mysqli_error($locomill->get_db3()->get_db_connect()));
}
if (!empty($temp)) {
foreach ($temp AS $k => $v) {
$v = $event_news->get_data($v['id']);
$temp2 = array();
$temp2['TITLE'] = htmlspecialchars($v['name_01']);
$temp2['COMMENT'] = htmlspecialchars(mb_strimwidth($v['comment_01'], 0, 100, '…'));
$temp2['TYPE'] = ($v['type'] == 1)? 'ニュース': 'レポート';
$temp2['IS_NEW'] = $temp2['IS_UPDATE'] = 0;
if ($now - $v['entry_stamp'] < (60 * 60 * 24)) {
$temp2['IS_NEW'] = 1;
} elseif ($now - $v['update_stamp'] < (60 * 60 * 24)) {
$temp2['IS_UPDATE'] = 1;
}
if (!empty($v['image_01']['up_name']) && file_exists(UPIMG_BASE_PATH . LOCOMILL_UPIMG_EVENT_NEWS_01_PATH . '/' . $v['image_01']['up_name'])) {
$temp2['IS_IMAGE'] = 1;
$temp2['IMAGE'] = '/img' . LOCOMILL_UPIMG_EVENT_NEWS_01_PATH . '/' . $v['image_01']['up_name'];
} else {
$temp2['IS_IMAGE'] = 0;
$temp2['IMAGE'] = '';
}
$event_news_array[$v['id']] = $temp2;
}
}
} catch (EventNewsError $e) {
$err_str .= $e->get_exception();
}
}
// 特集カウント
$count = 1;
/* Featureクラスインスタンス生成 */
if ($err_str === "") {
try {
$feature = new Feature($locomill->get_db3());
$wlist = array();
$wlist2 = array();
$wlist2[] = 'enable = 1';
$wlist2[] = sprintf('event_id = %d', $locomill->get_db3()->escape($event_id));
$wlist[] = sprintf('(event_id = %d OR id IN (SELECT document_id FROM feature_document_block_tbl WHERE %s))',
$locomill->get_db3()->escape($event_id), implode(' AND ', $wlist2));
$wlist[] = 'enable = 1';
$wlist[] = 'enable_pc = 1';
$wlist[] = sprintf("'%s' <= close_stamp", date('Y-m-d H:i:s', $now));
if ($preview != 1) {
$wlist[] = sprintf("open_stamp <= '%s'", date('Y-m-d H:i:s', $now));
}
$wlist2 = array();
$wlist2[] = 'enable = 1';
$wlist2[] = 'enable_pc = 1';
$wlist2[] = sprintf("'%s' <= close_stamp", date('Y-m-d H:i:s', $now));
if ($preview != 1) {
$wlist[] = sprintf("open_stamp <= '%s'", date('Y-m-d H:i:s', $now));
}
$wlist[] = sprintf('feature_id IN (SELECT id FROM feature_tbl WHERE %s)', implode(' AND ', $wlist2));
$odlist = array();
$odlist[] = 'public_date DESC';
$odlist[] = 'id';
$temp = array();
$sql = sprintf('SELECT id FROM feature_document_tbl WHERE %s ORDER BY %s',
implode(' AND ', $wlist), implode(', ', $odlist));
$result = $locomill->get_db3()->query($sql);
if ($result !== false) {
$feature_num = $locomill->get_db3()->num($result);
if ($feature_num > 0) {
while ($row = $locomill->get_db3()->fetch_array($result)) {
$temp[] = $row;
$count++;
if (3 < $count)
break;
}
}
} else {
throw new FeatureError("・データの参照に失敗しました。
" . mysqli_error($locomill->get_db3()->get_db_connect()));
}
if (!empty($temp)) {
foreach ($temp AS $k => $v) {
$v = $feature->get_document($v['id']);
$doc = $feature->document_smarty_format($v);
$fdata = $feature->get_data($v['feature_id']);
$fea = $feature->feature_smarty_format($fdata);
$temp2 = array();
$temp2['TYPE'] = '';
$temp2['LINK'] = sprintf('/feature/home.shtml?id=%d', $v['id']);
$temp2['TITLE'] = strip_tags($doc['title_01']);
$temp2['DATE'] = $doc['public_date'];
$temp2['DESCRIPTION'] = $doc['description'];
$temp2['IS_NEW'] = $temp2['IS_UPDATE'] = 0;
if ($now - strtotime($doc['public_date']) < (60 * 60 * 24)) {
$temp2['IS_NEW'] = 1;
}
$temp2['FEATURE_TITLE'] = strip_tags($fea['title_01']);
$temp2['IS_IMAGE'] = $doc['is_image_01'];
$temp2['IMAGE'] = $doc['image_01_src'];
$feature_array[] = $temp2;
}
}
unset($wlist, $wlist2, $odlist, $temp, $temp2, $doc, $fdata);
} catch (FeatureError $e) {
$err_str .= $e->get_exception();
}
}
/* Kuchikomiクラスインスタンス生成 */
if ($err_str === "") {
try {
$kuchikomi = new Kuchikomi($locomill->get_db3());
$sql = $kuchikomi->get_id_query(2, $event_id, ($preview == 1? 'pre': true), array('is_comment' => 1));
$result = $locomill->get_db3()->query($sql);
if ($result !== false) {
$kuchikomi_num = $locomill->get_db3()->num($result);
} else {
throw new KuchikomiError("・データの参照に失敗しました。
" . mysqli_error($locomill->get_db3()->get_db_connect()));
}
if (0 < $kuchikomi_num) {
$sql = $kuchikomi->get_id_query(2, $event_id, ($preview == 1? 'pre': true), array('is_comment' => 1, 'limit' => 3));
$result = $locomill->get_db3()->query($sql);
if ($result !== false) {
while ($row = $locomill->get_db3()->fetch_array($result)) {
$kuchikomi_array[$row['id']] = $kuchikomi->adjust($row['id'], $login_user_id);
}
} else {
throw new KuchikomiError("・データの参照に失敗しました。
" . mysqli_error($locomill->get_db3()->get_db_connect()));
}
}
$sql = $kuchikomi->get_id_query(2, $event_id, ($preview == 1? 'pre': true), array('img' => 1));
$result = $locomill->get_db3()->query($sql);
if ($result !== false) {
$kuchikomi_img_num = $locomill->get_db3()->num($result);
if ($kuchikomi_img_num > 0) {
$count = 1;
while ($row = $locomill->get_db3()->fetch_array($result)) {
$kuchikomi_img_array[$row['id']] = $kuchikomi->adjust($row['id'], $login_user_id);
$count++;
if (10 < $count)
break;
}
}
} else {
throw new KuchikomiError("・データの参照に失敗しました。
" . mysqli_error($locomill->get_db3()->get_db_connect()));
}
} catch (KuchikomiError $e) {
$err_str .= $e->get_exception();
}
}
/* 変数の準備 */
// ページタイプ
$smarty->assign("PAGE_TYPE", $page_type);
// イベントデータ
$smarty->assign("EVENT_ID", $event_id);
$smarty->assign("EVENT_DATA", $event_data);
// プレビュー
$smarty->assign("PREVIEW", $preview);
$smarty->assign("PV_MODE", $pv_mode);
$smarty->assign("PV_URL", $pv_url);
// サービス内容
$disp_array = array();
$temp_array = array_diff(array_unique(explode('_', $event_data['service_01_id'])), array(''));
if (!empty($temp_array)) {
foreach ($service_array AS $v) {
// サービスの有効性チェック追加
if (in_array($v['id'], $temp_array)) {
$disp_array[] = array("NAME" => $v['name_01'],
"COLOR" => $service_category_array[$v['category']]['icon_color'],
"IMG" => "/img" . LOCOMILL_UPIMG_EVENT_SERVICE_PATH . "/" . $v['image_01']['up_name']);
}
}
}
if (!empty($event_data) && $event_data['online_flg'] == 1) {
$disp_array[] = array('NAME' => 'オンライン開催', 'COLOR' => '', 'IMG' => '');
}
$smarty->assign_ex("SERVICE_01_ARRAY", $disp_array);
// クーポン情報
$smarty->assign_ex("COUPON", $coupon_array, "");
// イベントニュース
$smarty->assign_ex("NEWS_NUM", $event_news_num);
$smarty->assign_ex("NEWS_ARRAY", $event_news_array);
// 特集
$smarty->assign_ex("FEATURE_NUM", $feature_num);
$smarty->assign_ex("FEATURE_ARRAY", $feature_array);
// クチコミデータ
$smarty->assign_ex("KUCHIKOMI_NUM", $kuchikomi_num, "0");
$smarty->assign("KUCHIKOMI_ARRAY", $kuchikomi_array);
$smarty->assign("KUCHIKOMI_IMG_ARRAY", $kuchikomi_img_array);
$smarty->assign("KUCHIKOMI_IMG_NUM", $kuchikomi_img_num);
// ぐっとタイプ
$smarty->assign("GOOD_TYPE_ARRAY", escapeHTML($good_type_array));
// 閲覧履歴
$tmp_area = $tmp_category = array();
$recent_event_array = array();
if ($err_str === "") {
try {
if (empty($locomill->session)) {
// セッション生成
$locomill->session = new Session($locomill->get_db(), "");
$locomill->session->start();
$locomill->session->user_id = -1;
}
$recent_events = array();
$recent_event_ids = array();
$recent_event_ids[] = $event_data['id'];
if (!empty($locomill->session->sess_data['recent_events'])) {
$recent_events = $locomill->session->sess_data['recent_events'];
foreach ($recent_events AS $v) {
try {
$tmp = $event->get_data((int)$v);
if ($tmp['enable'] == 1 && $tmp['rsv_int_03'] != 3 && $tmp['start_stamp'] <= $now && $now <= $tmp['end_stamp']) {
if (!isset($tmp_area[$tmp['area_03_id']])) {
$tmp_area[$tmp['area_03_id']] = (!empty($tmp['area_03_id']))? $area->get_name('area_master_03_tbl', $tmp['area_03_id']): '';
}
if (!isset($tmp_category[$tmp['category_01_02_id']])) {
$tmp_category[$tmp['category_01_02_id']] = (!empty($tmp['category_01_02_id']))? $category->get_name(2, $tmp['category_01_02_id'], 3): '';
}
$tmp['area_03_name'] = $tmp_area[$tmp['area_03_id']];
$tmp['category_01_02_name'] = $tmp_category[$tmp['category_01_02_id']];
$upimg_path_01 = UPIMG_BASE_PATH . LOCOMILL_UPIMG_EVENT_01_PATH;
if (!empty($tmp['image_01']['up_name']) && file_exists($upimg_path_01 . '/' . $tmp['image_01']['up_name'])) {
$tmp['image_01_src'] = '/img' . LOCOMILL_UPIMG_EVENT_01_PATH . '/' . $tmp['image_01']['up_name'];
} else {
$tmp['image_01_src'] = '/common/img/e_img.jpg';
}
$recent_event_array[] = $tmp;
if ($event_data['id'] != $tmp['id'] && count($recent_event_ids) < 20) {
$recent_event_ids[] = $v;
}
unset($tmp);
}
} catch (EventError $e) {
continue;
} catch (AreaError $e) {
continue;
} catch (CategoryError $e) {
continue;
}
}
}
$locomill->session->sess_data['recent_events'] = $recent_event_ids;
$locomill->session->store_data();
unset($recent_events, $recent_event_ids);
} catch (LocomillError $e) {
$err_str .= $e->get_exception();
}
}
$smarty->assign("RECENT_EVENT_ARRAY", $recent_event_array);
// 同じジャンル・エリアのイベント
$recommend_array = array();
if ($err_str === "") {
try {
for ($i = 1; $i <= 2; $i++) {
$recommend_array[$i] = array();
if ($i == 2 && empty($event_data['area_03_id'])) {
continue; // オンラインのみは飛ばす
}
$wlist = array();
$wlist[] = sprintf('`id` != %d', $event_data['id']);
$wlist[] = '`enable` = 1';
$wlist[] = '`rsv_int_03` != 3';
$wlist[] = sprintf('(%d BETWEEN `start_stamp` AND `end_stamp`)', $now);
$wlist[] = sprintf('(%d BETWEEN `evt_start_01` AND `evt_end_01`)', $now); // 開催中のみ
if ($i == 1) {
$tmp = array();
for ($j = 1; $j <= 2; $j++) {
$tmp[] = sprintf('`category_%02d_02_id` = %d', $j, $event_data['category_01_02_id']);
}
$wlist[] = sprintf('(%s)', implode(' OR ', $tmp));
} elseif ($i == 2) {
$wlist[] = sprintf('`area_03_id` = %d', $event_data['area_03_id']);
}
$sql = sprintf('SELECT `id` FROM `event_tbl` WHERE %s ORDER BY rand() LIMIT 20', implode(' AND ', $wlist));
// echo $sql;
$result = $locomill->get_db7()->query($sql);
if ($result !== false) {
if (0 < $locomill->get_db7()->num($result)) {
while ($row = $locomill->get_db7()->fetch_array($result)) {
$recommend_array[$i][] = $row['id'];
}
}
} else {
throw new LocomillError('・データの参照に失敗しました。
' . mysqli_error($locomill->get_db7()->get_db_connect()));
}
}
foreach ($recommend_array AS $i => $list) {
foreach ($list AS $k => $v) {
try {
$tmp = $event->get_data((int)$v);
if (!isset($tmp_area[$tmp['area_03_id']])) {
$tmp_area[$tmp['area_03_id']] = (!empty($tmp['area_03_id']))? $area->get_name('area_master_03_tbl', $tmp['area_03_id']): '';
}
if (!isset($tmp_category[$tmp['category_01_02_id']])) {
$tmp_category[$tmp['category_01_02_id']] = (!empty($tmp['category_01_02_id']))? $category->get_name(2, $tmp['category_01_02_id'], 3): '';
}
$tmp['area_03_name'] = $tmp_area[$tmp['area_03_id']];
$tmp['category_01_02_name'] = $tmp_category[$tmp['category_01_02_id']];
$upimg_path_01 = UPIMG_BASE_PATH . LOCOMILL_UPIMG_EVENT_01_PATH;
if (!empty($tmp['image_01']['up_name']) && file_exists($upimg_path_01 . '/' . $tmp['image_01']['up_name'])) {
$tmp['image_01_src'] = '/img' . LOCOMILL_UPIMG_EVENT_01_PATH . '/' . $tmp['image_01']['up_name'];
} else {
$tmp['image_01_src'] = '/common/img/e_img.jpg';
}
$recommend_array[$i][$k] = $tmp;
unset($tmp);
} catch (EventError $e) {
continue;
} catch (AreaError $e) {
continue;
} catch (CategoryError $e) {
continue;
}
}
}
} catch (LocomillError $e) {
$err_str .= $e->get_exception();
}
}
$smarty->assign("RECOMMEND_ARRAY", $recommend_array);
// イマココ
$imakoko = getTopicsPath('event');
if ($err_str === "") {
$imakoko[] = array(sprintf('/search_result/?type=event&C1=%d', $event_data['category_01_01_id']), $event_data['category_01_01_name']);
$imakoko[] = array(sprintf('/search_result/?type=event&C2=%d', $event_data['category_01_02_id']), $event_data['category_01_02_name']);
$imakoko[] = array(sprintf('/event/home/?id=%d', $event_id), $event_data['name_01']);
}
$smarty->assign("IMAKOKO_ARRAY", $imakoko);
// 最新情報
include('common/whatsnew.inc');
/* AccessDailyクラスインスタンス生成 */
if ($err_str === "" && $preview != 1) {
try {
$access = new AccessDaily($locomill->get_db());
$params = array("corner_type" => 2,
"terminal" => 1,
"corner_id" => $event_data['id'],
"page" => $_SERVER['PHP_SELF'],
"title" => "基本情報:" . $event_data['name_01'],
"refer_url" => (isset($_SERVER['HTTP_REFERER'])? $_SERVER['HTTP_REFERER']: ''),
"refer_name" => "",
"keyword" => "",
"file_name" => $_SERVER['REQUEST_URI'],
"member_data" => (isset($locomill->session->sess_data['member_data'])? $locomill->session->sess_data['member_data']: array()));
$access->do_logging($params);
} catch (AccessDailyError $e) {
$access->output_error($e->get_exception());
}
}
/* 広告系 */
$the_corner_id = 34;
$adver_param = array("terminal_type" => 1,
"corner_id" => $the_corner_id,
"event_cat_02_id" => $event_data['category_01_02_id']);
$adver_b_type = ($locomill->get_display_mode() == 'sp')? array(): array(1, 2, 7);
include('common/banners.inc');
// エラー文字列
$smarty->assign("ERR_STR", $err_str);
if (!empty($err_str) || $preview == 1) {
header("HTTP/1.0 404 Not Found");
}
/* 出 力 */
$smarty->display('event/home/index.tpl');