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');